[AWS] CodePipeline CI/CD 워크플로우
CodePipeline이란??
AWS CodePipeline은 소프트웨어를 출시하는 데 필요한 단계를 모델링, 시각화 및 자동화할 수 있게 해주는 지속적 전달 서비스입니다. AWS CodePipeline을 사용하여 코드 빌드, 사전 프로덕션 환경으로의 배포, 애플리케이션 테스트 및 프로덕션으로 릴리스를 비롯한 전체 릴리스 프로세스를 모델링합니다. 그러면 AWS CodePipeline이 정의된 워크플로우에 따라 코드 변경이 있을 때마다 애플리케이션을 빌드, 테스트, 배포합니다.
빌드, 테스트, 릴리스 프로세스를 자동화하는 AWS CodePipeline을 사용하면 모든 새로운 변경 사항을 일관된 품질 검사 세트를 통해 실행하여 소프트웨어 업데이트의 속도와 품질을 높일 수 있습니다.
CodePipeline 는 개발 도구와 통합되어 코드 변경 사항을 확인한 다음 지속적인 전송 프로세스의 모든 단계를 통해 빌드 및 배포합니다.
stage 단계 / (Code commit > Code Build > Code Deploy)
단계는 환경을 격리하고 해당 환경에서 동시 변경 작업의 수를 제한하는 데 사용할 수 있는 논리 단위입니다. 각 단계에는 애플리케이션 아티팩트에 대해 수행되는 작업이 포함됩니다. 소스 코드는 아티팩트의 한 예입니다. 소스 코드가 빌드되고 테스트가 실행되는 빌드 단계가 될 수 있습니다. 또한 코드가 런타임 환경에 배포되는 배포 단계가 될 수도 있습니다. 각 단계는 일련의 직렬 또는 병렬 작업으로 구성됩니다.
Action 작업
애플리케이션 코드에서 수행되고 지정된 지점에 파이프라인에서 작업이 실행되도록 구성된 일련의 작업입니다.
코드 변경의 소스 작업, 애플리케이션을 인스턴스에 배포하는 작업 등등
아티팩트란??
어플리케이션 소스코드, 빌드된 어플리케이션, 종속성, 정의 파일, 템플릿 등과 같이 파이프라인 작업을 통해 만들어진 데이터 컬렉션을 의미합니다.
아티팩트는 일부 작업에서 생성되고 다른 작업에서 사용됩니다. 파이프라인에서 아티팩트는 작업에서 사용된/필요한 파일 집합(입력 아티팩트)이거나 완료된 작업의 업데이트 출력(출력 아티팩트)이 될 수 있습니다. 즉 어플리케이션 소스 코드 파일은 소스 작업의 출력 아티팩트이며 빌드 작업과 같은 다음 작업의 입력 아티팩트이기도 합니다.
워크플로우
위와 같은 워크 플로우를 가진다.
1. 소프트웨어 개발자가 수정된 소스코드를 git을 통해서 git 저장소에 코드를 push
git 저장소와 연동된 code commit 리포지토리에 수정된 소스코드가 생성된다.
2. code pipeline이 자동으로 실행되며 code commit 리포지토리 소스코드를 업데이트한다.
3. CodeCommit stage(단계)에서 SourceArtifact를 지정된 S3버킷에 생성한다.
4. CodeBuild stage(단계)에서 SourceArtifact를 받아서 BuildArtifact를 지정된 S3버킷에 생성한다.
5. CodeDeploy stage에서 생성된 BuildArtifact를 어플리케이션에서 Appspec.yml을 참고하여 정의된 배포 그룹으로 배포한다.
- 이때 EC2 인스턴스 또는 온프레미스 서버에서 CodeDeploy 를 사용하려면 CodeDeploy 에이전트를 먼저 설치하고 실행 중이어야 한다.
- AWS CodePipeline 오픈 소스 에이전트를 사용자의 서버와 통합하여 사용자 지정 작업을 등록하고 파이프라인에 서버를 연결합니다.