| 1 | #!/usr/bin/env bash |
| 2 | set -euo pipefail |
| 3 | |
| 4 | root="${1:-$(git rev-parse --show-toplevel)}" |
| 5 | required=( |
| 6 | .github/actions/setup-certum/action.yml |
| 7 | .github/workflows/release-candidate.yml |
| 8 | .github/workflows/release-candidate-verify.yml |
| 9 | .github/workflows/release-promote.yml |
| 10 | .github/workflows/release-desktop.yml |
| 11 | .signpath/contracts/release-signing.yml |
| 12 | npm/publish-candidate.mjs |
| 13 | scripts/build-release-cli-candidate.mjs |
| 14 | scripts/desktop-release-artifacts.mjs |
| 15 | scripts/finalize-windows-signed-candidate.sh |
| 16 | scripts/install-nsis.ps1 |
| 17 | scripts/package-windows-desktop.sh |
| 18 | scripts/release-candidate.mjs |
| 19 | scripts/release-candidate-tags.sh |
| 20 | scripts/resolve-release-candidate.mjs |
| 21 | scripts/sign-certum.ps1 |
| 22 | scripts/test-windows-installer-startup.ps1 |
| 23 | scripts/test-windows-startup-recovery.ps1 |
| 24 | scripts/test-windows-upgrade-startup.ps1 |
| 25 | scripts/verify-windows-authenticode.ps1 |
| 26 | scripts/verify-release-authorization.sh |
| 27 | scripts/verify-release-artifact-archive.mjs |
| 28 | scripts/windows-acceptance-environment.ps1 |
| 29 | scripts/windows-upgrade-ui-evidence.ps1 |
| 30 | ) |
| 31 | |
| 32 | for file in "${required[@]}"; do |
| 33 | if [ ! -s "$root/$file" ]; then |
| 34 | echo "missing release control file: $file" >&2 |
| 35 | exit 1 |
| 36 | fi |
| 37 | done |
| 38 | |
| 39 | for file in \ |
| 40 | scripts/finalize-windows-signed-candidate.sh \ |
| 41 | scripts/package-windows-desktop.sh; do |
| 42 | if [ ! -x "$root/$file" ]; then |
| 43 | echo "release control helper is not executable: $file" >&2 |
| 44 | exit 1 |
| 45 | fi |
| 46 | done |
| 47 | |
| 48 | node --check "$root/scripts/release-candidate.mjs" |
| 49 | node --check "$root/scripts/verify-release-artifact-archive.mjs" |
| 50 | node --check "$root/scripts/resolve-release-candidate.mjs" |
| 51 | node --check "$root/scripts/build-release-cli-candidate.mjs" |
| 52 | node --check "$root/npm/publish-candidate.mjs" |
| 53 | bash -n "$root/scripts/finalize-windows-signed-candidate.sh" |
| 54 | bash -n "$root/scripts/release-candidate-tags.sh" |
| 55 | bash -n "$root/scripts/package-windows-desktop.sh" |
| 56 | |
| 57 | echo "release control preflight: PASS" |
| 58 |