2019-10-15 TIL
- circleCI를 통해 build하고 image를 ECR에 push를 했다.
version: 2.1
orbs:
aws-s3: circleci/aws-s3@1.0.11
aws-ecr: circleci/aws-ecr@6.5.0
aws-cli: circleci/aws-cli@0.1.15
slack: circleci/slack@3.4.0
workflows:
jimmy-custom-build:
jobs:
- build-and-push-image
jobs:
build-and-push-image:
docker:
- image: circleci/node:10 # the primary container, where your job's commands are run
environment:
REACT_APP_NODE_API_URL: $REACT_APP_NODE_API_URL
REACT_APP_IMAGE_URI: $REACT_APP_IMAGE_URI
DB_SCHEMA: $DB_SCHEMA
DB_USER: $DB_USER
DB_PASSWORD: $DB_PASSWORD
PROD_DB_URL: $PROD_DB_URL
DEV_DB_URL: $DEV_DB_URL
TEST_DB_URL: $TEST_DB_URL
MIGRATE_dbConnectionUri: $MIGRATE_dbConnectionUri
JWT_SECRET: $JWT_SECRET
GOOGLE_API_CLIENT_ID: $GOOGLE_API_CLIENT_ID
GOOGLE_API_CLIENT_SECRET: $GOOGLE_API_CLIENT_SECRET
GOOGLE_API_REDIRECT_URL: $GOOGLE_API_REDIRECT_URL
GOOGLE_API_SCOPE: $GOOGLE_API_SCOPE
parameters:
account-url:
default: AWS_ECR_ACCOUNT_URL
type: env_var_name
aws-access-key-id:
default: AWS_ACCESS_KEY_ID
type: env_var_name
aws-secret-access-key:
default: AWS_SECRET_ACCESS_KEY
type: env_var_name
dockerfile:
default: Dockerfile
type: string
steps:
- when:
condition: <<parameters.checkout>>
steps:
- checkout
- aws-cli/install
- aws-cli/configure:
aws-access-key-id: <<parameters.aws-access-key-id>>
aws-region: <<parameters.region>>
aws-secret-access-key: <<parameters.aws-secret-access-key>>
profile-name: <<parameters.profile-name>>
- when:
condition: <<parameters.attach-workspace>>
steps:
- attach_workspace:
at: <<parameters.workspace-root>>
- aws-ecr/ecr-login:
region: <<parameters.region>>
- aws-ecr/build-image:
account-url: <<parameters.account-url>>
dockerfile: <<parameters.dockerfile>>
extra-build-args: <<parameters.extra-build-args>>
path: <<parameters.path>>
repo: <<parameters.repo>>
tag: <<parameters.tag>>
- when:
condition: <<parameters.create-repo>>
steps:
- run: >
aws ecr describe-repositories --profile <<parameters.profile-name>>
--region $<<parameters.region>> --repository-names
<<parameters.repo>> > /dev/null 2>&1 || \
aws ecr create-repository --profile <<parameters.profile-name>>
--region $<<parameters.region>> --repository-name
<<parameters.repo>>
- aws-ecr/push-image:
account-url: <<parameters.account-url>>
repo: <<parameters.repo>>
tag: <<parameters.tag>>
- 어제 스크립트 작성을 했을때 ecr-login이라는 command를 찾을 수 없다고 명령어가 나왔다. 고민 고민을 하다가 이유를 찾았다. ecr-login, build-image와 같은 ecr에 있는 command들을 사용하기 위해서는 aws-ecr/ecr-login처럼 붙여줘야 명령어를 읽어들일 수 있다. 위에서 보듯이 aws-cli는 install, configure명령어가 존재를 하는데, 위의 명령어를 쓰기 위해서는 aws-cli/install과 같이 사용해야된다. 이 부분을 해결하고 나니 build가 잘되고 성공적으로 ECR에 이미지가 올라갔다. 이제 ECS를 이용해서 EC2에 배포를 해야겠다.
Written on October 15, 2019