THINKING MEGANE

werckerのtriggerBuild APIを使ってビルドパイプラインをつくる

先日、Hugoに移行した際、ブログ本体のリポジトリとテーマのリポジトリを分けるようにしました。ブログ本体のほうはweckerと連携しておりpushすることでGitHubPagesに公開されるようにしましたが、テーマ側を更新したときも同様のことができるようにAPIを使ってビルドパイプラインっぽいのをつくってみました。

triggerBuild API

werckerが提供するビルドをキックするためのAPIです。

ここの手順に従い、トークンを取得して利用します。

curl -H 'Content-Type: application/json' \
     -H "Authorization: Bearer <token>"  \
     -X POST -d '{"applicationId": "<applicationId>", "branch":"master", "message":"<your custom message>"}' \
     https://app.wercker.com/api/v3/builds

のようにして使います。

applicationIdは、ビルドを実行したいアプリケーションのIDです。 自分の登録しているアプリケーションのURLにIDがついているのでそこで確認できます。

https://app.wercker.com/#applications/<applicationId>

ビルドパイプライン

あとは特定のアプリケーションのビルドから、他のアプリケーションのビルドを呼ぶように設定するだけです。

wercker.yml

自分の場合、テーマのリポジトリのほうに以下のようなwercker.ymlをおいています。

box: debian
build:
  steps:
    - script:
        name: echo
        code: |
          echo 'Update theme'
deploy:
  steps:
    - script:
      name: install curl
      code: |
        apt-get update
        apt-get -y install curl
    - script:
      name: trigger THINKING MEGANE build
      code: |
        curl -H 'Content-Type: application/json' -H "Authorization: Bearer $WERCKER_TOKEN" -X POST -d "{\"applicationId\": \"$WERCKER_APP_ID\", \"branch\":\"master\", \"message\":\"Update theme\"}" https://app.wercker.com/api/v3/builds

buildのstepはwerckerで必須のようなのでダミーを入れています。

(指定しないと Failed step: setup environment - No 'build' pipeline definition in wercker.yml エラーが出ます)

wercker

wercker側では Deploy targets > Custom Deploy を選択し、Auto deployにチェックを入れておきます。

wercker.ymlで指定した、WERCKER_TOKENとWERCKER_APP_IDもここの Deploy pipeline > Add new variable で追加します。

少なくともWERCKER_TOKENはprotectedにチェックを入れるのを忘れないようにしましょう。

ビルド

あとは、テーマのリポジトリにpushするとブログのほうで設定したGitHub Pagesへの公開するビルドが実行されます。 ブログコンテンツ側のビルド設定は、前回のエントリを参考にしてください。


ビルド起動がAPIでできるとビルドパイプラインだけでなく、いろいろ応用できそう。 werckerのAPIは最近充実してきているようなのでいいですね。

このエントリーをはてなブックマークに追加