CICD 연습 과정
AWS 에서 프리티어 EC2 인스턴스 시작
EC2 접속 및 swap 메모리 설정
https://engineerinsight.tistory.com/276
[Linux] 간단하게 복사 붙여넣기로 Ubuntu EC2에 Swap 메모리 설정하기
💋 인트로 안녕하세요. 우아한테크코스 5기 깃짱이라고 합니다. AWS에서 프리 티어로 EC2를 사용하기 시작했는데, 메모리가 모자라기 시작했습니다. 메모리를 늘리고 싶지만, 돈은 쓰기 싫다면
engineerinsight.tistory.com
AWS 에서 프리티어로 EC2를 사용하면 램이 1GB밖에 되지 않아 메모리가 부족한 현상 발생
swap 메모리를 설정하여 디스크 용량을 이용해 부족한 메모리를 대체하는 방법을 사용하면
과금 없이 무료로 프리티어를 이용하는 사람에게 도움이 된다.
-> 메모리 용량 확인
free -h
-> Swap 메모리 설정 할 수 있을지, 디스크 용량 확인.
df - h
-> 스왑 메모리를 설정하기 전에, 스왑 파티션 또는 스왑 파일을 생성.
sudo fallocate -l 4G /swapfile
-> swapfile 의 권한 변경
sudo chmod 600 /swapfile
-> 스왑 파일을 생성합니다.
sudo mkswap /swapfile
-> 스왑 메모리 활성화
sudo swapon /swapfile
EC2 인스턴스 재부팅시에도 동일하게 스왑 메모리 할당하도록 정하기
sudo vi /etc/fstab
다음과 같이 맨밑줄 추가하고 :q
Ubuntu에 Docker 설치
-> 우분투 시스템 패키지 업데이트
sudo apt-get update
-> 필요한 패키지 설치
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
-> Docker의 공식 GPG키 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
-> Docker 의 공식 apt 저장소를 추가
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
-> 시스템 패키지 업데이트
sudo apt-get update
-> Docker 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io
-> Docker 실행상태 확인
sudo systemctl status docker
-> 도커 실행
sudo docker run hello-world
EC2에 jenkins Docker container 구축
sudo docker run -d --name jenkins -p 8080:8080 jenkins/jenkins
-> jenkins 비밀번호 확인
sudo docker exec -it jenkins bash -c "cat /var/jenkins_home/secrets/initialAdminPassword"
https://seongwon.dev/DevOps/20220717-CICD%EA%B5%AC%EC%B6%95%EA%B8%B02/
[DevOps] Jenkins를 통한 CI/CD 구축기 2편 (Backend CI/CD 구축)
🔗 연관 게시글 CI/CD란? [DevOps] Jenkins를 통한 CI/CD 구축기 1편 (Jenkins 설치) [DevOps] Jenkins를 통한 CI/CD 구축기 2편 (Backend CI/CD 구축) [DevOps] Jenkins를 통한 CI/CD 구축기 3편 (Frontend CI/CD 구축) [DevOps] Jenkins
seongwon.dev
CI 구축
jenkins 에서 item 생성 및 pipeline을 구축
Freestyle VS Pipeline
Freestyle
- 장점
- 웹 기반의 GUI 를 통해 여러 플러그인을 쉽게 사용 할 수 있다.
- 단점
- CI 파이프라인에 변경 사항을 만들기 위해서는 젠킨스에 로그인해 각각의 프리스타일 JOB 의 설정을 변경해야만 한다.
- CI/CD 과정을 콘솔을 통해서만 확인 할 수 있다.
- 각각의 과정들을 한번에 보기 어렵다.
Pipeline
- 장점
- 파이프라인은 코드로 프로젝트 설정을 할 수 있어 프리스타일과 다르게 젠킨스 웹에 직접 접근하지 않아도 설정 변경이 가능하다. (웹을 통한 설정도 가능하다.)
- CI/CD 파이프 라인 설정을 하나의 스크립트 파일(Jenkinsfile)로 프로그래밍을 통해 할 수 있다.
- Freestyle 과 다르게 하나의 스크립트 파일(Jenkinsfile)을 통해 흐름 제어를 할 수 있다.
- 일반 코드처럼 버전 관리가 가능하게 된다.
- 아래와 같이 GUI 를 통해 현재 어떤 과정을 진행중이고 평균적으로 얼마만큼의 시간이 걸렸는지 통계와 피드백을 준다.
- 단점
- 프리스타일과 다르게 스크립트를 짜야하는 번거로움이 있다. 즉, 파이프라인 구축을 위해서는 스크립트 문법을 학습하여야 한다.
Jenkins 관리 -> tool -> gradle 설정
item 설정 -> pipeline
pipeline {
agent any
tools {
gradle 'gradle'
}
stages {
stage('Git Clone') {
steps {
git branch: 'main', url: 'https://github.com/GEISHAz/test.git'
}
}
stage('BE-Build') {
steps {
dir("./testserver") {
sh "./gradlew clean build"
}
}
}
}
}
빌드결과
CD 구축
pipeline {
agent any
tools {
gradle 'gradle'
}
stages {
stage('Git Clone') {
steps {
git branch: 'main', url: 'https://github.com/GEISHAz/test.git'
}
}
stage('BE-Build') {
steps {
dir("./testserver") {
sh "./gradlew clean build"
}
}
}
stage('Deploy') {
steps {
sshagent(credentials: ['aws_key']) {
sh '''
ssh -o StrictHostKeyChecking=no ubuntu@172.31.34.159 uptime
scp /var/jenkins_home/workspace/minhotest/testserver/build/libs/testserver-0.0.1-SNAPSHOT.jar ubuntu@172.31.34.159:/home/ubuntu/testserver
ssh -t ubuntu@172.31.34.159 ./deploy.sh
'''
}
}
}
}
}
cd를 구축하기 앞서 deploy.sh 파일을 미리 생성해 두었다.
credentials 에서 EC2 key 를 등록
EC2에서 배포하는 방법이었다.