GitHub ActionsでGitHub Scriptを使ってみよう
はじめに GitHub Actionsを活用してCI/CDや各種自動化を行っていると、「特定の条件で処理を分岐したい」「IssueやPull Request(PR)に対して自動でコメントを投稿したい」といった、ちょっとした処理を柔軟に実行したくなる場面があります。 こうした細かなニーズに対応するために便利なのが GitHub Script です。GitHub Scriptを使えば、JavaScriptで簡潔にロジックを書き、GitHub APIを通じてさまざまな操作を実行できます。ワークフローの中に直接スクリプトを埋め込めるため、外部スクリプトの管理や複雑な設定も不要です。 本記事では、GitHub Scriptの基本的な仕組みから、具体的なユースケース、活用時のベストプラクティスまでを丁寧に解説します。「GitHub Actionsの中で、もう少し自由に処理を書きたい」と感じたことのある方は、ぜひ参考にしてみてください。 GitHub Scriptとは GitHub Scriptは、GitHubが公式に提供しているActionsのひとつで、JavaScriptを使ってGitHub APIやワークフローに手軽にアクセスできるのが特徴です。 actions/github-scriptという名前で公開されており、ワークフロー内で直接JavaScriptコードを記述して実行できます。 たとえば、「特定の条件でIssueにコメントしたい」「Pull Requestに応じてラベルを変更したい」といった処理を、非常に短いコードで柔軟に実現できます。通常であれば、curlや外部スクリプトを使って実装するような処理も、1つのステップで完結します。 ライブラリのインストールや外部ファイルの準備は不要で、実行環境にはあらかじめGitHubのAPIクライアント(Octokit)やワークフローの文脈情報(contextオブジェクト)が組み込まれているため、最小限の記述で自動化が可能です。 このように、GitHub Scriptは「ちょっとした自動化」を素早く、シンプルに実装したい場面で非常に有効なツールです。 GitHub Scriptを使わずに実現しようとする場合 GitHub ActionsでPull Requestにラベルを付けたり、Issueにコメントを残したりする処理は、curl や bash を使ってGitHub APIを直接操作する方法でも実現可能です。ただし、この方法には思わぬ手間が発生します。 たとえば、APIを呼び出すための認証トークンやヘッダーの設定、レスポンスの解析に使う jq、条件分岐やループ処理を書く bash など、複数のツールを組み合わせる必要があります。また、GitHubのイベント情報をシェルスクリプトで扱うには、環境変数の参照やJSONの加工が必要になり、実装が煩雑になりがちです。 こうした「ちょっとした処理」こそ、GitHub Scriptが得意とする分野です。次のセクションでは、その基本的な使い方を紹介します。 GitHub Scriptの基本的な使い方 GitHub Scriptを使うには、GitHubが公式に提供している actions/github-script を利用します。このActionを使うことで、JavaScript(Node.js)を記述し、GitHub APIやワークフローの情報に直接アクセスできます。 通常、GitHub APIを扱うには curl や jq などのツールを組み合わせる必要がありますが、GitHub Scriptを使えば、より簡潔に柔軟な処理を記述できます。 基本構成 - name: GitHub Scriptを使った処理 uses: actions/github-script@v7 with: script: | // JavaScriptコード スクリプト内では、以下の2つのオブジェクトがあらかじめ利用可能です。 github: GitHub REST APIクライアント(Octokitベース) context: 実行中のイベントやリポジトリ、Pull Request番号などの情報を含むオブジェクト Pull Requestにコメントを投稿する 以下は、Pull Request が作成されたときに、自動でコメントを投稿する例です。
Read more...