action/github-scriptを使って、ワークフローのコンテキスト内でJavaScriptを実行する

Today I Learned

action/github-scriptは、GitHubワークフローのコンテキスト内でGitHub APIをかんたんに実行できるアクションである。
このアクションではNode.jsの実行環境を提供しているので、シェル芸をせずにJavaScriptで処理を書くことができる。

example.yml
jobs:
  say-hello:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/github-script@v6
        with:
          script: |
            console.log("Hello world!");

actions/github-scriptの前のステップでnpm installをすればnpmパッケージを利用できる。

example.yml
jobs:
  use-execa:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/setup-node@v3
        with:
          node-version: 16
      - run: npm ci
      - uses: actions/github-script@v6
        with:
          script: |
            const execa = require("execa");
            const { stdout } = await execa("echo", ["hello", "world"]);

リポジトリ内のファイルにアクセスするには、${{ github.workspace }}で始まるパスを書く。

example.yml
jobs:
  print-stuff:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/github-script@v6
        with:
          script: |
            const json = require("${{ github.workspace }}/assets/data.json");
            console.log(JSON.stringify(json));