일단 배포는 추후 정리하고,
빌드까지의 단계만 정리하기 !!
일단 Amazon ECR
에 대해 정리하자면
Amazon ECR (Elastic Container Registry)는 AWS에서 제공하는 Docker 컨테이너 이미지 저장소 서비스입니다. Amazon ECR은 사용자가 Docker 컨테이너 이미지를 안전하게 저장, 관리 및 배포할 수 있도록 지원하며, AWS의 다른 서비스와 통합되어 원활한 컨테이너 기반 애플리케이션 개발과 배포를 가능하게 합니다.
CodeBuild에서 빌드한 Docker 이미지는 이 레포지토리에 푸시되며, 이후 이 이미지를 ECS, EKS 등으로 배포할 수 있습니다.
이제 AWS ECR을 이용해서 Docker 이미지를 푸시해야 하는데,
이 작업을 진행하기 앞서 자동빌드/배포를 위해 프로젝트에 파일 몇개를 추가 해 줬다.
AWS CodeBulid에서 빌드 프로세서를 정의하는 설정 파일로,
CodeBulid는buildspec.yml
파일을 기반으로 빌드 작업을 자동 수행한다.
위 파일에는 각 빌드 단계와 환경변수 등을 정의 해 줘야 한다.
여기서, 나는 Docker 이미지가 빌드된 후 ECR로 이미지를 푸시 해 줘야 하기때문에
REPOSITORY_URL을 ECR 프라이빗 레파지토리의 URL로 설정 해 주었다.
애플리케이션을 Docker 컨테이너로 패키징하는 방법을 정의하는 파일로,
CodeBulid에서 Docker 이미지를 빌드할 때 이 파일을 참조하여 컨테이너 이미지를 생성한다.
PM2 설정 파일로, Node.js 애플리케이션을 효율적으로 관리하기 위해 사용한다.
이제 위 세개의 파일을 추가한 프로젝트를
CodeCommit Repository에 올려두면 된다 ~
이제 본격적으로 자동 빌드를 진행하기 위해서,
프라이빗 Repository를 생성 해 줬다.
접속해서 생성 버튼을 클릭 해 준다.
여기서는 간단하게 Repository 이름만 설정 해 주면 된담.
생성 완료!
여기 있는 URL을 복사해서 buildspec.yml
파일의 REPOSITORY_URL
로 정의 해 준 뒤에
한번 Push 해 줘야 한당
이제 CodePipeline까지만 설정하면 자동 빌드가 가능하다.
AWS CodePipeline은 소스 코드 변경 사항이 발생했을 때 자동으로 빌드를 수행하고, 컨테이너 이미지를 배포하는 CI/CD 파이프라인입니다.
설명은 이렇게 되어 있는데, 일단 배포는 생략하고 빌드까지만 진행 해 줄거다
AWS CodePipeline에 접속 후 파이프라인 생성을 눌러준다.
파이프라인 이름을 지정 해 준다.
파이프라인 실행 모드도 설정 해 줄 수 있는데,
대체
: 새 실행 시작 시 현재 실행중인 파이프라인이 중단되고 새로운 실행으로 대체, 신속한 반영에 적합
대기
: 현재 실행 중인 파이프라인 완료까지 대기 한 후 새로운 실행 시작, 데이터 무결성 보장 시 적합
병렬
: 새 실행 시작 시 기존 실행과 상관 없이 동시에 여러 파이프라인 실행
이렇게 정의되어 있다. 나는 대기로 선택 해 줬다.
그리고 서비스 역할은 IAM 권한이라고 생각 해 주면 된담
이건 이미 생성된게 있으니 그걸로 연결
이제 소스 스테이지를 추가 해 줘야한다.
일단 소스 공급자는, 파이프라인이 코드 변경 사항을 감지하고 가져오는 곳이다.
나는 현재 소스가 CodeCommit에 저장되어 있기 때문에 AWS CodeCommit을 소스공급자로 설정해줬다.
나머지 설정은 위 사진과 같이 선언 해 주고 다음 버튼 클릭 해주면 된담
이제 빌드 스테이지를 추가 해 줘야 하는데,
빌드스테이지에서는 소스 코드를 빌드하고, Docker 이미지를 생성하여 Amazon ECR로 푸시하는 작업을 수행해야 한다.
일반적으로 AWS CodeBuild
를 사용한다고 한다
AWS CodeBuild를 이용해서 소스코드를 빌드하고,
Docker 이미지를 만들어 ECR에 푸시하는 빌드 작업을 자동화 할 수 있다
나는 CodeBuild 프로젝트가 없기 때문에 프로젝트를 생성 해 줘야 한다.
빌드 프로젝트 이름을 선언 해 주고, 환경을 세팅 해 주면 된다.
환경이미지는 관리형 이미지와 사용자 지정 이미지 중 선택 할 수 있는데
관리형 이미지의 경우 AWS에서 제공하는 사전 정의된 빌드 환경을 사용하는 옵션으로
자동 업데이트 및 유지관리가 되기 때문에 간편하다고 한다
사용자 지정 이미지는 커스터마이즈된 환경을 사용하고 싶을때 유리!
나머지 설정은 위 사진과 같이 세팅 해 줬다
그리고 역할 ARN 또한 기존에 만들어둔게 있기 때문에 그대로 사용하고,
CodeBuild의 경우 buildspec.yml
파일에 기반해 빌드 과정을 정의하기 때문에
buildspec 파일 사용을 선택 해 줬다.
이름은 그대로 buildspec.yml
을 쓸거라서 이건 따로 건드리지 않았다.
이제 저장 해 주면 된다.
그럼 이렇게 빌드 프로젝트까지 추가 완료~
다음 버튼을 눌러준다.
자동 배포는 추후 연결할거라서 배포 스테이지는 건너뛰어주었다.
검토까지 하고 확인을 눌러주면 끝
이제 이렇게 파이프라인이 생성 된 걸 확인 할 수 있다
이제 Build 단계까지 정상적으로 적용된것만 확인 해 주면 끝
정상 적용된걸 볼 수 있다~
실패가 떨어지면 세부 정보 보기를 클릭해서 에러 원인을 파악 해 주면 된다.
아마 REPOSITORY_URL이 잘못 되었거나 권한 추가가 필요한 경우가 대부분일 것 같당
이제 이후 수정 된 내용은, CodePipeline을 통해 자동 빌드 처리가 될것이다
그리고 ECR에서 이미지까지 등록된걸 확인 해 주면 끝