📝

container-structure-testによるコンテナのテスト

2023/01/21に公開

Googleが作成しているcontainer-structure-testというコンテナをテストするツールを試したのでメモ。
かなり単純なツールなのでぶっちゃけREADMEに書いてあることを読めばわかるんだけど一応情報をまとめた。

https://github.com/GoogleContainerTools/container-structure-test

Googleのブログで紹介されている記事はこちら。

https://opensource.googleblog.com/2018/01/container-structure-tests-unit-tests.html

container-structure-test について

  • コンテナイメージにあるファイルやコマンドの実行結果などをテストするツール
  • yamlやjson形式で書いた設定ファイルを元に書いた設定を満たしているかのテストをコンテナイメージに対して行うことができる
  • テスト可能な項目は下記
    • commandTests: コマンドを実行して出力結果などをチェックできる
    • fileExistenceTests: 指定のファイルやフォルダが存在しているかと、その権限などのチェックができる
    • fileContentTests: ファイルの中身をテストできる
    • metadataTest: コンテナのmetadataをテストできる(ラベルとか以外にもWORKDIRとかCMDなどもテストできる)
    • licenseTests: ライセンスファイルのテストができる
    • globalEnvVars: 環境変数のテストができる

インストール方法

https://github.com/GoogleContainerTools/container-structure-test#installation

にある通りバイナリをダウンロードして設置するだけ。

コマンドの実行例

下記のように

  • テスト対象のイメージ
  • テスト内容を記述した設定ファイル

を指定して実行するだけ。

$ container-structure-test test \
  --image gcr.io/registry/image:latest \
  --config config.yaml

実際の設定ファイル例

下記にテスト用の設定ファイルがある。
schemaVersion というのを指定しないとエラーになるので注意が必要。

https://github.com/GoogleContainerTools/container-structure-test/blob/v1.14.0/tests/amd64/ubuntu_20_04_test.yaml

感想

  • fileExistenceTests
  • metadataTest
  • globalEnvVars

あたりが結構よく使いそうなので、あまり難しいこと考えなくても雑にこのあたりの必要そうな項目だけチェックするのに使って良いと思った。
最近だとmulti-stage buildやmulti-platform buildとか、 ARGS を使って複雑なビルドをすることがあるので、Dockerfileを軽く読んだだけだとビルド結果が正しいかを保証できないことがあると思うので、とりあえず気になる点だけでもテストするのが良さそう。

Discussion