AWS CodePipeline에서 go 앱의 Docker 이미지를 ECR에 저장
3664 단어 5도커CodePipelineCodeBuild
실현하고 싶은 것
마스터 분기 리소스에서 Docker 이미지를 만들고 ECR 대상 리포지토리에 저장하고 싶습니다
환경
했던 일
CodeBuild 구축
소스는 CodeCommit 대상 리포지토리 선택
이번에는 master 병합을 트리거하기 때문에 참조 유형은 분기
대상 브랜치는 master를 지정
Build 환경은 특별히 제한이 없었기 때문에
aws/codebuild/amazonlinux2-x86_64-standard:2.0
를 선택나머지 환경 설정은 기본값
Buildspec 파일 사용을 선택
buildspec.yaml은 나중에
이번에는 Docker 이미지의 push까지, 실제로 EKS로 컨테이너의 시작까지 실시하지 않기 때문에
아티팩트 없음 선택
로그 모니터링도 이번에는 수행하지 않음
CodeBuild 권한 추가
이번에는 CodeCommit에서 소스를 다운로드하고 ECR로 이미지 푸시하기 위해
CodeBuild 서비스 역할에 다음 정책 부여
AWSCodeCommitReadOnlyAccess
AmazonEC2ContainerRegistryFullAccess
buildspec.yml 작성
codebuild에서 기본 설정으로 했으므로 hoge-repo의 루트 디렉토리에 buildspec.yml을 넣습니다.
hoge-repo
|
|-- buildspec.yml
|-- Makefile
|-- Dockerfile
|-- main.go
...
buildspec.yaml
version: 0.2
phases:
install:
runtime-versions:
docker: 18
commands:
# ECRにイメージプッシュするためにログインする
- $(aws ecr get-login --no-include-email --region ap-northeast-1)
pre_build:
commands:
# go test -v -cover ./...
- make test
build:
commands:
# go build -v .
- make build
post_build:
commands:
# docker tag \code-commit-repo-name\:latest \erc-repo-name\:latest
# docker push \erc-repo-name\:latest
- make push-image
CodePipeline 구축
CodePipeline 새로 만들기
파이프라인 이름은 임의의 값을 입력하고 나머지는 기본값
소스 공급자에게 AWS CodeCommit의 hoge-repo master 브랜치 선택
검색은 Amazon CloudWatch Events 선택
AWS CodeBuild에서 방금 만든 프로젝트 선택
이번 환경 변수는 사용하지 않으므로 나머지는 그대로
실제로 컨테이너를 시작하지 않기 때문에 배포 단계는 건너 뜁니다
완성
지금까지의 설정으로 CodeCommit의 master 브랜치 업데이트를 트리거로
Go 앱이 빌드 된 Docker 이미지를 만들고 ECR로 푸시하도록 구성 할 수있었습니다.
이 후
Pipeline을 실행할 때마다 go 모듈 (외부 라이브러리)을 다운로드하는 것은 좋지 않습니다 (5 분 정도 걸립니다)
한번 다운로드 한 모듈은 캐시 해 두고 싶다 (이후 성대하게 빠진다)
빠진 기사
Reference
이 문제에 관하여(AWS CodePipeline에서 go 앱의 Docker 이미지를 ECR에 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Static_Novice/items/39362f445be66474b596텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)