On Thu, May 07, 2020 at 08:17:27AM -0400, Jeff King wrote: > > But doesn't this (i.e. uses: actions/github-script) still pay the > > cost of spinning up a VM? How expensive is it to check out a small > > tree with a single file, whether it is ref-whitelist or allow-ref? > > I suspect this script mechanism may be much cheaper. I don't know the > implementation details, but spinning up a nodejs container to run a > javascript snippet should be much cheaper than a full ubuntu VM running > "git clone" (the clone itself should be super cheap because it's a > shallow single-branch clone of a tree with one file in it, but getting > there is relatively heavy-weight). Sorry, this is all complete nonsense. There is no magical nodejs container in Actions. You still have to say "runs-on: ubuntu-latest". So it's still spinning up that VM and then running inside there. I just did a timing with three jobs: noop: runs-on: ubuntu-latest steps: - run: exit 0 script: runs-on: ubuntu-latest steps: - uses: actions/github-script@0.9.0 with: script: | const req = { owner: context.repo.owner, repo: context.repo.repo, ref: "refs/ci/config" }; try { req.tree_sha = (await github.git.getRef(req)).data.object.sha; (await github.git.getTree(req)) .tree.filter(e => e.path == 'ref-whitelist').map(e => { req.file_sha = e.sha; }); const list = Buffer.from((await github.git.getBlob(req)).data.content, 'base64').toString('UTF-8'); core.setOutput('enabled', `\n${list}`.indexOf(`\n${{github.ref}}\n`) < 0 ? 'no' : 'yes'); } catch (e) { core.setOutput('enabled', 'yes'); } checkout: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 continue-on-error: true with: ref: refs/ci/config - run: ./allow-ref ${{ github.ref }} and they took 1, 2, and 3 seconds respectively. They spend 2s getting the environment set up and the actions loaded. So the API one spent less than 1s on the network, but the single-file checkout spent slightly more. Given the timing variations I've seen, I wouldn't be surprised if it sometimes goes the other way. But even if those numbers are accurate, I don't think the cost difference is enough to force our hand either way. -Peff