tfupdate の GitHub Action を GitHub Marketplace に公開 しました。

新規作成したわけではなく、daisaru11/tfupdate-github-actions の Fork 版です。

なぜ Fork 版を作ったのか

Git v2.35.2 以降に入った CVE-2022-24765 対応 により、daisaru11/tfupdate-github-actions は 1 年以上壊れた状態でした。

当時は仕事で Terraform を使うことはなく、個人で細々と使っていた程度だったので、この GitHub Action を使うのは止めて、Terraform 本体は毎月リマインダーを仕掛けて手動アップデート、Terraform provider は Dependabot に任せてました。

今の会社に入って、3~4 年ぶりに Terraform のコードを書くようになり、自動アップデートの仕組みを入れたいな、GitHub Action 直さないとなと思ったのが経緯です。

なぜ GitHub Marketplace に公開したのか

その方が公益性があると思ったからです。

Fork 元の daisaru11/tfupdate-github-actions は GitHub Marketplace に公開 されています。それ自体はありがたいことでしたが、残念ながら壊れており、修正もされない雰囲気1でした。

GitHub Action は、Marketplace に公開しなくても普通に使えます。しかしながら、修正版の存在に気づくのは難しいですし、Marketplace を tfupdate で検索した時に、壊れたものだけヒットするのは良くないのでは?と思ったことが経緯です。

今は 2 つヒットする ので、少なくとも存在には気づけるでしょう。

tfupdate GitHub Action on GitHub Marketplace

何を変更したのか?

v2.0.0 では、前述の 1 つの Critical なバグと、2 つの軽微なバグを修正しました。

加えて、tfupdate_path を指定した時に、PR タイトルとブランチ名に反映するようにしました。モノレポ戦略を取っていて、複数の PR に分けたい用途を想定しています。

v2.1.0 では PR に assignees を設定できるようにしました。

今後の予定

積極的に機能拡張する予定はありません。

ただ、仕事の Terraform コードでは terraform-aws-modules/s3-bucket 等の公式モジュールも使っていたので、tfupdate の module サブコマンドにも対応するかもしれません。tfupdate で期待通りのアップデートが出来るかどうかは未確認です。

追記: Dependabot は terraform module もアップデートしてくれたので、何もしないことにしました。

おまけ: 私の Terraform コードの自動アップデート方法

  • Terraform 本体
    • .terraform-version ファイルと、Terraform コード内の terraform.required_version は、今回の masutaka/tfupdate-github-actions でアップデートする
  • Terraform provider
    • .terraform.lock.hcl ファイル内の provider.version は、Dependabot にアップデートを任せる
    • Terraform コード内の terraform.required_providers ではバージョンを設定していない
  • Terraform module
    • 公式モジュール利用箇所の module.XXXX.version は、Dependabot にアップデートを任せる

実は今回の GitHub Action は Terraform 本体のアップデートにしか使っていません。


  1. 作者の方に Twitter や GitHub で連絡は試みました ↩︎