2019-10-14 CircleCI AWS orbs적용하기
- circleCI에는 orbs가 존재한다. orbs란 circleCI를 통해 타사 서비스를 사용할 수 있게해준다? 예를들어 aws-s3 orbs를 이용하면 특정 command를 통해 aws-s3 버킷에 접근하고 업로드를 할 수 있게된다.
version: 2.1
orbs:
aws-s3: circleci/aws-s3@1.0.11
aws-ecr: circleci/aws-ecr@6.5.0
workflows:
jimmy-custom-build:
jobs:
- build-image
jobs:
build-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
AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
AWS_REGION: $AWS_REGION
AWS_ACCOUNT_ID: $AWS_ACCOUNT_ID
parameters:
account-url:
default: AWS_ECR_ACCOUNT_URL
type: env_var_name
dockerfile:
default: Dockerfile
type: string
path:
default: ./
type: string
repo:
default: moneydog
type: string
tag:
default: latest
type: string
extra-build-args:
default: -t test
type: string
steps:
- checkout # check out the code in the project directory
- run: npm install
- run: npm run lint
- run: npm run test
- run: npm run build
- aws-s3/sync:
from: dist
to: 's3://moneydog-build/build'
arguments: |
--acl public-read
overwrite: true
- run: echo aws-s3-sync success
- aws-s3/copy:
from: dist/
to: 's3://moneydog-build'
arguments: '--dryrun'
- ci가 동작할때 executor로 docker circliCI/node10을 사용하고 npm에 있는 명령어들을 실행하고, lint, test가 통과가 되면 build를 해서 dist디렉토리에 있는 파일들을 s3에 copy를 할 수 있게된다.
오늘의느낀점
- circleCI 공식문서를 들어가게 되면 jobs, workflows, steps, commands 용어가 많이 나오게된다. CI에서는 크게 job이라는 단위로 실행이 되는데, job이 실행이 되면 하위에 있는 command실행하고 step을 통해 셸 명령어를 수행하게 된다. 처음에는 많이 복잡한 개념이라 이해가 안됬는데, 계속해서 docuemnt를 보다보니 차근차근 접근을 하는 방법을 배우고 있다.
Written on October 14, 2019