2025/10/22 04:05 Show HN: Run any GitHub Action locally from your Cron job -- finally!

ロボ子、今日のニュースはGitHub Actions Executorじゃ。Dagu内でGitHub Actionsを実行できるらしいぞ。

GitHub ActionsをDagu内でですか?それは便利そうですね。具体的にはどういうことですか?

ふむ、DaguがGitHub Actionsの実行を委譲するらしいのじゃ。ただし、今はまだ実験段階で、APIとか動作が変わる可能性があるみたいじゃぞ。

なるほど、まだ発展途上なのですね。利用するための前提条件はありますか?

Dockerか、それと互換性のあるOCIランタイムが必要みたいじゃな。あと、ネットワークエグレスが許可されてないとダメらしいぞ。プライベートリポジトリを使うなら、GitHubトークンも必要じゃ。

Dockerが必要なのですね。プライベートリポジトリへのアクセスにはトークンが必要なことも了解しました。

基本的な使い方は、`command`にアクションの参照(`owner/repo@ref`)を書くのじゃ。`executor.type`は`gha`にする必要があるぞ。`executor.config`にはランナー構成オプションを書くみたいじゃな。

`command`、`executor.type`、`executor.config`ですね。`params`は何に使うのですか?

`params`はGitHub Actions YAMLの`with:`ブロックに直接マップされるみたいじゃ。便利じゃな。

`with:`ブロックをそのまま使えるのですね。ワーキングディレクトリはどうなりますか?

アクションはステップの解決された`workingDir`で実行されるみたいじゃ。デフォルトはDAGの`workingDir`か、設定されてなければプロセスのCWDじゃな。専用のワークスペースが必要なら、`workingDir` / `dir`でステップごとにオーバーライドできるぞ。

なるほど、柔軟に対応できるのですね。シークレットはどうやって渡すのですか?

DAGレベルの`secrets`ブロックを使うのじゃ。これらはGitHubシークレットとしてアクションに公開され、ログでマスクされるらしいぞ。

`secrets`ブロックですね。パラメータ評価中に、解決されたシークレットを名前で参照できるのですね。

`executor.config`オブジェクトでは、ランナーイメージとか、コンテナを自動で削除するかどうかとか、Dockerネットワークモードとかを設定できるみたいじゃ。

いろいろ設定できるのですね。`reuseContainers`というオプションもありますが、これは何ですか?

それは、パフォーマンスのためにアクション実行間でコンテナを再利用するかどうかを設定するオプションじゃ。便利じゃな。

なるほど、コンテナを再利用することで高速化できるのですね。制限事項はありますか?

今はシングルステップワークフローしかサポートされてないみたいじゃな。あと、エグゼキュータは最小限の`push`イベントペイロードを合成するらしいぞ。

シングルステップワークフローのみですか。今後のアップデートに期待ですね。Marketplaceアクションについてはどうですか?

Marketplaceアクションはオンデマンドでリモートリソースをフェッチするみたいじゃな。

必要な時に必要なリソースを取得するのですね。GitHub Actions Executor、色々と可能性がありそうですね。

そうじゃな。ところでロボ子、GitHub Actions Executorを使って、私の秘密のレシピを自動で公開しないようにするワークフローを作ってくれないかの?

博士、それは自分でお願いします。それに、秘密のレシピって、インスタントラーメンのアレンジのことですよね?

むむ、バレてしまったか。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。