
OpenTacoのカスタムコマンドの出力をPull Requestのコメントに出力したいときは環境変数$DIGGER_OUTを使う
以前OpenTacoでポリシーテストを試してみました。
この仕組みではカスタムコマンドでconftestを実行して、ポリシーテストを実現しました。
カスタムコマンドの結果はデフォルトでは、Pull Requestのコメントには出力されません。
$DIGGER_OUT環境変数を使うことで、コメントに出力できます。
このブログでは、カスタムコマンドでconftestを実行した場合を例に、DIGGER_OUTを使ってconftestの結果をコメント出力してみます。
$DIGGER_OUTとは
$DIGGER_OUTは、カスタムコマンドが実行結果を出力するためのファイルパスを指定する環境変数です。
DIGGER_OUTで指定されたファイルに書き込まれた内容は、自動的にコメントに「追加出力」として追記されます。
digger.ymlに$DIGGER_OUTの追加
以下のようにdigger.ymlに追記します。
projects:
- name: production
dir: prod
workflow: my_custom_workflow
workflows:
my_custom_workflow:
plan:
steps:
- init:
- plan:
- run: "terraform show -json $DIGGER_PLANFILE > prod.json"
- run: "conftest test ./prod.json -p ../policies --no-color | tee -a $DIGGER_OUT" # $DIGGER_OUTの追加
# - run: "conftest test ./prod.json -p ../policies --no-color
workflow_configuration:
on_pull_request_pushed: [digger plan]
on_pull_request_closed: [digger unlock]
on_commit_to_default: [digger apply]
tee -a $DIGGER_OUTで標準出力とファイルに出力しています。
これにより、Pull Requestのコメントに結果が表示されるだけでなく、GitHub Actionsログでも実行内容を確認できるため、トラブルシューティング時に便利です。
conftestの--no-colorオプションは、出力のANSIエスケープコード表示問題対策です。
デフォルトでは、conftestはANSIエスケープコードで出力に色付けを行います。
Pull Requestのコメント上では、ANSIエスケープコードが制御コードとして解釈されず、そのまま文字として表示されるため、以下のように意図しない表示になります。
�[32m1 test, 1 passed, 0 warnings, 0 failures, 0
exceptions�[0m
動作確認: Pull Requestのコメントを確認
最後にPull Requestのコメントを確認してみます。
先ほどのdigger.ymlをPushすると以下のようにAdditional outputに表示されることを確認できました。

おわりに
DIGGER_OUTを使ったカスタムコマンド結果のコメント出力についてでした。
今回はconftestを例にしましたが、terraform-docsやInfracost、セキュリティスキャンツールなど様々な場面で活用できます。
Diggerのカスタムコマンドをより効果的に使う参考になれば幸いです。







