TrivyをJenkinsから実行してみよう
前回の投稿では、Trivyをコマンドラインから実行しましたが、
今回はCIツールであるJenkinsからTrivyを実行してみたいと思います。
Jenkinsジョブの作成
まずは、Jenkinsジョブを作成します。今回はパイプラインジョブを選択します。
パイプラインコードの入力
次に、Trivyを実行するコマンドをパイプラインコードに入力します。
- パイプラインコード
1 2 3 4 5 |
node { stage('Image Scan') { sh label: '', script: 'trivy image nginx:1.19.0' } } |
パイプラインコード以外の入力/選択項目は全てデフォルトのままでOKです。
前回と同様に「nginx:1.19.0」をスキャンしてみます。
※実際の運用では、ジョブ内でDocker buildしたコンテナイメージをスキャンする運用になると思います。
ジョブの実行
では、実行してみましょう。
あれっ、ジョブが失敗してしまいましたね。ログを見てみましょう。
trivyコマンドが見つからないことが原因のようですね。
1 |
trivy: command not found |
Trivyはデフォルトでは、
/usr/local/bin
にインストールされるので、jenkinsアカウントのPATHに上記ディレクトリを追加する必要があるようです。
Pathの追加
jenkinsアカウントのPATHにディレクトリを追加するには
Jenkinsの管理 -> システムの設定 -> グローバルプロパティ
にて、
- キー:PATH+EXTRA
- 値:追加したディレクトリ
を設定するのが一番簡単な方法です。
ジョブの再実行
では、PATHの追加を行った後、早速ジョブを実行してみましょう。
今度は、ジョブが成功しましたね。
スキャン結果の確認
コンソールログを確認してみると、
Trivyをコマンドで実行したときと同様のスキャン結果が表示されていることが確認できます。
無事、JenkinsジョブからTrivyを実行できましたね。
実際の運用では
実際の運用では、スキャン結果に応じて、ジョブを成功にしたり、失敗にしたりと制御を入れることになると思います。
そのあたりの実装方法については、
Trivy公式ページの「exit codeの説明」を参考に実装してみると良いと思います。