0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Githubにpushした際に自動でJenkinsでgit pullを行う

Posted at

やっとJenkinsを導入しました。CI/CDをどんどん進めるぞ!

ってことで、ローカル開発が完成してGithubにpushしたタイミングで自動でテスト環境でgit pullをするように設定を行いました。

結構手こずったのでメモしておきます。

全体構成図

今回実現しようとした環境の全体像はこんな感じ。
スクリーンショット 2022-10-15 14.25.25.png

  1. ローカル環境でgit commit後、git pushでGitHubにアップロード
  2. GitHub Actionを利用してテストサーバ上のJenkinsのジョブをAPI経由で起動
  3. Jenkinsのジョブの中でpullと同時にユニットテスト、composer updateやnpm buildを実行

Jenkinsのインストール

Jenkinsのインストールは以下を参考に行いました。
何も問題なくインストールが完了し、Jenkinsが起動

GitHubへのアカウント登録とリポジトリ作成

既にアカウント登録とリポジトリ作成は完了していたので今回は省略

JenkinsでGitHub情報の設定とジョブの登録

以下のページを参考にJenkinsのジョブを登録。

GitHubのリポジトリを設定しようとすると'jenkins host key verification failed'が起こってしまいました。原因はknown_hostsファイルにgithub.comの情報が書き込まれていないことが原因のようです。いくつか対応策はあるみたいですが、私は以下の方法で対応しました。

  1. 「Jenkinsの管理」>「グローバルセキュリティの設定」をクリック
  2. 画面の一番下までスクロールし、「Git Host Key Verification Configuration」の「Host Key Verification Strategy」で「Accept First Connection」を設定

ビルドスクリプトとしてJenkins画面で直接スクリプトを記述するとgit pullの際に.git/index.lockファイル作成時にPermissionエラーが出たのでスクリプトファイルをテストサーバ上において、Jenkinsの画面ではそのファイルを起動するコマンドだけ記載しました。

GitHubとJenkinsのWebhook連携

これが結構手こずりました。ネットで検索すると多くの方がやり方を投稿してくれているのですが、それぞれ設定方法が微妙に異なり、色々と試しましたがなかなかうまくいかず。。。

最終的には検索した時点で一番最新記事だった以下のページを参考にしたところやっとうまく行きました。

注意すべきポイントは以下かと思います。

  • JenkinsのGitプラグインを使用(私の場合、インストール時点で入っていました)
  • Jenkins側のビルドトリガには「GitHub hook trigger for GITscm polling」を利用
  • GitHub上で「Integrations & services」という項目はないので「Webhook」から設定
  • PayloadURLには[jenkinsのURL]/github-webhook/を記述(最後の/を忘れないように)

これでやっとやりたいことが全てうまくできるようになりました👍

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?