【AWS】gitlabプッシュ時にjenkinsをwebhookで連携させる方法

最近まで寒かったのに急に暑くなって、一番心地いい気温が全くなかったなぁ・・・としょんぼりしている株式会社Smallitの橋本です。

今回は、CI/CD環境構築の続きの記事になります。gitlabにソースがプッシュされたときに、jenkinsのジョブを実行させる方法です。

簡単に説明すると、jenkinsを使えばCI/CD環境を作成できます。しかし、gitlabにプッシュした時にどうやればjenkinsを起動できるか?という問題があります。

それを解決するのが、gitlabのwebhookなる機能です。プッシュした時にwebhookを通じて、jenkinsのジョブを実行できます。そのwebhookの設定を行う記事です。

連携できてjenkinsのジョブを実行したらAWSのCodepipelineも実行できそうですね!

システムの全体像

【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc.  詳細はこちらから>

今回実装するシステムは赤枠の部分になります。
ちなみにgitlabやjenkinsはパブリックサブネットに構築しています。

今回はAWSで構築したgitlabとjenkinsをウェブフックで連携する部分を構築する記事です。上記の環境を構築した際の他の記事も良かったら、参考にしてください。

【AWS】初心者がDocker上にJenkinsを構築してみた【Linux】

手順を簡単に説明すると以下の通りです。

  1. Jenkinsの設定(プラグイン、gitlabのアクセストークン設定など)でwebhoookのURL生成

  2. gitlabにプッシュ時にwebhookを実行させるように設定

  3. テスト

Jenkinsの設定

まずjenkinsの設定を行います。

STEP1 Gitlabプラグインをインストール:jenkinsの管理 → プラグインの管理をクリックします。

STEP2 gitlabプラグインのインストール:検索欄に「gitlab」を入力 → チェックボックスをクリック → 「Downdloa now and install after restart」ボタンをクリックします。

STEP3 gitlabプラグインのインストール:チェックボックスをクリックします。

STEP4 ジョブの作成:新規ジョブ作成をクリックします。

STEP5 ジョブの作成:ジョブ名を入力 → パイプラインを選択 → OKボタンを押します。

STEP6 Webhook URL取得:下にスクロールするとビルドトリガ欄があります。「Build when a change is pushed to GitLabにチェック」→ その下にあるURLをコピーしてメモ帳などに張り付ける → 高度な設定をクリックします。

STEP7 Secret tokenの取得:高度な設定を下にスクロールするとSecret token欄があります。Generateボタンを押して、表示されたSecret tokenをメモ帳などにコピペします。

これでJenkinsでの設定は完了です。

Gitlabの設定

次にjenkinsで生成したwebhook URLとSecret tokenを利用して、gitlabでwebhookの設定を行います。

STEP1 プッシュ時にJenkinsジョブを動作させたいリポジトリを開き、Webhookを選択:プッシュ時にJenkinsジョブを動作させたいリポジトリを開く → 設定 → Webhookを選択

STEP2 URLとSecret Tokenを入力:赤枠の場所に、Jenkinsの設定のSTEP6と7で取得したWebhook URLとSecret Tokenを入力 → Add Webhookボタンを押す

STEP3 テスト:作成されたWebhookのテストタブを押す → Push eventsを押す

上記のような表示がされたらOKです。

これでソースをプッシュした時に、Jenkinsのジョブが実行されます。Jenkinsジョブスクリプトの書き方についての記事は、また後日書きます!

まとめ

今回は、gitlabプッシュ時にjenkinsジョブを実行する方法について紹介しました。手順を振り返ると以下のようになります。

  1. jenkinsでgitlabプラグインのインストール

  2. jenkinsジョブの作成(webhook URLとSecret tokenの作成)

  3. gitlabでwebhookの設定

意外と簡単に設定することができましたね。

ここからシステムの続きを少し話すと、gitlabにプッシュされているソースを参照するためには、gitlabでアクセストークンを作成する必要があります。

私が作ろうとしているシステムでは、AWS CodePipelineでおそらくアクセストークンが必要になると思います。

その記事についてはまた今度作成するので、興味があったらみてみてください。

【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>

Smallitのサービス