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