compile-inno-setup workflow (version-fox/vfox)
The compile-inno-setup workflow from version-fox/vfox, explained and optimized by Latchkey.
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 →What it does
This is the compile-inno-setup workflow from the version-fox/vfox 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
name: compile-inno-setup
on:
release:
types: [released]
permissions:
contents: write
id-token: write
packages: write
jobs:
compile-inno-setup:
name: Compile setup and publish
runs-on: windows-latest
defaults:
run:
working-directory: inno_setup
steps:
- name: Checkout version-fox
uses: actions/checkout@v6
- name: Get version-fox version
id: version-fox-version
uses: actions/github-script@v9
with:
github-token: NO_NEED
result-encoding: string
script: return "${{ github.ref }}".substring(11)
- name: Install Inno Setup
run: |
curl --retry 10 --retry-all-errors -L -o installer.exe https://jrsoftware.org/download.php/is.exe
./installer.exe /verysilent /allusers /dir=inst
sleep 60
- name: Download version-fox packages
env:
VFOX_VERSION: ${{ steps.version-fox-version.outputs.result }}
DOWNLOAD_URL: https://github.com/${{ github.event.repository.full_name }}/releases/download
run: |
curl -L -o i386.zip ${{ env.DOWNLOAD_URL }}/v${{ env.VFOX_VERSION }}/vfox_${{ env.VFOX_VERSION }}_windows_i386.zip && unzip i386.zip
curl -L -o x86_64.zip ${{ env.DOWNLOAD_URL }}/v${{ env.VFOX_VERSION }}/vfox_${{ env.VFOX_VERSION }}_windows_x86_64.zip && unzip x86_64.zip
curl -L -o aarch64.zip ${{ env.DOWNLOAD_URL }}/v${{ env.VFOX_VERSION }}/vfox_${{ env.VFOX_VERSION }}_windows_aarch64.zip && unzip aarch64.zip
- name: Compile by Inno Setup
env:
VFOX_VERSION: ${{ steps.version-fox-version.outputs.result }}
run: |
./inst/iscc vfox_windows_i386.iss
./inst/iscc vfox_windows_x86_64.iss
./inst/iscc vfox_windows_aarch64.iss
- name: Upload Inno Setup Assets
uses: version-fox/vfox-release-assets@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
release_id: ${{ github.event.release.id }}
assets_path: inno_setup/Output/*.exeThe same workflow, on Latchkey
Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.
name: compile-inno-setup on: release: types: [released] permissions: contents: write id-token: write packages: write jobs: compile-inno-setup: timeout-minutes: 30 name: Compile setup and publish runs-on: windows-latest defaults: run: working-directory: inno_setup steps: - name: Checkout version-fox uses: actions/checkout@v6 - name: Get version-fox version id: version-fox-version uses: actions/github-script@v9 with: github-token: NO_NEED result-encoding: string script: return "${{ github.ref }}".substring(11) - name: Install Inno Setup run: | curl --retry 10 --retry-all-errors -L -o installer.exe https://jrsoftware.org/download.php/is.exe ./installer.exe /verysilent /allusers /dir=inst sleep 60 - name: Download version-fox packages env: VFOX_VERSION: ${{ steps.version-fox-version.outputs.result }} DOWNLOAD_URL: https://github.com/${{ github.event.repository.full_name }}/releases/download run: | curl -L -o i386.zip ${{ env.DOWNLOAD_URL }}/v${{ env.VFOX_VERSION }}/vfox_${{ env.VFOX_VERSION }}_windows_i386.zip && unzip i386.zip curl -L -o x86_64.zip ${{ env.DOWNLOAD_URL }}/v${{ env.VFOX_VERSION }}/vfox_${{ env.VFOX_VERSION }}_windows_x86_64.zip && unzip x86_64.zip curl -L -o aarch64.zip ${{ env.DOWNLOAD_URL }}/v${{ env.VFOX_VERSION }}/vfox_${{ env.VFOX_VERSION }}_windows_aarch64.zip && unzip aarch64.zip - name: Compile by Inno Setup env: VFOX_VERSION: ${{ steps.version-fox-version.outputs.result }} run: | ./inst/iscc vfox_windows_i386.iss ./inst/iscc vfox_windows_x86_64.iss ./inst/iscc vfox_windows_aarch64.iss - name: Upload Inno Setup Assets uses: version-fox/vfox-release-assets@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: release_id: ${{ github.event.release.id }} assets_path: inno_setup/Output/*.exe
What changed
- Add a job timeout so a hung step cannot burn hours of runner time.
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.
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:
- Network fetches
This workflow runs 1 job per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.