SVNにcommitが行われた際に、
jenkinsのJOBを起動するスクリプト
を作成しました。
はい、あまり人に自慢出来る物ではないです・・・
( ・´ー・`)ドヤァ
svnサーバーのrubyが極めて古い場合などに有効です
hookスクリプト(本体)
(svnhook.rb) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| #!/usr/bin/env ruby
require "yaml"
repository = ARGV[0]
revision = ARGV[1]
SETTING = YAML.load_file(ARGV[2])
changed_output = `#{SETTING['PATH_TO_SVNLOOK']} changed #{repository} -r #{revision}`
SETTING['PATH_AND_URL_PAIR'].each{ | match, url |
if match.instance_of?(Regexp)
`curl #{url}` if changed_output.match( match )
else
`curl #{url}` if changed_output.match( Regexp.escape( match ) )
end
}
|
hookスクリプト(設定ファイル)
正規表現も利用可能です
(svnhook.yaml) download
1
2
3
4
5
6
7
| PATH_TO_SVNLOOK:
/usr/local/subversion-1.6.11/bin/svnlook
PATH_AND_URL_PAIR:
- - trunk/YourProject/app
- http://jenkins/job/YourProject/build?delay=0sec
- - !ruby/regexp /trunk\/YourProject\/(app|spec|lib)/
- http://jenkins/job/YourProject/build?delay=0sec
|
post-commit導入例
もしこのスクリプトを利用する酔狂な人が居た場合は、post-commitへ
こーんな感じで追記してみてください
1
| ${SVN_ROOT}/hooks/svnhook.rb $REPOS $REV ${SVN_ROOT}/hooks/svnhook.yaml
|