• Javaで作られたCIツール。昔はHudsonといった。

バックアップとリストア

thinbackupを利用したもの

  • thinbackupを手動インストール
  • フォルダを指定してリストア
  • pluginは手動で入れる必要があった。
  • credentialも作り直す

インストール

rpmインストール

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_PORT8080

warインストール

Tomcatなどにwarを配置するだけ。単体でも動く

環境変数やJavaプロパティの確認

http://example.com/jenkins/systemInfo

CSSやJSなどの場所

webapps以下のxxxフォルダがhttp://JENKINS_SERVER/jenkins/static/ランダム文字列/xxxとして読み込まれる。ここを直接書き換えて再起動すれば反映される。

起動

単体で起動

java -jar jenkins.war
  • http://localhost:8080/でアクセスする。そうするとホームディレクトリの.jenkinsに展開される。JENKINS_HOMEを指定するとそこを見るようだ。

サーブレットコンテナ利用

  • warを置くだけ

Apache連携

/etc/httpd/conf.dに以下のファイルをproxy.confとして配置

ProxyPass           / http://localhost:8080/ nocanon
ProxyPassReverse    / http://localhost:8080/
ProxyRequests       Off
AllowEncodedSlashes NoDecode

コンテキストパス変更

jenkins2.0だとwarではないので、--prefix=/jenkins

Plugin install

  • jpiファイルをJENKINS_HOME/pluginsディレクトリに配置しておき再起動

マスター、スレーブ構成

マスターにだけwarインストールして、スレーブはslave.jarを立ち上げておきSSH接続する。

ディレクトリ構成

Jobのホームディレクトリ

HUDSON_HOME/jobs/各ジョブの名前_DIR

Jobsのホームディレクトリ以下の構成

ファイル

  • config.xml

設定内容

ソース置き場

  • CVSやSVNから取ってきたソースの置き場は各JOB共通のようだ。

ディレクトリ

  • workspace

ビルドしたものが配置される。

Manage and Assign Roles 設定

Role Strategy Pluginを利用して、不必要なJOBを隠す。

Global roles

プロジェクト単位のユーザーには全体のRead以外の権限はつけない。Readの権限を付けないと「アクセスできませんxxxには、全体/Read パーミッションがありません。」となるのでReadの権限は最低必要。ViewのRead権限をつけるとタブが全部見えるが、中身のプロジェクトはProject rolesで定義されたものしか見えないので、ViewのRead権限は不要だろう。

Project Roles

Jobを正規表現で指定して、その単位で権限制御できる。これ単体ではログインしても何も見れないので、全体Viewの権限+プロジェクトの権限を各ユーザーにアサインする。プロジェクトのメンバーには閲覧+ビルドのみ。プロジェクトの管理者にはジョブとビルドのすべての権限を付与しておくとよいだろう。

Assign role

前述のように全体Readのグローバル権限+プロジェクト単位の権限を二つ付与する必要がある。新規作成ユーザーは何も見れないので権限の作りすぎも要注意である。

リモートからJOB実行

設定画面でトークンを設定して、指定通りのURLをたたくと外部からJOBを実施できる。

CUIツール

jarファイルのCLIが追加。jenkins.jarというものを実行する

CUIツールの入手

起動しているhudsonからダウンロードする。

http://jenkinsURL/cli

実行

バージョン情報取得

java -jar jenkns.jar -s http://127.0.0.1:8080/ version

コピー実行

java -jar jenkins.jar -s http://127.0.0.1:8080/ copy-job コピー元 コピー先

認証

java -jar jenkins-cli.jar [-s JENKINS_URL] -auth kohsuke:abc1234ffe4a

逆引き

複数選択のパラメータを渡したい

パラメータでテキストを用意しておくと、複数のパラメータがスペース区切りで出力される。

  • 出力例
JOB1 JOB2 JOB3 JOB4

各ジョブで使うパラメータを外部ファイルで共通化したい

Extended Choice Parameter pluginかExtensible Choice Parameter pluginを使う。名前が似ているが、よりダウンロード数の多いExtended Choice Parameter pluginを使ってみた。

Extended Choice Parameter plugin

設定でファイルからの読み込みやデリミタ―を指定してのパラメータ文字列を指定できる。複数選択パラメータも可能(A,B,Cのように出てくる)。複数JOB共通で使いたい場合はファイルにしておく。

  • properitesファイルの例
param1=hoge,fuga,piyo
param2=db1,db2,db3

下流ジョブの実行完了を待って、後続ジョブを実施したい→JOIN Plugin

ただしJOINPluginが実行完了を待つのはビルド後のJOBに限る。

プラグイン

ThinBackup★★設定バックアップ用。cronの書式で指定できる。世代管理もできるので便利!
Workspace Cleanupワークスペース削除用プラグイン。gitなどで前回のコミット失敗した時を考えるとあったほうが良い
Role Strategy Plugin★★★権限管理ができる
Build Pipeline Plugin上流、下流の関係が一目瞭然。ただし見るだけ
Build Flow PluginDSLで制御できるらしいぞ!
SSH Plugin★★★SSH操作実行
Git PluginGitと連携する場合に必要
Categorized View PluginJOBビューの階層化
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ビルド失敗でアイコンが変化

build flow plugin 研究

  • 並行制御は下流ジョブの終了までは考慮しない。各並行の中に下流ジョブを定義する
  • if文などが使える
// パラメータの表示
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")

設定ファイル(config.xml)を直接変更

たくさんのjobを扱う場合ブラウザ経由で操作するとめんどくさい。イレギュラーではあるが設定ファイルやディレクトリを直接変更した場合の反映方法をまとめた

JOBコピー

初期状態ではユーザホームディレクトリに.hudsonというディレクトリができる。ここのjobsディレクトリにjob毎にディレクトリができているのでこいつをコピーする。

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

主な環境変数

WORKSPACEJOBのワークスペース
JENKINS_HOMEJENKINS全体のHOME

トラブルシューティング

ピン止めされたプラグイン

このバージョンのJenkinsでは、プラグインマネージャーでピンが設定されている次のプラグインがインストールされています。ピンが設定されているプラグインを、少なくともJenkinsにバンドルされているバージョンにアップデートすることを推奨します。

Jenkins標準のプラグインはJenkins本体をアップデートしたときに合わせてアップデートされるが、バージョンを固定したい時がある。その場合に上記メッセージが出る。

[No valid crumb was included in the request]

この場合、トークンチェックに引っかかっているようだ。 正常な遷移にもかかわらず出てしまう場合がある。 その場合「Jenkinsの管理」→「グローバルセキュリティの設定」の画面を開き CSRF対策をOFFにすることで回避できる。

Counter: 10677, today: 4, yesterday: 4

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-06-23 (水) 21:09:45