概要
最近 Jenkins 2.x を触っていて、少しづつ Pipeline as Code にも慣れていこうとしています
導入ってわけではないですが、少しやりたいことがあって Pipelien ジョブを作成してみたので紹介します
やったことは簡単で、実行したシェルの結果 (Ruby の結果) をメールの本文として送信してみました
環境
- CentOS 6.7 64bit Final
- Jenkins 2.3
- Ruby 2.3
SMTP サーバの設定
今回は SMTP サーバに Gmail を使いました
設定方法はこのあたり を参考にしてください
Google の 2 段階認証を設定している場合はアプリパスワードの発行が別途必要になります
発行したパスワードを Jenkins に設定するようにしてください
使用する Ruby のコード
内容は何でも OK です
メール本文に記載したい文章は puts
するようにしています
- mkdir /var/lib/jenkins/work/
- vim /var/lib/jenkins/work/test.rb
puts "hoge"
Pipeline ジョブを作成する
Pipeline ジョブを作成していきます
新規ジョブ作成から作成します
ジョブの種類は Pipeline を選択してください
ビルドコードを作成する
ジョブの設定で Pipeline の項目を設定しましょう
Definition は「Pipeline script」にします
で、Script は以下の通りです
node {
stage 'Execution'
sh 'rm -f result.txt && touch result.txt'
sh '/usr/local/rvm/rubies/ruby-head/bin/ruby /var/lib/jenkins/work/test.rb >> result.txt'
stage 'Reading Result'
def result = readFile('result.txt')
stage 'Sending email'
mail (to: 'your.account@gmail.com',
from: 'your.account@gmail.com',
subject: "Job '${env.JOB_NAME}' (${env.BUILD_NUMBER})",
body: "${result}");
}
ruby への PATH は各自の環境に合わせて適宜変更してください
流れを簡単に説明すると
- 結果を保存するファイルを作成
- ruby を実行して出力結果をファイルに保存
- readFile でファイルを開き内容を変数に保存
mail
で SMTP サーバを使ってメール送信
という感じになります
コード内ではわかりやすいように stage を使って処理をわけています
stage を使ってわけることでビルド結果が見やすくなります
動作確認する
では、実際に実行してみましょう
以下のように各 stage ごとに処理時間とエラーだったかどうかが表示されると思います
最後までいけばメールもちゃんと届いていると思います
メールの送信部分でエラーになる場合は SMTP の設定を見なおしてください
ビルドは成功したのにメールが届かない場合はフィルタに引っかかっていないか確認してみてください
最後に
Pipeline を使ってメールの送信をしてみました
本当はプライベートリポジトリで管理している Ruby のスクリプトを clone して実行したかったんですが、Pipeline で ID/PW を使った git clone のやり方がわからず諦めました
とりあえず Groovy が使えるようになったほうがいいのと、Jenkins が用意している sh
とか mail
とか stage
とか git
とかが使えるようにならないとダメかなと思います
その辺のリファレンス的なのってどっかにあるのかな
あると思うんだけど見つけられない、、、
0 件のコメント:
コメントを投稿