cat / goq
clone

turns a linux box into a private steam streaming appliance: plug in, tap your key, play from another computer

1-n-sigls
goq / .github / workflows / sigil-hardware-uat.yml
sigil-hardware-uat.yml 5.7K
1name: Sigil Hardware UAT Candidate23on:4 workflow_dispatch:5 inputs:6 commit:7 description: Exact 40-character commit on main to package for temporary hardware acceptance8 required: true9 type: string1011permissions:12 contents: read1314concurrency:15 group: sigil-hardware-uat-${{ inputs.commit }}16 cancel-in-progress: false1718jobs: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: false3334 - 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)"4142 - 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.08384 - name: Run complete feature-enabled repository gate85 env:86 GOQ_VERIFY_IN_PROCESS_GSTREAMER: "1"87 run: ./scripts/verify-demo-build.sh8889 - 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_auth_bypass "$manifest")" = false117 test "$(jq -r .demo_direct_node "$manifest")" = false118 test "$(jq -c .features "$manifest")" = '["in-process-gstreamer"]'119 printf '%s\n' \120 "repository=$GITHUB_REPOSITORY" \121 "source_commit=$UAT_COMMIT" \122 "workflow_sha=$GITHUB_WORKFLOW_SHA" \123 "workflow_ref=$GITHUB_WORKFLOW_REF" \124 "workflow_run_id=$GITHUB_RUN_ID" \125 "workflow_run_attempt=$GITHUB_RUN_ATTEMPT" \126 "run_url=$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" \127 "archive=$(basename -- "$archive")" \128 "archive_sha256=$(sha256sum "$archive" | awk '{print $1}')" \129 >"$output_dir/uat-provenance.txt"130 echo "artifact_name=sigil-hardware-uat-$short_commit" >>"$GITHUB_OUTPUT"131 echo "output_dir=$output_dir" >>"$GITHUB_OUTPUT"132133 - name: Retain temporary hardware candidate134 uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2135 with:136 name: ${{ steps.package.outputs.artifact_name }}137 path: ${{ steps.package.outputs.output_dir }}138 if-no-files-found: error139 retention-days: 7