Skip to content
Latchkey

Push Docs workflow (libffcv/ffcv)

The Push Docs workflow from libffcv/ffcv, explained and optimized by Latchkey.

C

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.

Grade your own workflow free or run it on Latchkey →
Source: libffcv/ffcv.github/workflows/main.ymlLicense Apache-2.0View source

What it does

This is the Push Docs workflow from the libffcv/ffcv repository, a real project running GitHub Actions. It is shown here with attribution under its Apache-2.0 license.

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

The workflow

workflow (.yml)
# This is a basic workflow to help you get started with Actions

name: Push Docs

# Controls when the action will run. 
on:
  # Triggers the workflow on push or pull request events but only for the main branch
  push:
    branches: [ main ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v2

      # Runs a set of commands using the runners shell
      - name: Build and upload the docs
        run: |
          mv docs docs_src
          cd docs_src
          pip install -U sphinx==6.0.0 karma-sphinx-theme
          pip install -U numpy numba tqdm
          pip install --upgrade -U pygments
          make html
          cp -r _build/html ../docs
          cp ../.nojekyll ../docs/.nojekyll
          echo docs.ffcv.io > ../docs/CNAME
          git branch -D ghpages || echo "branch exists"
          git checkout -B ghpages
          cd ..
          rm -f .gitmodules
          rm -rf examples/imagenet-example
          git config --global user.email "ailyas@mit.edu"
          git config --global user.name "Andrew Ilyas"
          git add --force docs
          git commit -m generate docs
          git push --force -u origin ghpages

The same workflow, on Latchkey

Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.

# This is a basic workflow to help you get started with Actions
 
name: Push Docs
 
# Controls when the action will run. 
on:
  # Triggers the workflow on push or pull request events but only for the main branch
  push:
    branches: [ main ]
 
  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:
 
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true
 
jobs:
  # This workflow contains a single job called "build"
  build:
    timeout-minutes: 30
    # The type of runner that the job will run on
    runs-on: latchkey-small
 
    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v2
 
      # Runs a set of commands using the runners shell
      - name: Build and upload the docs
        run: |
          mv docs docs_src
          cd docs_src
          pip install -U sphinx==6.0.0 karma-sphinx-theme
          pip install -U numpy numba tqdm
          pip install --upgrade -U pygments
          make html
          cp -r _build/html ../docs
          cp ../.nojekyll ../docs/.nojekyll
          echo docs.ffcv.io > ../docs/CNAME
          git branch -D ghpages || echo "branch exists"
          git checkout -B ghpages
          cd ..
          rm -f .gitmodules
          rm -rf examples/imagenet-example
          git config --global user.email "ailyas@mit.edu"
          git config --global user.name "Andrew Ilyas"
          git add --force docs
          git commit -m generate docs
          git push --force -u origin ghpages
 

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