Jenkins PipelineのTry&Error
Jenkins Pipeline Try & Error
皆さんはJenkins Pipelineを使っていますか?
もし使っているならどうやって、Try & Errorをしていますか?
今日はJenkins Pipeline、特に「Pipeline script from SCM」を使った場合のTry & Errorについての紹介です。
「Pipeline script from SCM」って?
通常の「Pipeline script」はUIを通して、処理を記載していきます。
下のようなJobが相当します。
これでも「free style job」に比較すれば十分にPipelineの恩恵を享受できますが、ひとつ足りないものが...
「JobそのものをVersion管理したい。」となったときにこれでは、Version管理ができません。
そこで使用するのが、「Pipeline script from SCM」
Pipeline Scriptを「Jenkinsfile」として保存し、実行のたびにJenkinsfileが保存されたリポジトリをfetch。存在するJenkinsfileを元にして、Jobを実行していくもののことを指します。
準備自体は比較的簡単で...
- ① Pipeline scriptを元に「Jenkinsfile」を作成
- ② 対象のリポジトリへJenkinsfileをCommit & Push
- ③ Pipeline Jobで「Pipeline script from SCM」を選択
- ④ リポジトリURLと対象となるJenkinsfileのパスを指定
後はJob実行が選択されるたびに、Fetchを行いJenkisfileを元にして、Jobが実行されていきます。
Pipelineの実行
Pipelineの作成等はまた別の機会ということで割愛。
まずは、作成したPipelineを「Pipeline script from SCM」で実行します。
Jenkinsfileの中身は先ほどと同じ内容なので以下を参考に。
pipeline { agent any stages { stage('sample') { steps { echo 'Hello Pipeline script' } } } }
今回はJenkinsfileの配置場所などは特に考えず、Rootへ配置します。
対象となるリポジトリのURLを指定し、今回はCredentialも併せて指定します。
JenkinsfileパスはRootに存在しているので、初期設定のままで問題ありません。
これでJobを実行すると... 無事にJobの成功が確認できます。
PipelineのRetry
次はRetry方法ですが、SCMにJenkinsfileを移してしまうとJobを修正したいときには、CommitとPushが必要になります。
ここで問題になるのがTry & Errorが気軽に行えないということです。
お試しでJobを実行してみたい場合などに、いちいちCommitしてPushしていると一瞬で履歴が汚れ、怒られます。
「私は完璧にJobを書ける!!」という人は問題ありませんが、そうでない方は「Retry」を活用して、JobのTry & Errorを行いましょう!
まずはコンソール出力の画面を開き「Retry」の表示を探しだします。
「Retry」が見つかったら、これをクリックし「Retry画面」を開きます。
「Retry画面」開くとJobの実行に使われたJenkinsfile(Pipeline script)の内容が表示されます。
後は、このPipeline scriptを修正して、「Run」を押せば、修正したJenkinsfileの内容に則ってJobが実行されます。
注意点
便利な「Retry」ですが何点か注意するべきことがあります。
①Retry画面に表示されるのはPipeline scriptとして認識されたもののみ
1点目は、Pipeline scriptとして認識されたものしかRetryできません。
例えば、構文エラーでそもそもPipeline scriptとして評価されない場合はRetryにScriptが表示されません。
②履歴の「Retry」なのでパラメータを使う場合は基本的に自由に設定できない。
もう1点はあくまで履歴の「Retry」機能なので基本的にはパラメータはすべて引き継がれてしまいます。 そのため、条件分岐式をテストしたい場合などは、十分なTry & Errorを行うことができません。