Jenkins
Last updated
Was this helpful?
Last updated
Was this helpful?
해당 정보들을 단계별로 진행하시면 CI / CD 구성이 가능합니다.
애플리케이션 개발 단계를 자동화하여 짧은 주기로 서비스를 제공하는 방식입니다.
본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포입니다.
새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제을 해결하기 위한 방법입니다.
특히, CI/CD는 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공합니다. 이러한 구축 사례를 일반적으로 "CI/CD 파이프라인"이라 부르며 DevOps를 통해 지원됩니다.
기호에 맞는 분산 버전 관리 툴을 선정합니다. (본 구성도는 github 기준)
Github 내 변경이력을 감지하여 Jenkins로 WebHook을 날리게 됩니다.
Jenkins에서 다음의 과정을 수행합니다.
각종 빌드 툴(maven, gradle etc)에 적합한 build script 수행
AWS S3와 같은 리소스 저장소에 빌드 결과물 업로드
Elastic Beanstalk → Deploy
Eleastic Beanstalk는 S3에 업로드된 빌드 결과물을 가지고 각 서버로 배포를 진행하게 됩니다.
환경 생성을 수행합니다.
웹 어플리케이션을 구현하기 위해 [웹 서버 환경]을 선택합니다.
기본 구성을 작성합니다.
환경 이름을 작성합니다.
도메인 명은 환경명을 디폴트로 구성됩니다.
플랫폼은 Tomcat을 선택하였습니다.
[Jenkins]를 구성하기 전에 애플리케이션 코드에는 샘플 애플리케이션을 선택하여 [Eleastic Beanstalk]의 정상 구동을 확인합니다.
서비스 환경에 맞는 추가 옵션 구성을 통해 몇 가지를 더 설정합니다.
EC2를 활용하여 [Jenkins]를 구성합니다.
[Jenkins]에서 활용해야하는 다음 2가지 IAM Role 정책을 선택하고 생성합니다.
Elastic Beanstalk admin access
S3 access
인스턴스 추가를 수행합니다.
각 개발환경에 맞는 리눅스를 선택합니다.
버전 및 벤더 별로 명령어는 상의하기 때문에 예제를 참고하여 해당 환경에 맞는 스크립트를 작성합니다. (예제 : Ubuntu Server 18.04)
테스트 가능한 최소 인스턴스 유형을 선택합니다. (t2.small)
인스턴스의 보안그룹을 생성합니다.
22 포트 : 내부에서만 접속 가능하도록 설정
80 포트 : Git Webhook을 받아야 하기 때문에 위치 무관으로 설정
생성해둔 IAM Role 정책을 연결합니다.
인스턴스에 접속하여 다음의 스크립트를 수행 및 확인합니다.
특별한 설정은 하실 필요가 없습니다. 구글링하여 기본 생성을 진행합니다.
Freestyle, Pipeline 방식을 선택하여 구성합니다. (본 예제는 Pipeline 방식)
Blue Ocean Plugin 설치 (Pipeline 시각화 용)
Blue Ocean 접근
알맞는 저장소를 선택합니다.
해당 저장소에 Access Token을 설정합니다.
Webhook 등록을 진행합니다.
새 파이프 라인을 스텝별로 구성하고, 아래 그림과 shell script를 참고하여 각 단계별로 Shell Script가 수행되도록 작성을 진행합니다.
지금까지 Jenkins, SpringBoot, S3, ElasitcBeanstalk을 활용항 CI/CD 구성을 알아보았습니다.
처음부터 접근하면 어려울 수 있으나, 차근차근 접근하여 좋은 웹 서비스를 만드는데 도움이 되길 바랍니다.