Skip to content
Latchkey

publish-production workflow (serversideup/amplitudejs)

The publish-production workflow from serversideup/amplitudejs, explained and optimized by Latchkey.

C

CI health: C - fair

Run this on Latchkey for self-healing, caching, and up to 58% lower cost.

Grade your own workflow free or run it on Latchkey →
Source: serversideup/amplitudejs.github/workflows/publish-production.yamlLicense MITView source

What it does

This is the publish-production workflow from the serversideup/amplitudejs 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-production

on:
  release:
    types: [released]

jobs:
  publish:
    runs-on: ${{ matrix.os }}

    strategy:
      matrix:
        os: [ubuntu-latest]
        node: [14]
      fail-fast: true

    steps:
    - name: Setup Node.js
      uses: actions/setup-node@v2
      with:
        node-version: ${{ matrix.node }}
        registry-url: https://registry.npmjs.org/

    - name: checkout
      uses: actions/checkout@v2

    - name: Install dependencies
      run: yarn install --frozen-lockfile

    - name: Build
      run: yarn build

    - name: Test
      run: yarn test

    - name: Publish PRODUCTION build
      run: npm publish
      env:
        NODE_AUTH_TOKEN: ${{secrets.NODE_AUTH_TOKEN_SECRET}}
  

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-production
 
on:
  release:
    types: [released]
 
jobs:
  publish:
    timeout-minutes: 30
    runs-on: ${{ matrix.os }}
 
    strategy:
      matrix:
        os: [ubuntu-latest]
        node: [14]
      fail-fast: true
 
    steps:
    - name: Setup Node.js
      uses: actions/setup-node@v2
      with:
        cache: 'npm'
        node-version: ${{ matrix.node }}
        registry-url: https://registry.npmjs.org/
 
    - name: checkout
      uses: actions/checkout@v2
 
    - name: Install dependencies
      run: yarn install --frozen-lockfile
 
    - name: Build
      run: yarn build
 
    - name: Test
      run: yarn test
 
    - name: Publish PRODUCTION build
      run: npm publish
      env:
        NODE_AUTH_TOKEN: ${{secrets.NODE_AUTH_TOKEN_SECRET}}
  

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