Deploy Docs workflow (earthtojake/text-to-cad)
The Deploy Docs workflow from earthtojake/text-to-cad, explained and optimized by Latchkey.
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.
What it does
This is the Deploy Docs workflow from the earthtojake/text-to-cad 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: Deploy Docs
on:
workflow_dispatch:
inputs:
ref:
description: Production-layout ref to deploy, normally main or a publish commit.
required: true
default: main
type: string
workflow_call:
inputs:
ref:
description: Production-layout ref to deploy.
required: true
type: string
permissions:
contents: read
concurrency:
group: deploy-docs
cancel-in-progress: false
jobs:
deploy:
name: Deploy docs app
runs-on: ubuntu-latest
steps:
- name: Check out deploy ref
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref }}
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "22"
- name: Install Vercel CLI
run: npm install --global vercel@50.28.0
- name: Deploy docs app to Vercel production
env:
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
VERCEL_DOCS_PROJECT_ID: ${{ secrets.VERCEL_DOCS_PROJECT_ID }}
run: |
for name in VERCEL_TOKEN VERCEL_ORG_ID VERCEL_DOCS_PROJECT_ID; do
if [ -z "${!name:-}" ]; then
echo "Missing GitHub Actions secret: $name" >&2
exit 1
fi
done
scripts/github-workflows/deploy-vercel-app.sh \
--label "Docs app" \
--project-id "$VERCEL_DOCS_PROJECT_ID" \
--public-urls "https://www.cadskills.xyz https://cadskills.xyz https://www.cad.fun https://cad.fun"
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: Deploy Docs on: workflow_dispatch: inputs: ref: description: Production-layout ref to deploy, normally main or a publish commit. required: true default: main type: string workflow_call: inputs: ref: description: Production-layout ref to deploy. required: true type: string permissions: contents: read concurrency: group: deploy-docs cancel-in-progress: false jobs: deploy: timeout-minutes: 30 name: Deploy docs app runs-on: latchkey-small steps: - name: Check out deploy ref uses: actions/checkout@v4 with: ref: ${{ inputs.ref }} persist-credentials: false - name: Set up Node.js uses: actions/setup-node@v4 with: cache: 'npm' node-version: "22" - name: Install Vercel CLI run: npm install --global vercel@50.28.0 - name: Deploy docs app to Vercel production env: VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} VERCEL_DOCS_PROJECT_ID: ${{ secrets.VERCEL_DOCS_PROJECT_ID }} run: | for name in VERCEL_TOKEN VERCEL_ORG_ID VERCEL_DOCS_PROJECT_ID; do if [ -z "${!name:-}" ]; then echo "Missing GitHub Actions secret: $name" >&2 exit 1 fi done scripts/github-workflows/deploy-vercel-app.sh \ --label "Docs app" \ --project-id "$VERCEL_DOCS_PROJECT_ID" \ --public-urls "https://www.cadskills.xyz https://cadskills.xyz https://www.cad.fun https://cad.fun"
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. - Cache dependency installs on the setup step so they are served from cache.
- 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 1 job per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.