AppleMETA workflow (blacktop/ipsw)
The AppleMETA workflow from blacktop/ipsw, explained and optimized by Latchkey.
A
CI health: A - excellent
Point runs-on at Latchkey and get job timeouts, self-healing for flaky steps, and up to 58% lower cost, applied automatically.
What it does
This is the AppleMETA workflow from the blacktop/ipsw 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
workflow (.yml)
name: "AppleMETA"
on:
schedule:
- cron: "00 01,13 * * *"
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: "1.26"
cache: false
- name: Cache go.mod
uses: actions/cache@v5
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Run build
run: |
make build
- name: Run download git --json --webkit
run: ./ipsw download git --json --api ${{ secrets.GITHUB_TOKEN }} --output /tmp
- name: Switch branch
run: |
git stash
git checkout apple_meta
- name: Commit JSON
run: |
go install github.com/josephburnett/jd@v1.5.1
jd -set /tmp/tag_links.json github/tag_links.json || true
mv /tmp/tag_links.json github/tag_links.json
git --no-pager diff github/tag_links.json
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git commit -am "AppleMETA refresh"
git push
The same workflow, on Latchkey
Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.
name: "AppleMETA" on: schedule: - cron: "00 01,13 * * *" permissions: contents: write jobs: build: timeout-minutes: 30 runs-on: latchkey-small steps: - uses: actions/checkout@v7 with: fetch-depth: 0 - name: Set up Go uses: actions/setup-go@v6 with: go-version: "1.26" cache: false - name: Cache go.mod uses: actions/cache@v5 with: path: | ~/.cache/go-build ~/go/pkg/mod key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go- - name: Run build run: | make build - name: Run download git --json --webkit run: ./ipsw download git --json --api ${{ secrets.GITHUB_TOKEN }} --output /tmp - name: Switch branch run: | git stash git checkout apple_meta - name: Commit JSON run: | go install github.com/josephburnett/jd@v1.5.1 jd -set /tmp/tag_links.json github/tag_links.json || true mv /tmp/tag_links.json github/tag_links.json git --no-pager diff github/tag_links.json git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" git config --local user.name "github-actions[bot]" git commit -am "AppleMETA refresh" git push
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. - Add a job timeout so a hung step cannot burn hours of runner time.
This workflow runs 1 job per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.