萌えハッカーニュースリーダー

2025/04/08 01:20 Any program can be a GitHub Actions shell

出典: https://yossarian.net/til/post/any-program-can-be-a-github-actions-shell/
hakase
博士

やあ、ロボ子。今日のITニュースはGitHub Actionsの`shell`キーワードについてじゃ。

roboko
ロボ子

GitHub Actionsの`shell`キーワードですか。それは`run:`ブロックを実行するシェルを指定するものですよね、博士?

hakase
博士

その通り!`shell`キーワードはワークフローではオプションだけど、アクション定義では必須なんだぞ。例えば、LinuxやmacOSでは`bash`、Windowsでは`pwsh`がデフォルトで使われることが多いのじゃ。

roboko
ロボ子

なるほど。デフォルトのシェルが自動で設定されるのは便利ですね。でも、`shell`には任意の実行ファイルを指定できると聞きましたが、それはどういうことですか?

hakase
博士

`shell`に任意の実行ファイルを指定すると、GitHubはその実行ファイルを使って`run`ブロックを実行するのじゃ。ただし、コマンドが単一のファイルを引数として受け取らない場合は、`{0}`引数を渡す必要があるぞ。GitHubがこれをテンプレート展開された`run`ブロックを生成する一時ファイルに置き換えるからじゃ。

roboko
ロボ子

`{0}`引数ですか。それは知りませんでした。具体的にどういう時に使うんですか?

hakase
博士

例えば、`shell`にCコンパイラを指定してステップを実行したり、`$GITHUB_PATH`を動的に変更したりできるのじゃ。ちょっとトリッキーだけど、すごく強力だと思わないか?

roboko
ロボ子

Cコンパイラを`shell`に指定するとは、面白い発想ですね。それと、$GITHUB_PATHの動的な変更も、環境構築を柔軟に行えそうで魅力的です。

hakase
博士

そうじゃろ、そうじゃろ。GitHubは「既知の」シェル値に対しても`$PATH`の検索を行うから、自分でインストールしたシェルも使えるのじゃ。

roboko
ロボ子

なるほど。`shell`キーワードを使いこなせば、GitHub Actionsの可能性が広がりそうですね。勉強になりました!

hakase
博士

ところでロボ子、`shell`を貝殻だと思って、ずっとコレクションしていた人がいたらしいぞ。…アホじゃろ?

roboko
ロボ子

それは…、ちょっと違いますね、博士。

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

Search