- commit
- 60faddef5b3171ef955e9170a8c143c2dc87ba4f
- parent
- deefbce2cbce57f92ec1667cab9d3b7e3dcbc66c
- author
- FelineStateMachine <dami.etoile@gmail.com>
| A | .github/ | 138 | ++++++++++++++++++++++++++++++ |
@@ -0,0 +1,138 @@
1+name: Sigil Hardware UAT Candidate2+3+on:4+ workflow_dispatch:5+ inputs:6+ commit:7+ description: Exact 40-character commit on main to package for temporary hardware acceptance8+ required: true9+ type: string10+11+permissions:12+ contents: read13+14+concurrency:15+ group: sigil-hardware-uat-${{ inputs.commit }}16+ cancel-in-progress: false17+18+jobs:19+ candidate:20+ name: Build commit-pinned Bazzite UAT candidate21+ runs-on: ubuntu-24.0422+ timeout-minutes: 6023+ env:24+ CARGO_TERM_COLOR: always25+ UAT_COMMIT: ${{ inputs.commit }}26+ steps:27+ - name: Check out exact requested commit28+ uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.129+ with:30+ ref: ${{ inputs.commit }}31+ fetch-depth: 032+ persist-credentials: false33+34+ - name: Require a clean commit already on main35+ run: |36+ [[ "$UAT_COMMIT" =~ ^[0-9a-f]{40}$ ]]37+ test "$(git rev-parse HEAD)" = "$UAT_COMMIT"38+ git fetch --no-tags origin main:refs/remotes/origin/main39+ git merge-base --is-ancestor "$UAT_COMMIT" origin/main40+ test -z "$(git status --porcelain=v1)"41+42+ - name: Install Linux build dependencies43+ run: |44+ sudo apt-get update45+ sudo apt-get install --yes --no-install-recommends \46+ build-essential \47+ ffmpeg \48+ gstreamer1.0-plugins-base \49+ gstreamer1.0-plugins-bad \50+ gstreamer1.0-plugins-good \51+ gstreamer1.0-plugins-ugly \52+ gstreamer1.0-tools \53+ jq \54+ libayatana-appindicator3-dev \55+ libgstreamer-plugins-base1.0-dev \56+ libgstreamer1.0-dev \57+ librsvg2-dev \58+ libssl-dev \59+ libudev-dev \60+ libwebkit2gtk-4.1-dev \61+ libxdo-dev \62+ pkg-config \63+ python3-venv \64+ shellcheck65+ python3 -m venv "$RUNNER_TEMP/zig-venv"66+ printf '%s\n' \67+ 'ziglang==0.16.0 --hash=sha256:9fcda73f62b851dd72a54b710ad40a209896db14cfb13649e62191243556342b' \68+ | "$RUNNER_TEMP/zig-venv/bin/pip" install \69+ --disable-pip-version-check \70+ --only-binary=:all: \71+ --require-hashes \72+ --requirement /dev/stdin73+ install -d "$RUNNER_TEMP/uat-bin"74+ # Expand runner paths when the generated wrapper executes.75+ # shellcheck disable=SC201676+ printf '%s\n' \77+ '#!/usr/bin/env bash' \78+ 'exec "$RUNNER_TEMP/zig-venv/bin/python" -m ziglang "$@"' \79+ >"$RUNNER_TEMP/uat-bin/zig"80+ chmod 0755 "$RUNNER_TEMP/uat-bin/zig"81+ echo "$RUNNER_TEMP/uat-bin" >>"$GITHUB_PATH"82+ cargo install cargo-zigbuild --locked --version 0.23.083+84+ - name: Run complete feature-enabled repository gate85+ env:86+ GOQ_VERIFY_IN_PROCESS_GSTREAMER: "1"87+ run: ./scripts/verify-demo-build.sh88+89+ - name: Build and inspect temporary UAT package90+ id: package91+ run: |92+ short_commit="$(git rev-parse --short=12 HEAD)"93+ output_dir="$RUNNER_TEMP/sigil-hardware-uat"94+ install -d -m 0700 "$output_dir"95+ archive="$output_dir/sigil-hardware-uat-$short_commit-bazzite-x86_64.tar.gz"96+ ./scripts/package-bazzite-release.sh \97+ --output "$archive" \98+ --allow-dirty \99+ --allow-unsigned100+ (cd "$output_dir" && sha256sum -c "$(basename -- "$archive.sha256")")101+ manifest="$output_dir/release-manifest.json"102+ tar -xOzf "$archive" payload/release/release-manifest.json >"$manifest"103+ test "$(jq -r .format "$manifest")" = 2104+ test "$(jq -r .product "$manifest")" = sigil-host105+ test "$(jq -r .primary_executable "$manifest")" = sigil106+ test "$(jq -r .compatibility_executable "$manifest")" = sigil-host107+ test "$(jq -r .target "$manifest")" = x86_64-unknown-linux-gnu.2.17108+ test "$(jq -r .profile "$manifest")" = release109+ test "$(jq -r .git_commit "$manifest")" = "$UAT_COMMIT"110+ test "$(jq -r .git_dirty "$manifest")" = false111+ test "$(jq -r .binary_provenance "$manifest")" = self-built-clean-head112+ test "$(jq -r .binary_provenance_verified "$manifest")" = true113+ test "$(jq -r .release_kind "$manifest")" = development114+ test "$(jq -r .release_tag "$manifest")" = development115+ test "$(jq -r .asset_name "$manifest")" = "$(basename -- "$archive")"116+ test "$(jq -r .demo_direct_node "$manifest")" = false117+ test "$(jq -c .features "$manifest")" = '["default","in-process-gstreamer"]'118+ printf '%s\n' \119+ "repository=$GITHUB_REPOSITORY" \120+ "source_commit=$UAT_COMMIT" \121+ "workflow_sha=$GITHUB_WORKFLOW_SHA" \122+ "workflow_ref=$GITHUB_WORKFLOW_REF" \123+ "workflow_run_id=$GITHUB_RUN_ID" \124+ "workflow_run_attempt=$GITHUB_RUN_ATTEMPT" \125+ "run_url=$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" \126+ "archive=$(basename -- "$archive")" \127+ "archive_sha256=$(sha256sum "$archive" | awk '{print $1}')" \128+ >"$output_dir/uat-provenance.txt"129+ echo "artifact_name=sigil-hardware-uat-$short_commit" >>"$GITHUB_OUTPUT"130+ echo "output_dir=$output_dir" >>"$GITHUB_OUTPUT"131+132+ - name: Retain temporary hardware candidate133+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2134+ with:135+ name: ${{ steps.package.outputs.artifact_name }}136+ path: ${{ steps.package.outputs.output_dir }}137+ if-no-files-found: error138+ retention-days: 7