Skip to content

checks

checks #93

Workflow file for this run

name: desktop-publication-gate-proof
on:
workflow_dispatch:
inputs:
fail_smoke:
type: boolean
default: false
publish:
type: boolean
default: true
permissions:
contents: read
jobs:
source:
runs-on: ubuntu-24.04
outputs:
smoke_shards: ${{ steps.source.outputs.shards }}
steps:
- id: source
run: |
echo 'shards=[1,2,3,4]' >> "$GITHUB_OUTPUT"
echo 'Candidate workflow e63f9286856ca7b55d6295f85a6c433aa8ede8a3' >> "$GITHUB_STEP_SUMMARY"
build:
needs: source
runs-on: ubuntu-24.04
outputs:
artifact_id: ${{ steps.artifacts.outputs.artifact-id }}
steps:
- run: |
mkdir -p release
printf 'publication admission fixture\n' > release/fixture.txt
- id: artifacts
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9
with:
name: publication-gate-fixture
path: release/
retention-days: 3
smoke:
name: smoke (${{ matrix.shard }}/${{ strategy.job-total }})
needs: source
runs-on: ubuntu-24.04
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
shard: ${{ fromJSON(needs.source.outputs.smoke_shards) }}
steps:
- name: Acceptance boundary control
env:
FAIL_SMOKE: ${{ inputs.fail_smoke }}
SHARD: ${{ matrix.shard }}
run: |
if [ "$FAIL_SMOKE" = true ] && [ "$SHARD" = 2 ]; then
echo 'Intentional negative-control acceptance failure.'
exit 1
fi
publish:
name: publish
needs: [source, build]
if: inputs.publish
runs-on: ubuntu-24.04
timeout-minutes: 10
permissions:
contents: write
steps:
- name: Download verified desktop artifacts
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
with:
artifact-ids: ${{ needs.build.outputs.artifact_id }}
path: apps/desktop/release
- name: Harmless publication sentinel
run: |
grep -Fx 'publication admission fixture' apps/desktop/release/fixture.txt
echo 'Publication gate admitted this run.' >> "$GITHUB_STEP_SUMMARY"