목록DevOps/CICD (14)
Dazzling 개발 노트
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bnqXFh/btsCwPBl4ST/fLRwagDcGdk4JQThnZlOp0/img.png)
지난 게시글에서는 간단한 pipeline을 작성해 Jenkins와 GitHub를 연결해 보았다. Jenkins - GitHub - Docker 연동을 위해 Jenkins Pipeline Script를 작성해보도록 하겠다. 이 Script를 통해 Jenkins에서 Docker(WAS)로 배포가 진행된다. 일단 지난 번에 설정한 Pipeline을 Jenkins 서버에서가 아닌 프로젝트 내 파일로 관리하도록 Jenkins 프로젝트의 설정을 변경한다. Jenkins 사이트 > 프로젝트 > 구성 > Pipeline에서 다음과 같이 설정한다. - Definition을 Pipeline script from SCM으로 변경한다. - SCM을 Git으로 지정하고 Repository URL을 입력한다. - Credenti..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/8S976/btsCx9MFRfZ/dwGgmdDospluyTVLM3dmFk/img.png)
Jenkins - GitHub - Docker 연동을 위해 Jenkins 프로젝트를 생성한다. Jenkins 프로젝트 생성 및 설정하기 새로운 item을 클릭하여 다음과 같은 페이지로 이동, 프로젝트 이름을 작성 후 pipeline을 선택, OK를 클릭한다. GitHub project 옵션 선택 GitHub project를 체크하고 repository url을 입력한다. 이 옵션을 통해 Jenkins와 GitHub 프로젝트가 연동된다. GitHub hook trigger for GITScm polling 옵션 선택 github hook trigger for GITScm polling을 체크한다. 이 옵션을 통해 GitHub에서 push 이벤트가 발생되면 Webhook을 날려 Jenkins가 받아 요청을 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/booHFj/btsCyKyVS6x/zpZDfxRTu2uJVS1DQHTChK/img.png)
Jenkins - GitHub - Docker 연동을 위해 필요한 AccessKey를 생성하고, Jenkins Credential에 등록한다. 총 4개의 AccessKey, 혹은 token을 발급하여 Jenkins Credential에 등록했다. 1. GitHub Access Token 2. Docker Access Token 3. Slack Access Token 4. ec2-ssh 시작하기 전에 먼저 강조하자면, 모든 토큰은 생성 후 다시 볼 수 없기 때문에 발급된 화면에서 바로 메모장이나 노션에 잘 저장하도록 한다. 1. GitHub Access Token 발급하기 GitHub 접속 후 프로필 아이콘 클릭 -> Settings > Developer settings > Personal access t..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/15BUA/btsCydaxp10/JHmAnKsbSvFpxA3y03vG4k/img.png)
Jenkins - GitHub - Docker 연동을 위해 필요한 플러그인을 설치한다. 사용된 플러그인은 다음과 같다. - Docker : docer 사용을 위해 설치 - Docker Pipeline : docker 사용을 위해 설치 - GitHub plugin : GitHub 사용을 위해 설치 - Generic Webhook Trigger Plugin (선택) : GitHub에서 특정 branch에서 push가 일어나는 경우에만 배포되도록 설정하기 위해 설치 - SSH Agent Plugin (선택) : CI/CD 중에 ssh 접속을 위해 설치 - Slack Notification Plugin (선택) : Slack으로 알림을 받기 위해 설치 선택을 제외한 나머지 플러그인은 최소한으로 반드시 설치해야 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Vx14w/btsCy7nkuS6/3KQ7ONg3muv3GNoJe9JItk/img.png)
CI/CD 구현하는 과정을 직접 해보며 정리했다. 각 과정마다 게시글을 나누어 작성했으니 만약 이해가 가지 않을땐 앞, 뒤 게시글을 참고하기 바란다. CI/CD를 구현하는 도구는 다양하지만, 필자는 Jenkins와 GitHub, Docker를 사용했다. Jenkins - GitHub - Docker(WAS-SpringBoot) 여기서 Jenkins는 서버에 바로 배포하고 WAS는 docker를 통해 컨테이너로 배포한다. 사용한 서비스와 기술은 다음과 같다. AWS Ec2 (2개) Jenkins GitHub Docker Slack SpringBoot Gradle Java 인스턴스 생성하기 AWS에 접속하여 로그인한다. EC2 > 인스턴스 > 인스턴스 시작 인스턴스의 이름 입력, OS 선택, 인스턴스 유형 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/mwlMb/btsCzKZGZXD/oUPZ1KNbe6V7zN9Bi3qgQK/img.png)
CI/CD? CI/CD는 Continuous Integration/ Continuous Delivery(Deployment)의 약자이다. 소프트웨어의 변경 사항이 지속적으로 통합되고 동시에 배포함으로써 개발 주기를 단축하고 서비스의 품질을 향상시킨다. CI/CD는 크게 3단계로 나누어 진다. - 지속적인 통합 ( Continuous Integration ) - 지속적인 전달 ( Continuous Delivery ) - 지속적인 배포 ( Continuous Deployment ) Continuous Integration 지속적으로 코드의 통합을 진행하면서 코드의 품질을 유지한다. 이 과정에서 이루어지는 주된 작업은 빌드, 테스트, 병합이다. 빌드, 테스트, 병합을 자동화된 프로세스로 최대한 자주 통합한다..