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 のコードを確認