CI - Continuous Integration (지속적 통합)
sw는 여러 팀에 의해 개발되는데 버전 컨트롤시스템(GIT) 등 출시하기 위해 통합한다.
이 과정에서 각 구성원의 코드를 받아 합치기 전에, 검증을 하지 않으면 문제가 발생할 수 있다.
(Conflict, 코드의 결함 등)
수시로, 지속적으로 테스트 작업을 해야하는데, 자동화 할 필요가 있다. (자동화 지원 다양한 도구와 서비스)
CD - Continuous Deployment (지속적 배포)
sw 코딩한 결과를 최종 사용자에게 넘겨주는, 실행가능한 단계로 올린다. (AppStore에 올리거나 서버 배포 등)
코딩을 마칠때마다 지속적으로 수행하는 것.(CI 이후 CD 실행)
CI/CD 툴 (보통 함께 구축되어 묶여서 언급된다. 자동화를 위한 개념)
****- 보통 Linux에서 많이 사용되는데, 해당 컴퓨터나 서버의 주소로 크롬등의 브라우저로 접속할 수 있는 페이지가 하나 열린다. (CI/CD 설정을 위한 설정 페이지)
ex) SpringBoot로 코딩한 프로젝트를 서버에 배포를 위해 Jenkins에 새 자동화작업, 매크로를 하나 생성, 이를 Github 등 프로젝트를 저장하는 서비스 계정에 연동을 시킨다.
소스가 푸쉬될때마다 이 Git 저장소의 특정 브랜치에 소스가 Push될때마다 젠킨스 전용 폴더에 자동으로 다운된다. 그 다음에 이뤄질 일들을 매크로로 지정하면 된다.
/CI
Github에서 당겨온 코드에 문제가 없는가? → Test코드에 지정된 test를 돌려 확인 (Gradle 을 사용하면 Gradle명령어를 이용해 검사 가능. 마켓에 1800개가 넘는 플러그인이 있어서 사용 가능, 오류나면 메일로 전송 가능)
/CD
프로젝트를 배포용 파일로 빌드한다음, 원하는 파일로 변경해서 돌고있는 서비스를 중지하고 새 서비스를 실행하는 스크립트를 만드는것.
모든 과정은 젠킨스 페이지에서 거시화되어있다.
Jenkins 플러그인을 잘 활용하면 AWS에 연동해서 Docker 컨테이너로 올려주거나, 다수의 작업들을 파이프라인으로 체계화하거나 젠킨스 화면을 편리하고 예쁘게 바꿔주는 편리한 기능들이 많다.
클라우드로 컴퓨팅 공간을 제공하여, 자동화 작업을 설정할 수 있다.
/CI
github 연동, ci/cd 진행할 레포지토리 연동, 지정한 형식대로 어떤 자동화 작업을 진행할지 설정
/CD
자기 프로젝트에 있는 레포지토리에 들어가면 Actions에서 'workFlow' 자동 템플릿이 있어서 매크로 제작, yml로 제작 등 할 수 있다.