#はじめに
記念すべき初投稿となる記事は、CI/CDツールでもよく利用されるJenkins Pipelineについて書きました。
今回、Qiitaに投稿しようと思ったきっかけは2つあります。
1つ目は、「学びはアウトプットする事が重要だよ」と先輩社員の方に言われ実際に行動に移してみようと思ったらからです。
2つ目は、JenkinsのPipelineをこれから使おうとしている人へ向けて、少しでも役に立てば良いなと思ったからです。
本記事を読めば、Jenkinsfileでよく使うディレクティブについて学ぶことができ、簡単なPipelineを作成できるようになると思います!!
#そもそもJenkinsとは何か?
下記のサイトに分かりやすくまとめられています。
#Pipelieneとは何か?
Jenkins2からPipelineという機能が標準採用され、PipelineコードをJenkinsfileに定義することで、今までUIでポチポチして定義していた各種タスクを、コードベース(Groovy)で定義できるようになりました。
Pipelineは2つの構文をサポートしています。
構文の違いは下記の記事で紹介されているので、確認してみてください。
#ジョブからの実行方法
- Jenkinsの左上の新規ジョブ作成をクリック
- ジョブ名を入力し、パイプラインをクリックし「OK」ボタンをクリック
- 各種設定を行い、一番下のPipelineにスクリプトを記載する
(短いスクリプトであればここに記載してもよいですが、バージョン管理やGit上で管理したい場合は、Shared Library(共有ライブラリ)を使用するのをお勧めします) - 作成完了したら「OK」をクリックし、実際にビルドを実行して動作確認をする
共有ライブラリ呼び出し方の例)
//masterブランチ使用する場合
@Library('sample(ライブラリ名)') _
//ブランチを指定したい場合
@Library('sample(ライブラリ名)@develop/#hogehoge') _
//以下に呼び出したい関数や操作/処理を記載する
pipeline {
def call()
}
#よく使うディレクティブ
本記事のメインであるJenkinsfileに使用する各ディレクティブを説明していきます。
関数定義
def call(引数1, 引数2) {
具体的な処理を記載
}
node
実行ノードを指定できる。実行マシンを指定するイメージです。
node('build'){
}
timestamps
コンソールに処理の実行時間を表示する。
timestamps{
}
stages/stage/steps
stagesがJenkins上に表示されるStage View部分の一つです。進捗を可視化してくれます。
stepが一つ一つの手順で、stageはそれの集まりです。
stages('Test'){
stage('Test No1'){
steps{
}
}
}
Gitを複数クローンする
Git上にあるリポジトリをworkspace上にクローンします。
複数のリポジトリをクローンする場合は、ディレクトリを別途作成します。
別で扱わなければ後からクローンしたほうが上書きしてしまうためです。
//ディレクトリを移動してからコマンドを叩くことが可能になります
dir('foo'){
//リポジトリとブランチを選択します
git url: 'GitのURL', branch: 'master'
}
シェル実行
sh 'cat testfile'
sh 'ls'
//複数行のシェルを実行する場合
"""
echo "start"
sh 'sh -x ファイル名.sh'
echo "end"
"""
Junit実行
//Junitテスト実行(gradle版)
gradlew test --tests テストファイル名
//テスト結果集計
junit '**/hoge/test/**.xml'
成果物保存
archiveArtifacts 'ファイル名'
パラメータを渡して後続のジョブを実行
build job: '後続のジョブ名'
//後続ジョブが失敗してもジョブを成功としたい場合
build job: '後続のジョブ名', propagation:false
parameters: [
string (name: "param1",value: "value1"
string (name: "param2",value: "value2"
//パラメータ付きビルドを利用してジョブ実行可能
]
#まとめ
今回は、Jenkinsfileでよく使用するディレクティブについて紹介しました。
Jenkinsには、pipeline syantaxという自動で構文を作成してくれる機能もあるので、活用してみるといいかもしれないです。
記事を読んでくれた方、ありがとうございました。