CI/CD環境を構築するツールの一つとして使われているJenkinsを、OpenShift環境においてGitHubと連携方法を紹介します。
当初こちらの記事を参考にしたのですが、うまく動作しなかったため違う方法で連携しました。
本記事のゴール
本記事ではソースコードをGitHubで管理し、ローカルからリモートへのpushをトリガーとしてJenkinsパイプラインのジョブが開始するようになることをゴールとします。
JenkinsはOpenShiftクラスターの中でpodを立てて稼働させることにします。まだJenkinsのpodを建てられていない人は以下のコマンドを実行してJenkinsを立ち上げましょう。
oc new-app jenkins-ephemeral

JenkinsとGitHubを連携する
Jenkins側の設定
Jenkins側ではGeneric Webhook Trigger Pluginというプラグインを導入します。導入の仕方はJenkinsのWebコンソールにアクセスしてJenkinsの管理→プラグインの管理からダウンロードすることができます。

ダウンロードが完了したらパイプラインの設定をします。GitHubと連携させたいパイプラインのジョブを選択して設定へ進みます。設定を開くと新たにプラグインを導入したことでビルドトリガの項目「Generic Webhook Trigger」という欄が追加されているので、その中のTokenという項目に連携時のトークン名を設定します。(何でもいいです)

こうすることで指定したパイプラインへジョブを起動させる命令の送り先URLが下のように一意に定まります。Jenkinsのホスト名はJenkinsコンソールでトップ画面を開いたときのURLです。
http://[Jenkinsのホスト名]/generic-webhook-trigger/invoke?token=[設定したトークン名]
GitHub側の設定
GitHub側での設定は通常のWebhook連携と同じです。ソースコードが格納されているリポジトリのsettingsを開いてWebhooksの欄を選択し、右上のAdd webhookをクリックします。

すると連携したURLを求められるので、Jenkins側で設定した際に決定したURLを入力します。

ContentType、Secretはそのままで大丈夫です。その下のラジオボタンについては今回はGitHubへpushしたときにJenkinsジョブが開始すればいいのでJust the push eventにチェックを入れます。
ローカルからGitHubへpushしてみよう
以上で設定は終了したので試しにローカルからGitHubへコミットをpushしてみましょう。正常に動作する場合は設定したWebhookの下の欄に成功を示す緑のチェックマークが表示され、Jenkins側ではジョブが開始します。参考になれば幸いです。
コメント