素敵なサムシングを独断と偏見で一方的に紹介するブログ(´・ω・`)

投稿日: 2018年3月15日
最終更新日:

【全自動雑用おいたん】Githubへのpushを受け取ってJenkinsのJobを実行してみよう

YouTubeも見てね♪

ねこじゃすり

created by Rinker
PEPPY(ペピイ)
¥3,850 (2024/04/03 21:33:13時点 Amazon調べ-詳細)

猫を魅了する魔法の装備品!

Anker PowerCor

created by Rinker
Anker
¥4,990 (2024/04/03 21:42:08時点 Amazon調べ-詳細)

旅行には必須の大容量モバイルバッテリー!

【最新機種】GoPro hero11 Black

created by Rinker
GoPro(ゴープロ)
¥62,000 (2024/04/03 21:42:08時点 Amazon調べ-詳細)

最新機種でVlogの思い出を撮影しよう!

ペヤング ソースやきそば 120g×18個

created by Rinker
ペヤング
¥2,600 (2024/04/03 21:42:16時点 Amazon調べ-詳細)

とりあえず保存食として買っておけば間違いなし!

レッドブル エナジードリンク 250ml×24本

created by Rinker
Red Bull(レッドブル)
¥4,000 (2024/04/03 21:42:12時点 Amazon調べ-詳細)

翼を授けよう!

ドラゴンクエスト メタリックモンスターズギャラリー メタルキング

created by Rinker
スクウェア・エニックス(SQUARE ENIX)
¥3,250 (2024/04/03 21:42:09時点 Amazon調べ-詳細)

みんな大好き経験値の塊をデスクに常備しておこう!

MOFT X 【新型 ミニマム版】 iPhone対応 スマホスタンド

created by Rinker
MOFT
¥2,880 (2024/04/03 21:42:18時点 Amazon調べ-詳細)

Amazon一番人気のスマホスタンド!カード類も収納出来てかさ張らないのでオススメです!

Jenkinsで自動化

毎回同じ作業をするのがつらたん。。。

システム開発等をしていると、Githubにソースをpushまたはmergeしたタイミングで共通の処理を行いたい、というケースが出てくると思います。
ソースをビルドしたり特定のディレクトリに移動したり、Slackに通知を飛ばしたり…etc

そんな時にJenkinsを用いれば共通作業を自動化することが可能です。

Jenkins?

JenkinsとはCIツールの一つです。
CIツールとは、Continuous Integration Tool(継続的インテグレーションツール)という意味の略で、オープンソースのソフトウェアです。

継続的インテグレーションツール?

また小難しい単語が出てきましたね。orz

継続的インテグレーションとは、システム開発において、ソースのビルドやユニットテストを都度繰り返し行なうことによって、システムの問題早期発見し、開発の効率化・品質向上に繋げるための手法の事を指します。
今回はこの作業をJenkinsというソフトウェアを利用することで自動化を図ることが可能になります。

今回は、Githubpush操作をJenkins側で認識し、特定のジョブを実行する、という部分までの手順をご紹介致します。

手順

前提

Point
  • Git関連のJenkinsプラグインインストール済み(Git, Github)
  • JenkinsユーザーのSSHキーは設定して接続確認済み

【セキュリティ向上】SSHキーを作成してMacからGithubにSSH接続してみよう

Jenkins側の設定

まずはJenkins側の設定を行いましょう。

GithubからのWebhook実行したいJobを選択します。

次にソースコード管理セクションにて、以下の作業を行い、認証情報を新たに設定するので追加>Jenkinsを選択します。

Point
  • Gitにチェックを入れる
  • 対象のリポジトリを入力
  • ビルドするブランチを指定
  • ビルドするブランチを指定
  • リポジトリをチェックアウトするディレクトリを指定

認証情報の追加ダイアログが表示されたら、以下の項目の入力を行った上で追加ボタンをクリックします。

Point
  • 種類をSSHユーザー名と秘密鍵
  • スコープをシステム
  • ユーザーをSSHキーを作成したユーザー名
  • 秘密鍵をJenkinsマスター上のファイルからにチェックを入れ、サーバー上の秘密鍵までのパスを入力


そうすると、上記で登録したユーザー名の認証情報が選択された状態になります。

次にさらに下部GitHub hook trigger for GITScm pollingにチェックを入れ、サンプルとしてシェルスクリプトの欄に以下のコマンドを入力して保存ボタンをクリックしましょう。

Github側の設定

次にGithub側JenkinsへのWebhook通信の設定を行いましょう。
Webhookを行いたいリポジトリのページを開き、Settings>Webhooks>Add webhookボタンをクリックします。
※リポジトリに対して管理者権限が無いとSettingsメニューが出ません

Payload URL以下を追記してください。

Content typeapplication/jsonを指定して他はデフォルトのままAdd webhookボタンをクリックします。

サーバー側の設定

最後にAWSのEC2等を利用していて、セキュリティグループでIP制限をかけている場合は、Githubからのアクセスを許可する必要があります。
コチラにアクセスし、hooksとなっている部分のIPを全て許可しましょう。

スポンサーリンク

336×280




確認

では、実際にpushを行ってJobが実行されるか確認してみましょう。
まずはGithubにpushをしてみます。

お、、、

おぉ〜!!!正常にpush操作を検知してJenkinsのJobが実行されましたね♪

Github側のWebhookの履歴にも成功が追加されています。

終わりに

やや設定が複雑ですが、最初に設定さえしてしまえば後々とても幸せになります。

JenkinsはCIツールとしてとても普及していて、他にも様々なサービス連携を設定する事が出来てとても便利なので、ぜひ使いこなせるようになりましょう。

CATEGORIES & TAGS

IT