Skip to content
Latchkey

Nightly CI workflow (sefcom/oxidizer)

The Nightly CI workflow from sefcom/oxidizer, explained and optimized by Latchkey.

B

CI health: B - good

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: sefcom/oxidizer.github/workflows/nightly-ci.ymlLicense BSD-2-ClauseView source

What it does

This is the Nightly CI workflow from the sefcom/oxidizer repository, a real project running GitHub Actions. It is shown here with attribution under its BSD-2-Clause license.

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

The workflow

workflow (.yml)
name: Nightly CI

on:
  schedule:
  - cron: "0 0 * * *"
  pull_request:
    branches:
      - master
    paths:
      - ".github/workflows/nightly-ci.yml"
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  ci:
    uses: angr/ci-settings/.github/workflows/angr-ci.yml@master
    with:
      nightly: true
    secrets: inherit
  windows:
    name: Test Windows
    runs-on: windows-2022
    strategy:
      matrix:
        runner_id: [1, 2, 3, 4, 5]
      fail-fast: false
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4
        with:
          path: angr
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4
        with:
          repository: angr/binaries
          path: binaries
      - uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1
      - uses: astral-sh/setup-uv@61cb8a9741eeb8a550a1b8544337180c0fc8476b # v6
      - name: Sync dependencies
        run: uv --directory angr sync -p 3.10
      - name: Run pytest
        run: uv --directory angr run pytest -n auto --splits 5 --group ${{ matrix.runner_id }} tests
  macos:
    name: Test macOS
    runs-on: macos-15
    strategy:
      matrix:
        runner_id: [1, 2, 3]
      fail-fast: false
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4
        with:
          path: angr
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4
        with:
          repository: angr/binaries
          path: binaries
      - uses: astral-sh/setup-uv@61cb8a9741eeb8a550a1b8544337180c0fc8476b # v6
      # XXX: Install CMake<4 to build pinned unicorn==2.0.1.post1 for now
      - name: Install CMake
        uses: ssrobins/install-cmake@c54bb968401dd4ff9e6c9d697df5b843ee3b783b # v1
        with:
          version: 3.31.9
      - name: Sync dependencies
        run: uv --directory angr sync -p 3.10
      - name: Run pytest
        run: uv --directory angr run pytest -n auto --splits 3 --group ${{ matrix.runner_id }} tests

The same workflow, on Latchkey

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

name: Nightly CI
 
on:
  schedule:
  - cron: "0 0 * * *"
  pull_request:
    branches:
      - master
    paths:
      - ".github/workflows/nightly-ci.yml"
  workflow_dispatch:
 
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true
 
jobs:
  ci:
    timeout-minutes: 30
    uses: angr/ci-settings/.github/workflows/angr-ci.yml@master
    with:
      nightly: true
    secrets: inherit
  windows:
    timeout-minutes: 30
    name: Test Windows
    runs-on: windows-2022
    strategy:
      matrix:
        runner_id: [1, 2, 3, 4, 5]
      fail-fast: false
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4
        with:
          path: angr
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4
        with:
          repository: angr/binaries
          path: binaries
      - uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1
      - uses: astral-sh/setup-uv@61cb8a9741eeb8a550a1b8544337180c0fc8476b # v6
      - name: Sync dependencies
        run: uv --directory angr sync -p 3.10
      - name: Run pytest
        run: uv --directory angr run pytest -n auto --splits 5 --group ${{ matrix.runner_id }} tests
  macos:
    timeout-minutes: 30
    name: Test macOS
    runs-on: macos-15
    strategy:
      matrix:
        runner_id: [1, 2, 3]
      fail-fast: false
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4
        with:
          path: angr
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4
        with:
          repository: angr/binaries
          path: binaries
      - uses: astral-sh/setup-uv@61cb8a9741eeb8a550a1b8544337180c0fc8476b # v6
      # XXX: Install CMake<4 to build pinned unicorn==2.0.1.post1 for now
      - name: Install CMake
        uses: ssrobins/install-cmake@c54bb968401dd4ff9e6c9d697df5b843ee3b783b # v1
        with:
          version: 3.31.9
      - name: Sync dependencies
        run: uv --directory angr sync -p 3.10
      - name: Run pytest
        run: uv --directory angr run pytest -n auto --splits 3 --group ${{ matrix.runner_id }} tests
 

What changed

1 third-party action is referenced by a movable tag. Pin it to the commit SHA (Latchkey resolves and applies this automatically) so a repointed tag cannot change what runs.

This workflow runs 3 jobs (9 with the matrix expanded) per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.

Actions used in this workflow