GitプロジェクトをコミットしたタイミングでJenkinsにビルドをしてもらいたい!

[Jenkins][備忘録][Git]GitプロジェクトをコミットしたタイミングでJenkinsにビルドをしてもらいたい!

あらすじ

  • 全然CIっぽくJenkinsを使っていなかったので本格的に使ってみたい。
  • Gitを連携させたい
  • GitリポジトリにコミットしたタイミングでJenkinsにビルドさせてみたい

…のだが、いきなりビルド時にcloneできないという現象でハマっていた。

ERROR: Error cloning remote repo 'origin' : Could not clone C:/project/excel_for_ruby.git

上記の原因

cloneできない問題はJenkins実行時にgit.exeにパスが通ってなかった、設定していなかったという非常に残念なものだった。Jenkins実践入門にも手順が書いてあった。[1]

Jenkinsの「ビルド実行」でGitリポジトリのソースのテストをする

  • Jenkinsの管理 => プラグインの管理 => Jenkins GIT plugin をインストール
  • 新規ジョブ作成 => フリースタイル・プロジェクト でプロジェクト作成
  • ソースコードシステム
    • Gitを選択
    • リポジトリを入力
      • C:\project\excel_for_ruby
  • ビルド
    • Windowsバッチコマンドの実行
      • rspecを実行できるように記述する
cd "C:\project\excel_for_ruby"
rspec -fs spec\*

これでビルドするとはじめのcloneできないエラー。

Error cloning remote repo 'origin' : Could not clone C:\project\excel_for_ruby
  • Jenkinsから見たGitのパスを設定
    • Jenkinsの管理 => システムの設定
      • Gitのパスを追加するフォームがあるのでこれを追加
      • Nameもなんでもいいから入力する(Defaultにした)

GitでCommitしたらJenkinsがビルドをしてくれるようにする

「wget ビルド実行パス」というコマンドをGitのフックスクリプトに記述すればコミット時にビルド実行できるらしい。とりあえずWindows用のwgetを取得。http://users.ugent.be/~bpuype/wget/:title

プロジェクト内の.git/hooks/post-commitを編集。

echo "Hook post-commit start"
wget --no-proxy http://localhost:8080/job/excel_for_ruby/build?delay=5sec || echo "wget failed"
echo "Hook post-commit end"

proxyが噛んでいたので–no-proxy指定しないと400エラーに。

Hook post-commit start
--2012-02-09 16:40:39--  http://localhost:8080/job/excel_for_ruby/build?delay=5s
ec
Resolving proxy.xxx.jp... xxx.xxx.xxx.xxx
Connecting to proxy.xxx.jp|xxx.xxx.xxx.xxx|:8080... connected.
Proxy request sent, awaiting response... 400 Bad Request
2012-02-09 16:40:39 ERROR 400: Bad Request.

これでCommit時にビルドが走ってくれる! これでようやくスタートラインが見えてきた!

[1] 環境がアレだったので、proxyの設定とかその辺も探してしまった。

関連記事(この記事の初版より古い記事はリンクがグレーで表示されます)

  1. 2012/12/12 [Git] [Subversion] git-svnインストールからgit svn dcommit完了までの手順
  2. 2012/08/29 [Git] Git add, commitをした時、中でどんな事が起こっているのか
  3. 2012/06/19 [Jenkins] JenkinsでAdmin権限を持つユーザのパスワードを全て忘れた時の復旧方法
  4. 2012/05/28 [Ruby] [イベント] [Jenkins] [Redmine] Jenkins,Redmine使いこなし勉強会に参加しました と、ちょっとプラグイン作ってみた #jen_red
  5. 2012/04/28 [Jenkins] [Sphinx] [イベント] BPStudy#57に参加しました #bpstudy
  6. 2012/04/24 [Git] [Windows] Pro Gitと入門Gitと入門gitと実用GitでGitの復習 無名ブランチ(detached HEAD)からの復活編
  7. 2012/04/23 [Git] [Windows] Pro Gitと入門Gitと入門gitと実用GitとGit道場#1でGitの復習 rebase編
  8. 2012/04/22 [Git] [イベント] Git道場#1に参加しました と、pullとpull --rebase備忘録 #gitdojo
  9. 2012/04/10 [Git] [Windows] Pro Gitと入門Gitと入門gitでGitの復習 HEADのキャレットとかチルダとか補講編
  10. 2012/03/27 [Windows] [Jenkins] [Ruby] simplecovとsimplecov-rcovを使ってJenkinsでカバレッジを確認
  11. 2012/03/20 [Windows] [Jenkins] [Ruby] Windows環境用にrcovをビルドしなおす手順
  12. 2012/03/15 [Git] [Windows] Pro Gitと入門gitでGitの復習 マージ編
  13. 2012/03/11 [Git] [Windows] Pro Gitと入門gitでGitの復習 ブランチ編
  14. 2012/03/05 [Git] [Windows] Pro Gitと入門gitでGitの復習 基本操作編
  15. 2015/05/26 [Jenkins] 実行ユーザの違いでJenkinsのホームディレクトリが変わって困った話