Skip to main content

tfnotify の parse error を通知する

· 2 min read
Shunsuke Suzuki

tfnotify が terraform の標準出力のパースに失敗してコメントを投稿できないことがあります。

コメントを投稿できなくてもビルドのログには残るのですが、やはりコメントを投稿できると便利なので、tfnotify がパースエラーでコメントの投稿に失敗したら、 github-comment でコメントを投稿するようにしました。

なお、この記事を書いている時点のバージョンは tfnotify v0.7.0, github-comment v1.9.0 です。

例えば tfnotify plan がパースエラーになった場合、 cannot parse plan result というメッセージが標準エラー出力されます。 そこで標準エラー出力に cannot parse plan result が含まれていたら github-comment でコメントするようにします。

terraform plan | github-comment exec -k plan -- tfnotify plan

.github-comment.yml

# 細かく template を分けているが、別に分けなくてもよい
templates:
# header は CodeBuild の場合
header: '{{Env "TARGET"}} [Build link]({{Env "CODEBUILD_BUILD_URL"}})'
exit_code: ':{{if eq .ExitCode 0}}white_check_mark{{else}}x{{end}}: Exit Code {{.ExitCode}}'
join_command: |
```
$ {{.JoinCommand}}
```
hidden_combined_output: |
<details>

<pre><code>{{.CombinedOutput}}</code></pre>

</details>
exec_default: |
{{template "header" .}}

{{template "exit_code" .}}

{{template "join_command" .}}

{{template "hidden_combined_output" .}}
exec:
plan:
- when: |
Stderr contains "cannot parse plan result"
template: |
{{template "exec_default" .}}

tfnotify apply の場合は cannot parse apply result というメッセージを出力するので 次のようになります。

terraform apply -auto-approve | github-comment exec -k apply -- tfnotify apply
exec:
apply:
- when: |
Stderr contains "cannot parse apply result"
template: |
{{template "exec_default" .}}

tfnotify のコードを確認