Perl日記

PerlとかRubyとかPHPとかPythonとか

JenkinsがGithubにpushされたbranchをテストする

頑張ったので忘れずにメモ。
master以外のbranchがpushされたときにはそのbranchでテストが走ってほしい。
結論からいうと、Gitプラグインの$GIT_BRANCH変数を使えばいいみたい。

Jenkinsにアカウントを作る

githubさんを追加しておく。

  • 行列による権限設定
    • ジョブ
      • Read
      • Build

プラグイン

  • Git Plugin
  • GitHub Plugin
  • GitHub API Plugin
  • Parameterized Trigger Plugin

ジョブ

Githubのhookを受けるジョブと、テストを回すジョブで分ける。
ジョブの粒度は小さい方がいいってkeiさんが言ってた。

  • Github_Trigger_R9
  • → R9

設定

  • Git Plugin
    • Global Config user.name Value
    • Global Config user.email Value

Jenkins用に作っておくのがいいと思う。

  • Github Web Hook
    • Let Jenkins auto-manage hook URLs
      • こっちを設定するとJenkinsが勝手にGithubのリポジトリのhook URLを自動でつけてくれるので簡単。でもURLは1つだけ。それがイントラなら結局手前に何か置くか、"override hook URL"で何かしないといけないみたい。
    • Manually manage hook URLs
      • 自分はこっちで試した。Github_Trigger_R9のジョブの方でGithubからのhook受けるようにして、R9ジョブでは受けたくなかった。

一方Githubでも

リポジトリのService Hooksで設定する。

こんな感じ。SSLオレオレ証明書でもおkだった。

ジョブの設定

Github_Trigger_R9
  • Github project
  • ソースコード管理
  • ビルド・トリガ
    • Build when a change is pushed to Github
  • ビルド後の処理
    • Trigger parametrized build on other projects
    • Build Triggers
      • Projects to build
        • R9
      • Trigger when build is
        • Stable
      • Predefined parameters
        • branch=${GIT_BRANCH}
        • ここでブランチ名を下流ジョブに渡す
R9
  • Github project
    • 入れない
  • ビルドのパラメータ化
    • 文字列
      • 名前
        • branch
      • デフォルト値
        • origin/master
    • Git
      • Repository URL
        • git@github.com:rightgo09/jenkins-hook-test.git
      • Branches to build
        • $branch
  • ビルド・トリガ
    • Build when a change is pushed to Github


入れたり外したりがややこしい。
もしジョブを1つにするならこれを合体させればいいのだろうと思う。


enjoy!



参考:
Trigger Jenkins builds by pushing to Github | Four KitchensGitHub + Jenkinsでmaster以外のブランチをテストする方法 - QA@IT