CI(Continous Integration) 지속적 통합
팀원들이 서로 작성한 코드를 합치고 에러가 있나 테스트하는 것
전부 눌러보고 일일히 테스트 할 수도 있겠지만
규모가 커질 수록 수작업으로 테스트하는데에 한계가 있을 수도 있고
문제를 더욱 효과적으로 방지하려면 통합작업을 수시로 , 지속적으로 해야한다
그때 마다 번거로운 테스트를 자동화 할 필요성이 있다!
그래서 이 CI의 자동화를 구현해주는 다양한 도구가 있다!
CD(Continous Deployment or Delivery) 지속적 배포
CD 지속적 배포
배포란 소프트웨어를 코딩한 결과를 최종 사용자에게 넘겨주는, 실행 가능 하도록 하는 단계를 말한다.
ex) 앱은 앱스토어에 등록하는 것, 백엔드 서비스라면 코드를 배포용 파일로 빌드하고 결과물을 서버에 전송하고 커맨드로 실행하는 것
CI/CD 자동화툴
위의 CI/CD 과정을 자동화 해주는 툴
JENKINS
설치형툴로 서비스가 돌아갈 서버에 직접 다운받고 깔아서 쓰는 툴!
쉽게 말하자면 그 컴퓨터에서 할 일들을 세팅하는 패널을 웹사이트 형태로 만들고
외부에서도 사용할 수 있게 만든 것
EX) 스프링부트로 코딩한 프로젝트를 서버에 배포한다
CI 과정
- 젠킨스에 새 자동화 작업, 매크로를 하나 생성
- Git Hub, GitBucketm GitLab 등 프로젝트를 저장하는 서비스 계정에 연동
- git 저장소의 특정 브랜치에 소스가 푸시 될 때마다 젠키스는 이 서버로 코드들을
자동으로 젠키스 전용 폴더로 다운로드 하게 된다
- 테스트 코드에 지정된 테스트를 돌려서 확인
- gradle을 사용하는 프로젝트라고 한다면 받아온 코드를 gradle 명령어로 테스트를 수행하도록 할 수 있다 (여러 플러그인 사용가능)
- 테스트가 실패하면 메일이나 슬랙 등으로 개발자에게 바로 알려준다
CD 과정
- 문제가 없다면 실행되도록 설정한 다음 작업들에서 프로젝트를 배포용 파일로 빌드
- 원하는 폴더로 옮겨서 돌고있던 서비스를 중지하고 새로 빌드한 파일로 새 서비스를 실행하는 명령어를 스크립트로 실행
- 개발자는 코딩을 마친 후 이를 git에 푸쉬하기만 하면 이를 자동으로 서버로 옮겨서 테스트하고 문제가 없을시 빌드하고 배포하는 것을 자동화 해준다고 할 수 있다.