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 つヒットする ので、少なくとも存在には気づけるでしょう。
何を変更したのか?
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 本体のアップデートにしか使っていません。
-
作者の方に Twitter や GitHub で連絡は試みました ↩︎