KnockKnock 프로젝트가 끝나고 고도화를 시키기 위해 작업 중인 CI/CD에 대해 기록하려 합니다.
엘리스 3차 팀프로젝트에서 CI/CD를 적용하지 못했습니다. 5주라는 짧은 시간동안 구축하기 어려웠기 때문입니다. 프로젝트 중 항상 수동으로 배포하는 과정에 번거로움을 느껴 CI/CD 학습의 필요성을 느꼈습니다. 프로젝트의 일정이 끝나고 백엔드 팀원들과 CI/CD 환경을 구축해보기로 했습니다.
CI/CD 환경을 구축하도록 도와주는 도구들은 여러 가지가 있는데, 그중 대표적으로 Jenkins, github action, gitlab CI/CD 등이 있습니다. KnockKnock에서는 Jenkins를 사용하기로 결정했는데, 시중에 배포되는 여러 도구 중 Jenkins가 많은 정보와 관심도가 있는 도구이며 학습에 용이한 레퍼런스가 많은 것이 처음 적용해 보는 입장으로서 좋다고 판단했습니다. 또한 비용적인 부분에서 무료로 이용할 수 있다는 장점이 있었습니다.
AWS EC2 인스턴스를 우분투 기반으로 생성해 주었습니다. 그 후, 도커를 적용하여 컨테이너를 띄웠습니다. 도커를 사용하기로 한 이유는 복잡한 환경설정 없이 Jenkins를 설치하고 서버에 띄울 수 있기 때문입니다. 학습한 내용에 기반하면, 만약 도커를 사용하지 않고 직접 설치했을 시 각기 다른 환경마다 실행이 되도록 정말 많은 환경설정을 해주어야 합니다.
인스턴스에 접속해서 우분투 패키지 관리 툴 명령어인 apt update를 통해 레퍼지토리 인덱스 갱신을 통한 업데이트를 해주었습니다.
Jenkins는 Java를 기반으로 동작하는 프로그램이기 때문에 자바를 설치해 주기 위해서 java-version이라는 명령어를 통해 확인해 주었습니다. 나중에 알게된 사실이지만, 도커를 설정하면서 jenkins를 설정하면 도커 패키지 안에 포함되어 있기 때문에 따로 해주지 않아도 되는 것을 배웠습니다.
다시 한번, 레포지토리를 셋업하기 위해 명령어를 통해 우분투의 apt 패키지의 인덱스를 최신화하고, HTTPS를 통해 패키지 설치가 가능하도록 설정한다.
도커 공식문서에 나와있는 설명을 따라 GPC키를 추가하고 도커 엔진을 다운로드해주면, Hello from Docker!라는 문구와 함께 성공적으로 도커가 설치된 것을 확인할 수 있습니다.
도커 설치 완료 Jenkins 이미지 컨테이너 생성위에서 언급한 것과 같이, $ docker pull jenkins/jenkins:lts 명령어를 통해 젠킨스 이미지를 다운로드하면 그 안에 java 또한 같이 다운로드 됩니다. 마지막으로 젠킨스 컨테이너를 띄우기 위해서 옵션을 작성해주면 설치는 마무리 됩니다.
Jenkins 서버 첫 화면도커에 젠킨스 컨테이너가 EC2 인스턴스에 실행된다면, EC2 public IP를 통해 8080포트로 접속했을 시 위와 같은 접속 화면이 나타납니다.
Admin password 확인하기$ sudo docker logs jenkins 명령어를 통해 initial admin password를 확인하고, Administrator password 부분에 입력해 주면 본격적으로 Jenkins를 설정할 수 있는 단계로 넘어 갈 수 있습니다.