Skip to content
Latchkey

lint_coffeescript workflow (open-duelyst/duelyst)

The lint_coffeescript workflow from open-duelyst/duelyst, explained and optimized by Latchkey.

D

CI health: D - needs work

Point runs-on at Latchkey and get caching, run de-duplication, 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: open-duelyst/duelyst.github/workflows/lint_coffeescript.yamlLicense CC0-1.0View source

What it does

This is the lint_coffeescript workflow from the open-duelyst/duelyst repository, a real project running GitHub Actions. It is shown here with attribution under its CC0-1.0 license.

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

The workflow

workflow (.yml)
name: lint_coffeescript

on:
  push:
    branches:
    - main
  pull_request:
    paths:
      - app/**.coffee
      #- cli/**.coffee
      #- scripts/**.coffee
      - server/**.coffee
      - worker/**.coffee

jobs:
  linting:
    runs-on: ubuntu-latest
    steps:
    - name: check out code
      uses: actions/checkout@v3

    - name: install system dependencies
      run: sudo apt install -y libpng-dev

    - name: install node.js
      uses: actions/setup-node@v3
      with:
        node-version: 24

    # Caching node_modules saves 50s on builds which don't modify dependencies.
    # Compared to yarn caching, it saves an additional 27 seconds.
    - name: cache node_modules
      uses: actions/cache@v3
      with:
        path: /home/runner/work/duelyst/duelyst/node_modules
        key: node-modules-${{ hashFiles('**/yarn.lock') }}
        restore-keys: |
          node-modules-

    - name: enable corepack
      run: corepack enable

    - name: install node dependencies
      run: yarn workspaces focus

    - name: compile typescript dependencies
      run: yarn tsc:chroma-js

    - name: lint coffeescript code
      run: yarn lint:coffee app server worker # excludes cli, scripts

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: lint_coffeescript
 
on:
  push:
    branches:
    - main
  pull_request:
    paths:
      - app/**.coffee
      #- cli/**.coffee
      #- scripts/**.coffee
      - server/**.coffee
      - worker/**.coffee
 
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true
 
jobs:
  linting:
    timeout-minutes: 30
    runs-on: latchkey-small
    steps:
    - name: check out code
      uses: actions/checkout@v3
 
    - name: install system dependencies
      run: sudo apt install -y libpng-dev
 
    - name: install node.js
      uses: actions/setup-node@v3
      with:
        cache: 'npm'
        node-version: 24
 
    # Caching node_modules saves 50s on builds which don't modify dependencies.
    # Compared to yarn caching, it saves an additional 27 seconds.
    - name: cache node_modules
      uses: actions/cache@v3
      with:
        path: /home/runner/work/duelyst/duelyst/node_modules
        key: node-modules-${{ hashFiles('**/yarn.lock') }}
        restore-keys: |
          node-modules-
 
    - name: enable corepack
      run: corepack enable
 
    - name: install node dependencies
      run: yarn workspaces focus
 
    - name: compile typescript dependencies
      run: yarn tsc:chroma-js
 
    - name: lint coffeescript code
      run: yarn lint:coffee app server worker # excludes cli, scripts
 

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