Skip to content
Latchkey

Publish Release to npm workflow (11ty/buildawesome)

The Publish Release to npm workflow from 11ty/buildawesome, explained and optimized by Latchkey.

C

CI health: C - fair

Point runs-on at Latchkey and get caching, job timeouts, self-healing for flaky steps, and up to 58% lower cost, applied automatically.

Grade your own workflow free or run it on Latchkey →
Source: 11ty/buildawesome.github/workflows/release.ymlLicense MITView source

What it does

This is the Publish Release to npm workflow from the 11ty/buildawesome repository, a real project running GitHub Actions. It is shown here with attribution under its MIT license.

Below, Latchkey shows a faster, safer version produced by its optimization engine.

The workflow

workflow (.yml)
name: Publish Release to npm
on:
  release:
    types: [published]
permissions: read-all
jobs:
  release:
    # see https://github.com/11ty/buildawesome/settings/environments
    environment: GitHub Publish
    runs-on: ubuntu-latest
    permissions:
      contents: read
      id-token: write
    steps:
      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # 7.0.0
      - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # 6.4.0
        with:
          node-version: "22"
          registry-url: 'https://registry.npmjs.org'
          # Explicit opt out of cache (tanstack cache poison vuln)
          package-manager-cache: false
      - run: npm install -g npm@latest
      - if: ${{ github.event.release.tag_name != '' && env.NPM_ELEVENTY_PUBLISH_TAG != '' && env.NPM_BUILDAWESOME_PUBLISH_TAG != '' }}
        # Also runs npm ci and npm test
        run: ./scripts/release.sh
        env:
          NPM_ELEVENTY_PUBLISH_TAG: ${{ contains(github.event.release.tag_name, '-beta.') && 'beta' || contains(github.event.release.tag_name, '-alpha.') && 'canary' || 'latest' }}
          NPM_BUILDAWESOME_PUBLISH_TAG: ${{ contains(github.event.release.tag_name, '-beta.') && 'beta' || contains(github.event.release.tag_name, '-alpha.') && 'alpha' || 'latest' }}

The same workflow, on Latchkey

Estimated ~20% faster on cache hits, plus fewer wasted runs and a safer supply chain. Added and changed lines are highlighted.

name: Publish Release to npm
on:
  release:
    types: [published]
permissions: read-all
jobs:
  release:
    timeout-minutes: 30
    # see https://github.com/11ty/buildawesome/settings/environments
    environment: GitHub Publish
    runs-on: latchkey-small
    permissions:
      contents: read
      id-token: write
    steps:
      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # 7.0.0
      - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # 6.4.0
        with:
          cache: 'npm'
          node-version: "22"
          registry-url: 'https://registry.npmjs.org'
          # Explicit opt out of cache (tanstack cache poison vuln)
          package-manager-cache: false
      - run: npm install -g npm@latest
      - if: ${{ github.event.release.tag_name != '' && env.NPM_ELEVENTY_PUBLISH_TAG != '' && env.NPM_BUILDAWESOME_PUBLISH_TAG != '' }}
        # Also runs npm ci and npm test
        run: ./scripts/release.sh
        env:
          NPM_ELEVENTY_PUBLISH_TAG: ${{ contains(github.event.release.tag_name, '-beta.') && 'beta' || contains(github.event.release.tag_name, '-alpha.') && 'canary' || 'latest' }}
          NPM_BUILDAWESOME_PUBLISH_TAG: ${{ contains(github.event.release.tag_name, '-beta.') && 'beta' || contains(github.event.release.tag_name, '-alpha.') && 'alpha' || 'latest' }}
 

What changed

What Latchkey heals here

This workflow has steps that commonly fail on transient issues (network, registries, flaky browsers). On Latchkey managed runners they are detected, retried, and self-healed instead of failing your build:

This workflow runs 1 job per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.

Actions used in this workflow