Bitbucket + Heroku에서 CICD ~ CD 편 ~

전치



일단 파이썬으로 쓴 프로젝트 왜 태그를 붙이고 있지만,
여기서 설정은 언어 독립적입니다~

목적



로컬에서 Bitbucket과 Heroku 모두에게 push와 까다로운 번거로움,
Bitbucket의 master 브랜치에 push시 Heroku에 자동 배포하고 싶습니다.
그리고 나중에 CI하고 싶고. .

1. 파이프라인 생성



설정하려는 분기 페이지에서 Pipelines에서 자습서에 따라 작성.
Heroku 배포용 템플리도 준비되어 있다.
이런 느낌. image의 지정은 불필요.
마스터 브랜치 만 있으면 거기에 커밋되어 파이프 라인을 실행하기 때문에
develop 브랜치 만들어 그곳에 커밋하고 나중에 master에 병합이 정답일지도.
나는 달렸다 (흰 눈
clone:
  depth: full
pipelines:
  branches:
    master:
    - step:
        # set HEROKU_API_KEY and HEROKU_APP_NAME environment variables
        # set clone `depth: full' as described here: https://confluence.atlassian.com/x/Y9-5Mw
        name: Deploy to Heroku
        deployment: production   # set to test, staging or production
        # trigger: manual  # uncomment to have a manual step
        script:
          - git push https://heroku:[email protected]/$HEROKU_APP_NAME.git HEAD

2. 변수 세트



파이프라인 주석에 있는 것처럼 HEROKU_API_KEY 및 HEROKU_APP_NAME을 환경 변수로 설정합니다.
설정→PIPELINES→Environment variables에서 아래 설정.

HEROKU_API_KEY


heroku auth:token 그렇지만 토큰의 발행은 할 수 있지만, 유효기간이 1년 미만 같기 때문에 아래와 같은 Token을 세트.
무기한 것 같다.

This token can also be retrieved with heroku auth:token, however it is only valid for a maximum of 1 year by default.
You can create a non-expiring token by running heroku authorizations:create
$ heroku authorizations:create
Creating OAuth Authorization... done
Client:      <none>
ID:          !foo!
Description: Long-lived user authorization
Scope:       global
Token:       !bar!
Updated at:  Wed Aug 01 2018 11:13:25 GMT+0900 (JST) (less than a minute ago)

HEROKU_APP_NAME


heroku apps 명령이나 웹 UI에서도 배포할 앱의 이름을 확인하고 설정합니다.

3. 파이프라인을 수동으로 실행해 보기



Pipelines에서 실행 결과의 확인이나 수동 실행 등을 할 수 있다.
1 때 파이프 라인의 설정 파일을 master에 커밋하면 그 시점에서 파이프 라인이 실행되고,
변수가 설정되지 않았기 때문에 실패했을 것입니다.


Rerun에서 다시 실행하여 배포가 성공했는지 확인합니다.


develop→master에의 풀릭→병합으로부터의 파이프라인 실행도 확인할 수 있었다.

감상



헤록토 참치 비트 버킷

참고



Validator for bitbucket-pipelines.yml
Deploy to Heroku
Bitbucket Pipeline을 사용하여 Heroku에 자동 배포

좋은 웹페이지 즐겨찾기