2.9. Source-to-Image (S2I) Webhook を使用した自動デプロイ
Webhook を使用して、ソースコードを変更するたびに、ビルドとデプロイを自動的にトリガーします。このプロセスの詳細は、Triggering Builds を参照してください。
手順
次のコマンドを実行して、GitHub Webhook トリガーのシークレットを取得します。
oc get bc/ostoy-microservice -o=jsonpath='{.spec.triggers..github.secret}'
$ oc get bc/ostoy-microservice -o=jsonpath='{.spec.triggers..github.secret}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
`o_3x9M1qoI2Wj_cz1WiK`
`o_3x9M1qoI2Wj_cz1WiK`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要このプロセスの後のステップでこのシークレットを使用する必要があります。
次のコマンドを実行して、OSToy の buildconfig から GitHub Webhook トリガーの URL を取得します。
oc describe bc/ostoy-microservice
$ oc describe bc/ostoy-microservice
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
[...] Webhook GitHub: URL: https://api.demo1234.openshift.com:443/apis/build.openshift.io/v1/namespaces/ostoy-s2i/buildconfigs/ostoy/webhooks/<secret>/github [...]
[...] Webhook GitHub: URL: https://api.demo1234.openshift.com:443/apis/build.openshift.io/v1/namespaces/ostoy-s2i/buildconfigs/ostoy/webhooks/<secret>/github [...]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow GitHub Webhook URL の
<secret>
テキストを、取得したシークレットに置き換えます。実際の URL は、次の出力例のようになります。出力例
https://api.demo1234.openshift.com:443/apis/build.openshift.io/v1/namespaces/ostoy-s2i/buildconfigs/ostoy-microservice/webhooks/o_3x9M1qoI2Wj_czR1WiK/github
https://api.demo1234.openshift.com:443/apis/build.openshift.io/v1/namespaces/ostoy-s2i/buildconfigs/ostoy-microservice/webhooks/o_3x9M1qoI2Wj_czR1WiK/github
Copy to Clipboard Copied! Toggle word wrap Toggle overflow GitHub リポジトリーで Webhook URL を設定します。
リポジトリーで、Settings > Webhooks > Add webhook をクリックします。
-
"Payload URL" フィールドに、
Secret
を含む GitHub Webhook URL を貼り付けます。 -
"Content type" を
application/json
に変更します。 Add webhook ボタンをクリックします。
Webhook が正常に設定されたことを示す GitHub のメッセージが表示されます。これで、GitHub リポジトリーに変更をプッシュするたびに、新しいビルドが自動的に開始し、ビルドが成功すると新しいデプロイが開始します。
ソースコードを変更します。変更すると、ビルドとデプロイが自動的にトリガーされます。この例では、OSToy アプリケーションのステータスを示す色がランダムに選択されます。設定をテストするために、ボックスをグレースケール表示に変更します。
- リポジトリー内のソースコード https://github.com/<username>/ostoy/blob/master/microservice/app.js に移動します。
- ファイルを編集します。
-
8 行目 (
let randomColor = getRandomColor();
を含む行) をコメントアウトします。 9 行目 (
let randomColor = getRandomGrayScaleColor();
を含む行) のコメントを解除します。7 app.get('/', function(request, response) { 8 //let randomColor = getRandomColor(); // <-- comment this 9 let randomColor = getRandomGrayScaleColor(); // <-- uncomment this 10 11 response.writeHead(200, {'Content-Type': 'application/json'});
7 app.get('/', function(request, response) { 8 //let randomColor = getRandomColor(); // <-- comment this 9 let randomColor = getRandomGrayScaleColor(); // <-- uncomment this 10 11 response.writeHead(200, {'Content-Type': 'application/json'});
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - "changed box to grayscale colors" など、更新を示すメッセージを入力します。
- 下部の Commit をクリックして、変更をメインブランチにコミットします。
クラスターの Web UI で、Builds > Builds をクリックして、ビルドのステータスを確認します。このビルドが完了すると、デプロイが開始します。ターミナルで
oc status
を実行してステータスを確認することもできます。デプロイが完了したら、ブラウザーで OSToy アプリケーションに戻ります。左側の Networking メニュー項目にアクセスします。ボックスの色がグレースケールの色だけに制限されるようになります。