Skip to content
Latchkey

Publish to npm workflow (andrewyng/context-hub)

The Publish to npm workflow from andrewyng/context-hub, 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: andrewyng/context-hub.github/workflows/publish.ymlLicense MITView source

What it does

This is the Publish to npm workflow from the andrewyng/context-hub 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 to npm

on:
  release:
    types: [created]

jobs:
  publish:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      id-token: write
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
          registry-url: 'https://registry.npmjs.org'
      - run: npm install
      - run: cd cli && npm test
      - name: Verify versioned help is already live on the CDN
        run: |
          CLI_VERSION=$(node -e "const fs = require('node:fs'); console.log(JSON.parse(fs.readFileSync('cli/package.json', 'utf8')).version)")
          export CLI_VERSION
          for attempt in $(seq 1 30); do
            if curl --fail --silent --show-error --location \
              "https://cdn.aichub.org/v1/help/${CLI_VERSION}.json" \
              -o /tmp/chub-help.json; then
              if node -e 'const fs = require("node:fs"); const version = process.env.CLI_VERSION; const payload = JSON.parse(fs.readFileSync("/tmp/chub-help.json", "utf8")); if (payload.cli_version !== version) { console.error(`Expected cli_version ${version}, got ${payload.cli_version}`); process.exit(1); } if (typeof payload.content !== "string" || payload.content.trim().length === 0) { console.error("Remote help payload is empty"); process.exit(1); }'; then
                exit 0
              fi
            fi

            if [ "$attempt" -eq 30 ]; then
              echo "Timed out waiting for https://cdn.aichub.org/v1/help/${CLI_VERSION}.json to become available" >&2
              exit 1
            fi

            sleep 10
          done
      - run: cd cli && npm publish --access public
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

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 to npm
 
on:
  release:
    types: [created]
 
jobs:
  publish:
    timeout-minutes: 30
    runs-on: latchkey-small
    permissions:
      contents: read
      id-token: write
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          cache: 'npm'
          node-version: 22
          registry-url: 'https://registry.npmjs.org'
      - run: npm install
      - run: cd cli && npm test
      - name: Verify versioned help is already live on the CDN
        run: |
          CLI_VERSION=$(node -e "const fs = require('node:fs'); console.log(JSON.parse(fs.readFileSync('cli/package.json', 'utf8')).version)")
          export CLI_VERSION
          for attempt in $(seq 1 30); do
            if curl --fail --silent --show-error --location \
              "https://cdn.aichub.org/v1/help/${CLI_VERSION}.json" \
              -o /tmp/chub-help.json; then
              if node -e 'const fs = require("node:fs"); const version = process.env.CLI_VERSION; const payload = JSON.parse(fs.readFileSync("/tmp/chub-help.json", "utf8")); if (payload.cli_version !== version) { console.error(`Expected cli_version ${version}, got ${payload.cli_version}`); process.exit(1); } if (typeof payload.content !== "string" || payload.content.trim().length === 0) { console.error("Remote help payload is empty"); process.exit(1); }'; then
                exit 0
              fi
            fi
 
            if [ "$attempt" -eq 30 ]; then
              echo "Timed out waiting for https://cdn.aichub.org/v1/help/${CLI_VERSION}.json to become available" >&2
              exit 1
            fi
 
            sleep 10
          done
      - run: cd cli && npm publish --access public
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
 

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