at backyard

Color my life with the chaos of trouble.

Jenkins 2にてjenkinsfileに触れてみる

Jenkins に触ってみたいと常日頃思っていたのだが、気がついたらバージョン2が出ていた。

jenkins.io

後方互換性があったり、UIが良くなったり、以前はplug-inだったパイプラインがデフォルトで取り込まれてて、jenkinsfile を書いてジョブをコードで自動化出来たり、いろいろと良くなっているらしい。


やりたいこと

自宅のDebian 7 環境に入っているGitBucketを対象に、GitBucket管理されたサンプルアプリのビルドを行うところまでを、ひとまずやってみる。

ひとまずビールを開ける。
インドの青鬼。

f:id:shinshin86:20160512200223j:plain

JavaのVersionは下の通り。

java version "1.8.0_60"

インストール、起動

インストールは下記のページを参照しておこなった。

Debian Jenkins Packages

キーを追加する。

wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -

deb http://pkg.jenkins-ci.org/debian binary/
下記コマンドを打って、上の記述を"sources.list"内に追記する。

vi /etc/apt/sources.list

updateしてinstall。

sudo apt-get update

sudo apt-get install jenkins

インストール完了後、ブラウザからアクセスすると(ポートは8080)、
下にような画面が出てくるので、

f:id:shinshin86:20160512222459p:plain

sudo less /var/lib/jenkins/secrets/initialAdminPassword

などのコマンドを使用し、表示されているパスワードを入力する。

f:id:shinshin86:20160512222606p:plain

次にこんな画面が出るので、オススメのプラグインを入れるほうを選択。

f:id:shinshin86:20160512222629p:plain

色々入るようだが、Jenkins自体が初体験なので、あまり良くわからない。


GitBucket

自宅のDebian環境にはGitBucketが入っているので、
ひとまずこちらにサンプルアプリのリポジトリを作り、テストをすることにする。

ちなみに、GitBucketもデフォルトだと同じポート(8080)で起動するようになっていたため、
ひとまず下記のように実行して、GitBucket側の起動ポート番号を変える。

java -jar gitbucket.war --port=8081

ジョブ作成

Jenkinsのジョブ作成。
ここで色々と設定して、ビルドやテストなどのジョブを作れるようだ。

f:id:shinshin86:20160512222702p:plain

このときにPipelineを選択すると、Jenkinsfileを使用したジョブが実行できるよう。
私は最初、Freestyle projectを選択していたため、Jenkinsfileが動かなくて少し詰まった。
※勿論GUI上から設定して、ジョブを動かすことは出来た。

あとはGithub連携のジョブを作成して、そちらからもJenkinsfileを使ったジョブが実行できるようだが、
私の環境だとそもそもジョブの作成画面に選択肢として表示されていなかった。
これの理由については後で調べる。


設定

設定内容についてだが、使用するリポジトリはGitBucketだが、Githubリポジトリを動かす設定で問題なく動いた。
credentialsはGitBucketに使用しているusernameとpasswordを入力、
他の項目についても画面のとおりに設定していけば、問題なく動いた。

Jenkinsfile を書く

試しに下記のようなスクリプトを書く。あくまでテスト用ということで。

#!groovy
node {
    echo "Work Jenkinsfile!!"
}

あとはビルドを実行してみると、ちゃんとコンソールログに下記のとおりにログが出ていた。

f:id:shinshin86:20160512223808p:plain

今回はあくまで動作確認程度の内容だが、次はリポジトリにプッシュしたら、ビルドしてテストしてデプロイという流れを作りたい。


参考にしたサイト

be-hase.hatenablog.com

https://jenkins.io/doc/pipeline/jenkinsfile/jenkins.io


追記 - 2016/5/15

上に書いていた、Github連携のジョブの件についてだが、
本日Jenkinsにログインして、ジョブの作成画面に遷移してみたら、普通に項目が選択できるようになっていた。

f:id:shinshin86:20160515105047p:plain

ただ、こちらの項目からだとGitBucketへのジョブは作成できないよう。
Credentialが無効だとエラーが出てしまう。
また、リポジトリのURLを設定する箇所もないので、GitHub専用なのかな?と思った次第
(まあ、元々、GitHub連携用のジョブと書いてあるし)

GitBucketのジョブについては"Pipeline"ジョブとして作成すれば、
一応のところ動作としては問題なさそう。