CI workflow (hackjutsu/Lepton)
The CI workflow from hackjutsu/Lepton, explained and optimized by Latchkey.
CI health: C - fair
Point runs-on at Latchkey and get run de-duplication, job timeouts, self-healing for flaky steps, and up to 58% lower cost, applied automatically.
What it does
This is the CI workflow from the hackjutsu/Lepton 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
name: CI
on:
push:
branches:
- master
- dev
pull_request:
types:
- opened
- reopened
- synchronize
- ready_for_review
jobs:
lint-test-build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up Node
uses: actions/setup-node@v5
with:
node-version-file: .nvmrc
cache: npm
- name: Install npm 11
run: npm install -g npm@11
- name: Install dependencies
run: npm ci
- name: Lint
run: npm run lint
- name: Unit tests
run: npm run test:unit
- name: Build verification
run: npm run test:build
electron-smoke:
runs-on: ubuntu-latest
continue-on-error: true
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up Node
uses: actions/setup-node@v5
with:
node-version-file: .nvmrc
cache: npm
- name: Install npm 11
run: npm install -g npm@11
- name: Install dependencies
run: npm ci
- name: Electron render smoke test
env:
LEPTON_SMOKE_NO_SANDBOX: '1'
run: xvfb-run --auto-servernum npm run test:smoke
- name: Electron login-flow smoke test
env:
LEPTON_SMOKE_NO_SANDBOX: '1'
run: xvfb-run --auto-servernum npm run test:login-flow
packaged-smoke:
runs-on: macos-latest
continue-on-error: true
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up Node
uses: actions/setup-node@v5
with:
node-version-file: .nvmrc
cache: npm
- name: Install npm 11
run: npm install -g npm@11
- name: Install dependencies
run: npm ci
- name: Packaged Electron smoke test
env:
CSC_FOR_PULL_REQUEST: 'true'
run: npm run test:packaged-smoke
The same workflow, on Latchkey
Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.
name: CI on: push: branches: - master - dev pull_request: types: - opened - reopened - synchronize - ready_for_review concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: lint-test-build: timeout-minutes: 30 runs-on: latchkey-small steps: - name: Checkout uses: actions/checkout@v5 - name: Set up Node uses: actions/setup-node@v5 with: node-version-file: .nvmrc cache: npm - name: Install npm 11 run: npm install -g npm@11 - name: Install dependencies run: npm ci - name: Lint run: npm run lint - name: Unit tests run: npm run test:unit - name: Build verification run: npm run test:build electron-smoke: timeout-minutes: 30 runs-on: latchkey-small continue-on-error: true steps: - name: Checkout uses: actions/checkout@v5 - name: Set up Node uses: actions/setup-node@v5 with: node-version-file: .nvmrc cache: npm - name: Install npm 11 run: npm install -g npm@11 - name: Install dependencies run: npm ci - name: Electron render smoke test env: LEPTON_SMOKE_NO_SANDBOX: '1' run: xvfb-run --auto-servernum npm run test:smoke - name: Electron login-flow smoke test env: LEPTON_SMOKE_NO_SANDBOX: '1' run: xvfb-run --auto-servernum npm run test:login-flow packaged-smoke: timeout-minutes: 30 runs-on: macos-latest continue-on-error: true steps: - name: Checkout uses: actions/checkout@v5 - name: Set up Node uses: actions/setup-node@v5 with: node-version-file: .nvmrc cache: npm - name: Install npm 11 run: npm install -g npm@11 - name: Install dependencies run: npm ci - name: Packaged Electron smoke test env: CSC_FOR_PULL_REQUEST: 'true' run: npm run test:packaged-smoke
What changed
- Run on Latchkey managed runners with one line (
runs-on), which apply the fixes below automatically and self-heal transient failures. This example useslatchkey-small; pick the runner size that fits the job. - Cancel superseded runs when a branch or PR gets a newer push.
- Add a job timeout so a hung step cannot burn hours of runner time.
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:
- Dependency installs
This workflow runs 3 jobs per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.