CI 지속적인 통합(Continuous Integration) /CD(Continuous Delivery)
빌드/테스트
자동화 과정. CI 는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration) 을 의미함.
애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합 되기 때문에, 여러 개발자가 동시에 애플리케이션 개발 코드에 작업을 할 경우 충돌할 수 있는 문제 해결 가능.
CD 지속적인 배포 (Continous Delivery)
CI CD종류 :
- Jenkins
- - 무료이고, 사용자 층이 많아 Reference 가 많음
- 설치 및 사용이 간단
- 지원하는 플러그 인이 많음
- JAVA 기반
- Jenkins 용 EC2를 따로 띄워야하는 단점이 있음.
- CircleCi
- 일정 한도내에서 무료 사용가능 이메일로 알림 전송,
- 유료인 경우 한달에 15달러
- git 에 push를 하면 자동으로 테스트를 한 검사 결과를 메일 알림으로 보내줌. 배포까지 가능
- TravisCi
- 무료 버전과 유료 버전이 있음
- gitHub와 연동하여 CI가 자동 동작하고 push가 아닌 PR에도 반응하도록 설계가 되어있음
- 간결하고 직관 적인 웹 인터페이스를 제공하는 인터넷 기반의 CI 서비스
- TeamCity
- DevOps 파이프 라인을 세부적으로 시각화 해줌.
- 테스트 기록을 유지해주고, 불안정한 테스트의 경우 신뢰도 낮음으로 표시
- 팀원간 협업을 하는데 매우 용이
- IDE(JetBrains)에 통합하면, 브랜치를 따로 생성하거나 코드를 커밋할 필요 없이 빌드, 확인, 자동화 테스트 까지 수행
- Github Actions
- github 리포지토리에서 직접 워크플로를 만들 수 있음. CI/CD 를 한곳에서 관리가능,
- 다른 CI/CD 에 비해 진입장벽이 낮음. → github을 사용한다는 전제
우선 jenkins를 설치함에 있어서 2가지의 방법이 있었다.
로컬에 jenkins를 설치하는 것
aws - ec2 에 jenkins 를 설치하는 것
둘 중 하나를 고민하다가, 결국 2번째 방식으로 하기로 했다.
그 이유는 프로젝트를 함에 있어서 언젠가 aws를 사용해야 했고, 인프라를 구축함에 있어 최대한 많은 경험 및 공부를 해보고자 EC2와 도커를 활용하여 jenkins를 설치하기로 했다!!
사실 이거를 하면서 정말 많은 삽질을 했기 때문에 따로 적어두려고 한다.
→ 바로 설치도 해보고, 도커를 사용하기도 함.
내가 ec2 에서 사용한 os는 우분투이다.
관련 레퍼런스가 매우 많았기 때문!
그럼 이제 해보자.
설치는 jenkins 공식 문서를 참고 해서 진행했다.
젠킨스를 설치하기에 앞서 java
를 설치해야 했다.
나는 jdk11 을 설치했는데, 후에 소나큐브를 사용하려면 jdk-11
이 필요하기 때문이다.
참고 : https://docs.sonarqube.org/latest/requirements/requirements/ → 소나큐브 설치시 요구 사항
JDK 설치
sudo apt update
$ sudo apt install openjdk-11-jre
$ java -version
openjdk version "11.0.12" 2021-07-20
OpenJDK Runtime Environment (build 11.0.12+7-post-Debian-2)
OpenJDK 64-Bit Server VM (build 11.0.12+7-post-Debian-2, mixed mode, sharing)
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee \
/usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update
sudo apt-get install jenkins
이후 ec2 보안그룹에 8080 포트를 열어 주고 접속를 해보자.
웹 브라우저를 통해 Ip주소:8080
에 접속을 하자
초기 비밀 번호를 입력해야한다.
초기 비밀 번호는 다음 명령어로 확인 할 수 있다.
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
비밀 번호를 입력하자
그후 install suggested plugins 를 선택해 플러그인을 설치한다.
이후 회원 가입 및 로그인을 완료하면 다음과 같이 젠킨스 창을 확인 할 수 있다.
sudo apt-get update
sudo apt-get -y upgrade
sudo apt-get install docker-ce docker-ce-cli [containerd.io](http://containerd.io/)
sudo docker run hello-world
를 통해 Docker CE가 정상적으로 설치되어 있는지 확인한다. sudo
없이 docker 명령어를 사용하라면, ‘docker’ 그룹에 사용자를 추가 해야만 한다.
sudo usermod -aG docker ubuntu
를 통해 ubuntu 사용자를 추가한다.
ec2 로그아웃을 진행하고, SSH 재접속을 한다.
docker run -d -p 8080:8080 -v /home/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --name jenkins -u root jenkins/jenkins
를 통해 젠킨스 최신 이미지를 설치한다.
이후 ec2 보안그룹에 8080 포트를 열어 주고 접속를 해보자.
웹 브라우저를 통해 Ip주소:8080
에 접속을 하자
초기 비밀 번호를 입력해야한다.
도커로 jenkins를 설치한 경우 docker logs jenkins
를 입력하면 비밀번호가 나온다.
비밀 번호를 입력하자
그후 회원 가입 창이 나오는데 amdin으로 생성해서 진입하였다. → 회원가입은 자유롭게
그후 install suggested plugins 를 선택해 플러그인을 설치한다.
이후 회원 가입 및 로그인을 완료하면 다음과 같이 젠킨스 창을 확인 할 수 있다.