yumもあるけど、実際には一つのrpmっぽいので下記より取得。
http://pkg.jenkins-ci.org/redhat/
--prefix=/jenkins
/etc/sysconfig/jenkinsに入れたら成功!
JENKINS_ARGS="--prefix=/jenkins"
/etc/sysconfig/jenkinsに記載がある
JENKINS_HOME | /var/lib/jenkins |
JENKINS_PORT | 8080 |
Tomcatなどにwarを配置するだけ。単体でも動く
http://example.com/jenkins/systemInfo
webapps以下のxxxフォルダがhttp://JENKINS_SERVER/jenkins/static/ランダム文字列/xxxとして読み込まれる。ここを直接書き換えて再起動すれば反映される。
java -jar jenkins.war
/etc/httpd/conf.dに以下のファイルをajp.confとして配置
ProxyRequests Off ProxyPass /jenkins ajp://localhost:8009/jenkins ProxyPassReverse /jenkins ajp://localhost:8009/jenkins
jenkins2.0だとwarではないので、--prefix=/jenkins
マスターにだけwarインストールして、スレーブはslave.jarを立ち上げておきSSH接続する。
HUDSON_HOME/jobs/各ジョブの名前_DIR
設定内容
ビルドしたものが配置される。
Role Strategy Pluginを利用して、不必要なJOBを隠す。
プロジェクト単位のユーザーには全体のRead以外の権限はつけない。Readの権限を付けないと「アクセスできませんxxxには、全体/Read パーミッションがありません。」となるのでReadの権限は最低必要。ViewのRead権限をつけるとタブが全部見えるが、中身のプロジェクトはProject rolesで定義されたものしか見えないので、ViewのRead権限は不要だろう。
Jobを正規表現で指定して、その単位で権限制御できる。これ単体ではログインしても何も見れないので、全体Viewの権限+プロジェクトの権限を各ユーザーにアサインする。プロジェクトのメンバーには閲覧+ビルドのみ。プロジェクトの管理者にはジョブとビルドのすべての権限を付与しておくとよいだろう。
前述のように全体Readのグローバル権限+プロジェクト単位の権限を二つ付与する必要がある。新規作成ユーザーは何も見れないので権限の作りすぎも要注意である。
設定画面でトークンを設定して、指定通りのURLをたたくと外部からJOBを実施できる。
Hudson 1.302から、HudsonにはCLIが追加。hudson-cli.jarというものを実行する
起動しているhudsonからダウンロードする。
java -jar hudson-cli.jar -s http://127.0.0.1:8080/ version
java -jar hudson-cli.jar -s http://127.0.0.1:8080/ copy-job コピー元 コピー先
パラメータでテキストを用意しておくと、複数のパラメータがスペース区切りで出力される。
JOB1 JOB2 JOB3 JOB4
Extended Choice Parameter pluginかExtensible Choice Parameter pluginを使う。名前が似ているが、よりダウンロード数の多いExtended Choice Parameter pluginを使ってみた。
設定でファイルからの読み込みやデリミタ―を指定してのパラメータ文字列を指定できる。複数選択パラメータも可能(A,B,Cのように出てくる)。複数JOB共通で使いたい場合はファイルにしておく。
param1=hoge,fuga,piyo param2=db1,db2,db3
ただしJOINPluginが実行完了を待つのはビルド後のJOBに限る。
ThinBackup | ★★ | 設定バックアップ用。cronの書式で指定できる。世代管理もできるので便利! |
Workspace Cleanup | ★ | ワークスペース削除用プラグイン。gitなどで前回のコミット失敗した時を考えるとあったほうが良い |
Role Strategy Plugin | ★★★ | 権限管理ができる |
Build Pipeline Plugin | ★ | 上流、下流の関係が一目瞭然。ただし見るだけ |
Build Flow Plugin | ★ | DSLで制御できるらしいぞ! |
SSH Plugin | ★★★ | SSH操作実行 |
Git Plugin | ★ | Gitと連携する場合に必要 |
Categorized View Plugin | ★ | JOBビューの階層化 |
Configuration Slicing Plugin | ★ | 設定のコピー。ただ一部のみ対応の感じがあるが・・ |
Copy Artifact Plugin | 成果物をコピーするPlugin |
Copy To Slave Plugin | |
Join Plugin | 複数のJOB到着を待って、後続JOBを流せるプラグイン |
Matrix Authorization Strategy Plugin | マトリックスベースの認証制限を実現する |
Parameterized Trigger Plugin | ★★★ | 上流ジョブから下流ジョブへパラメータ引き継ぎができる |
Role Based Plugin | ロールによる認証制御を可能にする |
Timestamper Plugin | ★★ | コンソールに時間経過を出力する |
Extended Choice Parameter Plugin | 選択肢リストを各ジョブで共有できる |
Role Based Pluginの説明(有効にするには設定画面変更必要)
http://techracho.bpsinc.jp/morimorihoge/2013_09_12/13642
Emotional Jenkins Plugin | ビルド失敗でアイコンが変化 |
// パラメータの表示 out.println params // if if (params["TARGET_BRANCH"] == "master") { out.println "TARGET_BARNCH is master" } else { out.println "TARGET_BARNCH is not master" } join = parallel ([ first: { build("job1", param1: "passed by build flow", TARGET_BRANCH: params.TARGET_BRANCH) }, second: { build("job2") }, third: { build("job3") } ]) out.println join.first.result.name // job4 will be triggered after jobs 1, 2 and 3 complete build("job4")
たくさんのjobを扱う場合ブラウザ経由で操作するとめんどくさい。イレギュラーではあるが設定ファイルやディレクトリを直接変更した場合の反映方法をまとめた
初期状態ではユーザホームディレクトリに.hudsonというディレクトリができる。ここのjobsディレクトリにjob毎にディレクトリができているのでこいつをコピーする。
バックアップするプラグインもあるが、他サーバーにJOBを移行したい場合にはjobs/ジョブ名/config.xmlをtarで固める。
cd $JENKINS_HOME find jobs/ -name "config.xml" -print0 | tar -cvz -T - --null -f /var/tmp/jenkinsjobs.tar.gz
findとtarの間にxargsを使ってしまうと、アーカイブするファイル数が多い場合に tarが複数回起動されてしまい、すべてのファイルが含まれたアーカイブファイルを作れない。
各ジョブのディレクトリに入りconfig.xmlを変更する。
そのままではhudsonのメモリ上にあるものが使われてしまう。故に強制的にファイルシステムから再読み込みさせる。これはメニューに用意されている。
[hudsonの管理]から[設定の再読み込み]を実行する。
環境変数の表示 | シェルの実行でenv |
WORKSPACE | JOBのワークスペース |
JENKINS_HOME | JENKINS全体のHOME |
このバージョンのJenkinsでは、プラグインマネージャーでピンが設定されている次のプラグインがインストールされています。ピンが設定されているプラグインを、少なくともJenkinsにバンドルされているバージョンにアップデートすることを推奨します。
Jenkins標準のプラグインはJenkins本体をアップデートしたときに合わせてアップデートされるが、バージョンを固定したい時がある。その場合に上記メッセージが出る。
この場合、トークンチェックに引っかかっているようだ。 正常な遷移にもかかわらず出てしまう場合がある。 その場合「Jenkinsの管理」→「グローバルセキュリティの設定」の画面を開き CSRF対策をOFFにすることで回避できる。