CircleCI에서 CodePipeline 시작
배경
요 전날 회사의 스테이징 환경을 EC2에서 Fargate로 리플레이스하고,
CodePipeline을 사용하여 Fargate에 자동 배포가 가능하도록했습니다.
그 때 CI는 CircleCI를 그대로 사용하여 CD를 CodeDeploy에 맡기고 싶었습니다.develop
브랜치 변경을 트리거로 CodePipeline을 시작하면
CircleCI와 병행하여 실행되기 때문에 CircleCI가 정상 종료했을 때만 CodePipeline이 실행되도록 했습니다.
여러가지 조사해 「이것이다」라고 하는 것이 없었기 때문에 자신이 생각한 이 방법이 같은 상황의 사람에게 참고가 되면 기쁘구나~라고
개요
자꾸 쓰면
CircleCI -> S3 -> CodePipeline -> CodeBuild -> CodeDeploy
CircleCI에서 S3으로 buildspec.yml
와 커밋 해시가있는 파일 (commit
) 보내기buildspec.yml
와 commit
를 사용하여 빌드하고 배포합니다.
미리 CodeBuild에는 환경 변수로 git clone
buildspec.yml
의 내용은 git clone
하고 commit
같은 느낌으로
S3 설정
적당하게 비공개 버킷을 만듭니다
만일 버킷 이름은 sample-deploy-hook
IAM 설정
S3 정책을 첨부한 사용자를 만들어 アクセスキーID
및 シークレットアクセスキー
를 기록해 둡니다.
CircleCI 설정
환경 변수 설정
IAM에서 사용자를 만들 때 메모했다 アクセスキーID
/シークレットキー
각각 AWS_ACCESS_KEY_ID
/AWS_SECRET_ACCESS_KEY
라는 환경 변수로 설정
.circleci/config.yml 설정
job 추가
deploy-staging:
docker:
- image: circleci/python:3.7
working_directory: ~/project
steps:
- checkout
- run:
name: Install awscli
command: |
sudo pip install awscli
- run:
name: Setup AWS credentials
command: |
mkdir -p ~/.aws
printf "[default]\nregion = ${AWS_REGION}\naws_access_key_id = ${AWS_ACCESS_KEY_ID}\naws_secret_access_key = ${AWS_SECRET_ACCESS_KEY}" > ~/.aws/config
printf "[default]\naws_access_key_id = ${AWS_ACCESS_KEY_ID}\naws_secret_access_key = ${AWS_SECRET_ACCESS_KEY}" > ~/.aws/credentials
chmod 600 ~/.aws/*
- run:
name: Create commit hash file
command: echo -n $CIRCLE_SHA1 > /tmp/commit
- run:
name: Create zip for deploy
command: zip -j build buildspec.yml /tmp/commit
- run:
name: Upload zip to s3 for hook deploy staging
command: aws s3 mv ./build.zip s3://sample-deploy-hook/build.zip
내용적으로는
- awscli
설치
- AWS Credential 정보를 파일로 내보내기
- 커밋 해시가 있는 파일( commit
) 만들기
- buildspec.yml
및 commit
- zip을 S3에 업로드
workflow에 작업 추가
- deploy-staging:
requires:
- rspec
- rubocop
- db_seed
rspec이나 rubocop 등이 정상적으로 종료하는 것을 조건으로 하기 위해서 requires 하고 있습니다
CodePipeline 설정
첫 단계에서 アクションプロバイダー
를 ソース > Amazon S3
를 선택하고
버킷은 위에서 만든 것
검색 옵션은 CloudWatch
S3 객체 키는 임의의 파일명(CI로부터 업하는 zip과 동명)으로 합니다
이제 CI가 지나갈 때 S3에 zip이 올라가고 트리거로 CodePipeline이 실행됩니다.
Reference
이 문제에 관하여(CircleCI에서 CodePipeline 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rh_taro/items/c68a69a2049a88fa086a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
자꾸 쓰면
CircleCI -> S3 -> CodePipeline -> CodeBuild -> CodeDeploy
CircleCI에서 S3으로
buildspec.yml
와 커밋 해시가있는 파일 (commit
) 보내기buildspec.yml
와 commit
를 사용하여 빌드하고 배포합니다.미리 CodeBuild에는 환경 변수로
git clone
buildspec.yml
의 내용은 git clone
하고 commit
같은 느낌으로S3 설정
적당하게 비공개 버킷을 만듭니다
만일 버킷 이름은 sample-deploy-hook
IAM 설정
S3 정책을 첨부한 사용자를 만들어 アクセスキーID
및 シークレットアクセスキー
를 기록해 둡니다.
CircleCI 설정
환경 변수 설정
IAM에서 사용자를 만들 때 메모했다 アクセスキーID
/シークレットキー
각각 AWS_ACCESS_KEY_ID
/AWS_SECRET_ACCESS_KEY
라는 환경 변수로 설정
.circleci/config.yml 설정
job 추가
deploy-staging:
docker:
- image: circleci/python:3.7
working_directory: ~/project
steps:
- checkout
- run:
name: Install awscli
command: |
sudo pip install awscli
- run:
name: Setup AWS credentials
command: |
mkdir -p ~/.aws
printf "[default]\nregion = ${AWS_REGION}\naws_access_key_id = ${AWS_ACCESS_KEY_ID}\naws_secret_access_key = ${AWS_SECRET_ACCESS_KEY}" > ~/.aws/config
printf "[default]\naws_access_key_id = ${AWS_ACCESS_KEY_ID}\naws_secret_access_key = ${AWS_SECRET_ACCESS_KEY}" > ~/.aws/credentials
chmod 600 ~/.aws/*
- run:
name: Create commit hash file
command: echo -n $CIRCLE_SHA1 > /tmp/commit
- run:
name: Create zip for deploy
command: zip -j build buildspec.yml /tmp/commit
- run:
name: Upload zip to s3 for hook deploy staging
command: aws s3 mv ./build.zip s3://sample-deploy-hook/build.zip
내용적으로는
- awscli
설치
- AWS Credential 정보를 파일로 내보내기
- 커밋 해시가 있는 파일( commit
) 만들기
- buildspec.yml
및 commit
- zip을 S3에 업로드
workflow에 작업 추가
- deploy-staging:
requires:
- rspec
- rubocop
- db_seed
rspec이나 rubocop 등이 정상적으로 종료하는 것을 조건으로 하기 위해서 requires 하고 있습니다
CodePipeline 설정
첫 단계에서 アクションプロバイダー
를 ソース > Amazon S3
를 선택하고
버킷은 위에서 만든 것
검색 옵션은 CloudWatch
S3 객체 키는 임의의 파일명(CI로부터 업하는 zip과 동명)으로 합니다
이제 CI가 지나갈 때 S3에 zip이 올라가고 트리거로 CodePipeline이 실행됩니다.
Reference
이 문제에 관하여(CircleCI에서 CodePipeline 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rh_taro/items/c68a69a2049a88fa086a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
S3 정책을 첨부한 사용자를 만들어
アクセスキーID
및 シークレットアクセスキー
를 기록해 둡니다.CircleCI 설정
환경 변수 설정
IAM에서 사용자를 만들 때 메모했다 アクセスキーID
/シークレットキー
각각 AWS_ACCESS_KEY_ID
/AWS_SECRET_ACCESS_KEY
라는 환경 변수로 설정
.circleci/config.yml 설정
job 추가
deploy-staging:
docker:
- image: circleci/python:3.7
working_directory: ~/project
steps:
- checkout
- run:
name: Install awscli
command: |
sudo pip install awscli
- run:
name: Setup AWS credentials
command: |
mkdir -p ~/.aws
printf "[default]\nregion = ${AWS_REGION}\naws_access_key_id = ${AWS_ACCESS_KEY_ID}\naws_secret_access_key = ${AWS_SECRET_ACCESS_KEY}" > ~/.aws/config
printf "[default]\naws_access_key_id = ${AWS_ACCESS_KEY_ID}\naws_secret_access_key = ${AWS_SECRET_ACCESS_KEY}" > ~/.aws/credentials
chmod 600 ~/.aws/*
- run:
name: Create commit hash file
command: echo -n $CIRCLE_SHA1 > /tmp/commit
- run:
name: Create zip for deploy
command: zip -j build buildspec.yml /tmp/commit
- run:
name: Upload zip to s3 for hook deploy staging
command: aws s3 mv ./build.zip s3://sample-deploy-hook/build.zip
내용적으로는
- awscli
설치
- AWS Credential 정보를 파일로 내보내기
- 커밋 해시가 있는 파일( commit
) 만들기
- buildspec.yml
및 commit
- zip을 S3에 업로드
workflow에 작업 추가
- deploy-staging:
requires:
- rspec
- rubocop
- db_seed
rspec이나 rubocop 등이 정상적으로 종료하는 것을 조건으로 하기 위해서 requires 하고 있습니다
CodePipeline 설정
첫 단계에서 アクションプロバイダー
를 ソース > Amazon S3
를 선택하고
버킷은 위에서 만든 것
검색 옵션은 CloudWatch
S3 객체 키는 임의의 파일명(CI로부터 업하는 zip과 동명)으로 합니다
이제 CI가 지나갈 때 S3에 zip이 올라가고 트리거로 CodePipeline이 실행됩니다.
Reference
이 문제에 관하여(CircleCI에서 CodePipeline 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rh_taro/items/c68a69a2049a88fa086a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
deploy-staging:
docker:
- image: circleci/python:3.7
working_directory: ~/project
steps:
- checkout
- run:
name: Install awscli
command: |
sudo pip install awscli
- run:
name: Setup AWS credentials
command: |
mkdir -p ~/.aws
printf "[default]\nregion = ${AWS_REGION}\naws_access_key_id = ${AWS_ACCESS_KEY_ID}\naws_secret_access_key = ${AWS_SECRET_ACCESS_KEY}" > ~/.aws/config
printf "[default]\naws_access_key_id = ${AWS_ACCESS_KEY_ID}\naws_secret_access_key = ${AWS_SECRET_ACCESS_KEY}" > ~/.aws/credentials
chmod 600 ~/.aws/*
- run:
name: Create commit hash file
command: echo -n $CIRCLE_SHA1 > /tmp/commit
- run:
name: Create zip for deploy
command: zip -j build buildspec.yml /tmp/commit
- run:
name: Upload zip to s3 for hook deploy staging
command: aws s3 mv ./build.zip s3://sample-deploy-hook/build.zip
- deploy-staging:
requires:
- rspec
- rubocop
- db_seed
rspec이나 rubocop 등이 정상적으로 종료하는 것을 조건으로 하기 위해서 requires 하고 있습니다
CodePipeline 설정
첫 단계에서 アクションプロバイダー
를 ソース > Amazon S3
를 선택하고
버킷은 위에서 만든 것
검색 옵션은 CloudWatch
S3 객체 키는 임의의 파일명(CI로부터 업하는 zip과 동명)으로 합니다
이제 CI가 지나갈 때 S3에 zip이 올라가고 트리거로 CodePipeline이 실행됩니다.
Reference
이 문제에 관하여(CircleCI에서 CodePipeline 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rh_taro/items/c68a69a2049a88fa086a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(CircleCI에서 CodePipeline 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rh_taro/items/c68a69a2049a88fa086a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)