- クラウド技術
【AWS】gitlabプッシュ時にjenkinsをwebhookで連携させる方法
- #AWS
最近まで寒かったのに急に暑くなって、一番心地いい気温が全くなかったなぁ・・・としょんぼりしている株式会社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】
手順を簡単に説明すると以下の通りです。
-
Jenkinsの設定(プラグイン、gitlabのアクセストークン設定など)でwebhoookのURL生成
-
gitlabにプッシュ時にwebhookを実行させるように設定
-
テスト
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ジョブを実行する方法について紹介しました。手順を振り返ると以下のようになります。
-
jenkinsでgitlabプラグインのインストール
-
jenkinsジョブの作成(webhook URLとSecret tokenの作成)
-
gitlabでwebhookの設定
意外と簡単に設定することができましたね。
ここからシステムの続きを少し話すと、gitlabにプッシュされているソースを参照するためには、gitlabでアクセストークンを作成する必要があります。
私が作ろうとしているシステムでは、AWS CodePipelineでおそらくアクセストークンが必要になると思います。
その記事についてはまた今度作成するので、興味があったらみてみてください。
【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>