WerckerでオリジナルのStepを導入する
このエントリーはOracle Cloudアドベントカレンダーの14日目です。
WerckerはOracleが提供するCI/CDサービスです。元々はオランダ発のスタートアップだったWercker社が提供していたサービスでしたが、2017年にOracleが買収し、その後継続してサービスが提供されています。
Werckerは全てのCI/CDパイプラインをコンテナで実行する仕組みになっており、ユーザーが任意のコンテナをパイプラインに組み込むことが可能です。 これにより、パイプラインで実行する処理内容を自由にカスタマイズできるようになっています。
このエントリーでは、簡単なサンプルを題材に、Werckerでオリジナルの処理をパイプラインに組み込む方法を書きたいと思います。
題材
Docker公式のWhalesayというコンテナを使って、クジラにセリフを喋らせる(標準出力に表示する)処理をパイプラインで実行してみます。
手順
では手順を書いていきます。
Stepを作る
Werckerのパイプラインで実行される処理は、Stepという最小単位で構成されています。Stepはおおよそシェルのコマンドを1回実行するのに相当する処理に当たります。
ここでは、Whalesayコンテナ上で実行する処理を定義するStepを作成します。
まず、Stepの作成に必要なファイルをホストするリポジトリをGitHub上に用意しておきます。たとえば、wercker-step-whalesayなどの名前でリポジトリを作成します。
必要なファイルは以下の3つです。これらを作成して上記リポジトリにPushしていきます。
ファイル名 | 役割 |
---|---|
run.sh | Stepで実行する処理のエントリーポイントとなるスクリプト |
step.yml | Stepの仕様(名前や指定可能な変数など)を定義するymlファイル |
wercker.yml | Stepをビルドして、Werckerサービスに登録ときに利用される、ビルド定義ファイル |
それぞれ、以下のような内容です。
#!/bin/sh cowsay $WERCKER_WHALESAY_MESSAGE
name: whalesay version: 1.0.0 summary: whalesay properties: - name: message type: string required: true
box: docker/whalesay build: steps: - shellcheck: files: run.sh publish: steps: - internal/publish-step: owner: hhiroshell # private: true
以上のファイルをリポジトリにPushしたら、Werckerでこのリポジトリに紐付いたApplicationsを作成してください。Applicationの作成は右上の"Add Application"から。基本デフォルトの設定でウィザードを流すだけなので、迷わないと思います。
次に、Workfrowタブでワークフローを作成します。Workflowタブを選択すると、デフォルトのBuildパイプラインがあるだけのフローが表示されています。
この画面の下の方にある"Add new pipeline"ボタンをクリックし、以下の設定でPipelineを作成します。
- Name: publish
- YML Pipeline name: publish
- Hook type: Default
次にbuildパイプラインの右の[+]マークをクリックし、publishpパイプラインを追加します。"Execute Pipeline"でpublishを選択し、他の項目は全てデフォルトでOKです。
Runsタブを選択し画面下方のリンクからWorkflowを起動します。正常に終了したら、画面右上のアバターをクリックし、更にYour profileを選択します。Stepsの中にwhalesayが表示されていればStepの作成、登録は完了です。
whalesayステップの内容を開くと、以下のような説明が表示されます。
Stepを使う
それでは、作成したwhalesayステップを実際に使ってみます。新たなGitHubリポジトリを作成し、以下のファイルをPushしてください。
build: box: docker/whalesay steps: - hhiroshell/whalesay@1.0.0: message: "hello whalesay !!"
先ほどと同様に、このリポジトリに紐付いたApplicationを作成します。今回はbuildパイプラインしかありませんので、ワークフローの編集は不要です。
最後にワークフローを実行してみます。
正常に終了したら、実行結果のbuildパイプラインに当たる部分をクリックし、その詳細情報にアクセスします。
whalesayというStepの部分を展開すると、そのStepの処理での標準出力の内容が表示されます。クジラが喋っていれば成功です。
まとめ
以上で、whalesayというコンテナをパイプラインに組み込んで、クジラに喋らせるコマンドを実行するStepを走らせることができました。
これと同じ要領で、任意のコンテナをパイプライン内で使うことが可能です。もちろん自作のコンテナを組み込んでStepとして実行することができますので、やろうと思えばほとんどどんなことでもできることになります。
以下は、TerraformをStepで実行してAWS環境の操作を行っている例です。ご参考までに、引用させていただきます。
TerraformとWerckerとAWS Organizationsで始めるステージング・開発環境構築
本エントリーは以上です。