1️⃣ 코드 변경사항을 주기적으로 빈번하게 머지해야 한다.
✅ 이런 문제를 방지하고자 아주 빈번하게 머지를 수행함으로써 작은 단위에서 머지가 일어나도록 하고 충돌 발생 시 문제를 빠르게 해결 가능
2️⃣ 통합을 위한 단계(빌드, 테스트, 머지)의 자동화
✅ 메인 리포지토리에 개발자들이 주기적으로 머지를 함
✅ 머지가 되었으면 자동으로 CI 스크립트를 통해 추가된 코드와, 빌드, 유닛테스트, 인티그레이션 테스트가 실행이 됨
✅ 이 과정이 모두 문제가 없으면 통과되어 배포에 반영이 가능, 새로 추가된 코드에 문제가 있거나 빌드, 테스트에 문제가 있으면 문제 일으킨 개발자에게 자동으로 알려주고 배포에 반영 X
*빌드: 소스 코드 파일을 컴퓨터에서 실행할 수 있는 소프트웨어 산출물로 만드는 과정
*배포: 빌드의 결과물을 사용자가 접근할 수 있는 환경에 배치하는 것
3️⃣ CI원칙을 따를 때 장점
✅ 이 전체 과정이 유기적으로 연결되어 있기 때문에 CI/CD 프로세스라고 일컬음
✅ 이런 모든 과정들을 어떻게 스크립트를 쓰고, 자동화와 테스트에 얼마나 자신감이 있냐에 따라서 얼마만큼 자동화를 시키는지에 따라 과정에 조금씩 차이가 있음
✅ CI/CD를 구현하는 툴 중 하나가 Jenkins
출처: 드림코딩 유튜브
모든 언어의 조합과 소스 코드 레포지토리에 대한 지속적인 통합(Continuous integration, CI)과 지속적 배포(continuous delivery, CD) 환경을 구축하기 위한 도구다. 빌드, 테스트, 배포 프로세스를 자동화하여 소프트웨어 품질과 개발 생산성을 높일 수 있다.
웹 기반의 콘솔로 다양한 인증 기반과 결합이 가능하며 권한 관리 기능을 통해 안전한 빌드/배포 환경을 구축할 수 있다. 수많은 플러그인을 사용하여 자동화 할 수 있어 반복되는 작업을 줄일 수 있다. 빌드/배포의 결과에 대해 통지 받을 수 있는 설정이 간편하고 다양한 채널을 통해 빠르게 피드백을 받을 수 있다
출처: https://narup.tistory.com/179
1️⃣ 도커의 개념
2️⃣ 동작 순서
컨테이너를 만들고 배포하고 구동한다
도커파일 → 이미지 → 구동
1) 도커파일 생성
→ 도커파일:컨테이너를 어떻게 만들어야 하는지에 대한 설명서
1.Copy files: 어플리케이션을 구동하기 위해 필요한 파일
2.install dependencies: 어떤 프레임워크나 라이브러리가 필요한지
3.Set environment variables:환경변수 설정
4.Run setup scripts:어떻게 구동해야 하는지 스크립트 포함
도커파일
2) 작성한 도커파일을 통한 이미지 생성
어플리케이션 실행하는데 필요한 코드, 런타임 환경, 시스템툴, 시스템 라이브러리 등 모든 세팅이 포함되어 있음, 즉 실행환경을 캡처해서 이미지로 만들어 놓는 것(불변의 상태)
3) 컨테이너 생성: 잘 캡처해둔 어플리케이션 이미지를 고립된 환경에서 개별적으로 실행될 수 있도록 하는 환경, 컨테이너 안에서 어플리케이션이 동작한다고 볼 수 있음
컨테이너를 배포하는 방법: 어떻게 이미지를 공유할까?
깃허브에 우리가 프로젝트를 푸시하고 이를 다른 환경에서 클론해서 사용하는 것처럼
로컬환경에서 Container Registry 공간에 이미지를 푸시하고 필요한 서버나 다른 PC에서 만들어 둔 이미지를 가지고 와서 Docker의 컨테이너 엔진에서 다시 구동하기
출처: 드림코딩 유튜브
도커 데스크탑에 젠킨스를 구동하는 컨테이너, 내가 배포한 프로젝트를 위한 컨테이너가 만들어 짐
내 깃 레포지토리와 연동하여 아이템을 생성
빌드를 어떤 방식으로 할지 선택 가능
테스트용 프로젝트와 Vue.js 기본 프로젝트 배포가 정상적으로 이루어짐
일정 시간마다 빌드를 지속하게 설정할 수 있고, 깃랩에 Push할 때마다 빌드가 이루어지도록 설정할 수도 있다. Push하면 빌드되게 하는 것은 시도해보지 못 했다.
설정한 포트번호로 접속하면 vue.js가 실행됨.
Npm run serve 를 하지 않았는데 프로젝트가 자동으로 열린다.
배포라는 것의 의미가 뭔지 어렴풋이 알 수 있었다.
로컬환경에서 톰캣 서버에서 동작하는 것을 확인하는 것과는 많이 다른 것 같다.
최종 관통 때 Vue-Spring 프로젝트를 통합하지도 못 했는데, 두 파일을 통합하고 배포해보기 위해 더 공부가 필요할 것 같다.
또한 CLI를 이용해서 도커와 젠킨스를 설치하는 데만 매우 오래 걸렸다. 명령어가 잘 안 먹거나 환경설정이 다르거나 해서 문제가 생겼다. CLI가 익숙하지 않기도 하고 리눅스, OS 등에 대해 잘 모르다 보니 더욱 어렵게 느껴져서 공부가 필요한 것 같다.