CircleCI 코드를 확인하고 Heroku에 자동 배포하는 방법

소개



이 기사는 다음을 읽고 있다고 가정합니다.
Github의 마스터 브랜치에 커밋이 이루어지면 CircleCI가 Heroku에 배포를 실행하도록합니다.

본 기사는 CircleCI를 이용해 Heroku와의 CI/CD 파이프라인을 구성하는 방법에 대해서 자신용도 겸해 해설해 갑니다.
기본적으로 공식 문서를 참고로 했으므로, 이쪽도 함께 읽어 보는 것을 추천합니다.

배포 구성

개발 환경



Ruby 2.6.5
Rails 6.0.0
번들러 2.1.4
MySQL 5.6.50

Heroku에 CI/CD 파이프라인 구축



Heroku 앱을 설정했다고 가정하기 때문에 아직은 여기

1) 환경 변수 추가



CircleCI에서 자동으로 프로이징하려면 Heroku 애플리케이션 이름과 Heroku API 키를 환경 변수로 추가합니다. (CircleCI에서 환경 변수 설정은 여기)
이하, 어플리케이션명을 HEROKU_APP_NAME , Heroku API 키를 HEROKU_API_KEY 라고 하는 변수명으로 취급합니다.
HEROKU_APP_NAME는 heroku에 배포하는 앱 이름을 할당합니다.HEROKU_API_KEY 는 터미널에서 다음 명령을 실행할 때 값을 할당합니다.

터미널
アプリ名 % heroku auth:token
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx

출력 된 모든 것을 복사하고 Circleci에 환경 변수로 설정합니다.

2) git push로 master 브랜치를 자동 배포



다음은 그 코드입니다.

.cricleci/config.yml
deploy:
    docker:
      - image: buildpack-deps:trusty
    executor: heroku/default
    steps:
      - checkout # push/mergeされたコードのチェック
      - run:
          name: Heroku への master のデプロイ
          command: |
            git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git master

이 코드를 작성하여 코드를 확인하고 자동 배포를 실행합니다.

3) workflow 설정



.cricleci/config.yml
workflows:
  version: 2.1
  build-deploy:
    jobs:

      - build
      - deploy:
          requires:
            - build
          filters:
            branches:
              only: master

공식 문서에서는 커스터마이즈도 가능하지만 초보자인 저는 그 영역에 도달하지 않았기 때문에 우선 파이프라인을 짜는 것을 목표로 준비되어 있는 워크플로우를 사용했습니다.

완성 코드



.circleci/config.yml
version: 2.1
orbs:
  ruby: circleci/ruby@0.1.2 
  heroku: circleci/heroku@1.2.3
jobs:
  build:
    docker:
      - image: circleci/ruby:2.6.5-stretch-node
    executor: ruby/default
    steps:
      - checkout
      - run: gem install bundler -v 2.1.4
      - run:
          name: Which bundler?
          command: bundle -v
      - ruby/bundle-install

  deploy:
    docker:
      - image: buildpack-deps:trusty
    executor: heroku/default
    steps:
      - checkout
      - run:
          name: Heroku への master のデプロイ
          command: |
            git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git master

workflows:
  version: 2.1
  build-deploy:
    jobs:

      - build
      - deploy:
          requires:
            - build
          filters:
            branches:
              only: master

이제 Heroku와의 CI/CD 파이프라인을 연결할 수 있었다.


build 아래에 deploy가 표시됩니다.
이 글은 어디까지나 초급편이기 때문에 RSpec에 의한 테스트의 실행까지는 기술하고 있지 않지만, 그러한 기술도 할 수 있다는 것을 마음에 넣어두면 좋겠습니다.

좋은 웹페이지 즐겨찾기