Jenkins 2にてjenkinsfileに触れてみる
Jenkins に触ってみたいと常日頃思っていたのだが、気がついたらバージョン2が出ていた。
後方互換性があったり、UIが良くなったり、以前はplug-inだったパイプラインがデフォルトで取り込まれてて、jenkinsfile を書いてジョブをコードで自動化出来たり、いろいろと良くなっているらしい。
やりたいこと
自宅のDebian 7 環境に入っているGitBucketを対象に、GitBucket管理されたサンプルアプリのビルドを行うところまでを、ひとまずやってみる。
ひとまずビールを開ける。
インドの青鬼。
JavaのVersionは下の通り。
java version "1.8.0_60"
インストール、起動
インストールは下記のページを参照しておこなった。
キーを追加する。
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)、
下にような画面が出てくるので、
sudo less /var/lib/jenkins/secrets/initialAdminPassword
などのコマンドを使用し、表示されているパスワードを入力する。
次にこんな画面が出るので、オススメのプラグインを入れるほうを選択。
色々入るようだが、Jenkins自体が初体験なので、あまり良くわからない。
GitBucket
自宅のDebian環境にはGitBucketが入っているので、
ひとまずこちらにサンプルアプリのリポジトリを作り、テストをすることにする。
ちなみに、GitBucketもデフォルトだと同じポート(8080)で起動するようになっていたため、
ひとまず下記のように実行して、GitBucket側の起動ポート番号を変える。
java -jar gitbucket.war --port=8081
ジョブ作成
Jenkinsのジョブ作成。
ここで色々と設定して、ビルドやテストなどのジョブを作れるようだ。
このときにPipelineを選択すると、Jenkinsfileを使用したジョブが実行できるよう。
私は最初、Freestyle projectを選択していたため、Jenkinsfileが動かなくて少し詰まった。
※勿論GUI上から設定して、ジョブを動かすことは出来た。
あとはGithub連携のジョブを作成して、そちらからもJenkinsfileを使ったジョブが実行できるようだが、
私の環境だとそもそもジョブの作成画面に選択肢として表示されていなかった。
これの理由については後で調べる。
設定
設定内容についてだが、使用するリポジトリはGitBucketだが、Githubのリポジトリを動かす設定で問題なく動いた。
credentialsはGitBucketに使用しているusernameとpasswordを入力、
他の項目についても画面のとおりに設定していけば、問題なく動いた。
Jenkinsfile を書く
試しに下記のようなスクリプトを書く。あくまでテスト用ということで。
#!groovy
node {
echo "Work Jenkinsfile!!"
}
あとはビルドを実行してみると、ちゃんとコンソールログに下記のとおりにログが出ていた。
今回はあくまで動作確認程度の内容だが、次はリポジトリにプッシュしたら、ビルドしてテストしてデプロイという流れを作りたい。
参考にしたサイト
https://jenkins.io/doc/pipeline/jenkinsfile/jenkins.io
追記 - 2016/5/15
上に書いていた、Github連携のジョブの件についてだが、
本日Jenkinsにログインして、ジョブの作成画面に遷移してみたら、普通に項目が選択できるようになっていた。
ただ、こちらの項目からだとGitBucketへのジョブは作成できないよう。
Credentialが無効だとエラーが出てしまう。
また、リポジトリのURLを設定する箇所もないので、GitHub専用なのかな?と思った次第
(まあ、元々、GitHub連携用のジョブと書いてあるし)
GitBucketのジョブについては"Pipeline"ジョブとして作成すれば、
一応のところ動作としては問題なさそう。