コンテンツにスキップ
Zenn Dev Kou Pg 0131 Articles Ghats Introduction

TypeScript で GitHub Actions ワークフローを記述する「ghats」の紹介

  • URL: https://zenn.dev/kou_pg_0131/articles/ghats-introduction
  • 日付: 2026-06-26
  • Tier: Tier 3
  • 要旨: TypeScript で GitHub Actions ワークフローを記述して YAML にビルドする ghats が公開された。Workflow クラスと Job クラスを使ってワークフローを定義し ghats build を実行すると YAML が生成される。ghats install <action> でリモートアクションをインストールすると型補完が有効になり、action() 関数を通じて使用するとビルド時にコミット SHA が自動で固定される仕組みを持つ。アクションのバージョン管理は actions.json に記録され actions-lock.json にコミット SHA が保存される。

詳細

インストール: npm install -D ghats

基本的な使い方:

  • ワークフロー定義ファイルは .github/workflows/*.ts に作成する
  • WorkflowJobghats からインポートして定義
  • ghats build でワークフロー YAML をビルド(生成ファイルは自動生成コメント付き)

リモートアクションの型サポート:

  • npx ghats install actions/checkout でアクションをインストール
  • action() 関数を使ってリモートアクションを参照すると入力値の型補完が効く
  • ビルド時にコミット SHA が自動で固定されるため、ワークフロー定義内でバージョンを明示的に指定しなくてよい

生成されるファイル:

  • .github/workflows/actions.json — インストールしたアクションとバージョンの対応
  • .github/workflows/actions-lock.json — コミット SHA のロックファイル

セキュリティ上の意義:

  • Git タグは書き換えられる可能性があるためコミット SHA 固定が推奨されているが、手動での管理は手間がかかる
  • ghats を使えばバージョン指定は actions.json で一元管理でき、ビルド時の SHA 固定が自動化される

ghats 自体のリポジトリの GitHub Actions ワークフローも ghats で記述されている。