cat / goq
clone

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

fix/portal-dist-prebuild
goq / .github / workflows / ci.yml
ci.yml 5.3K
1name: CI23on:4 pull_request:5 push:6 branches: [main]78permissions:9 contents: read1011concurrency:12 group: ci-${{ github.workflow }}-${{ github.ref }}13 cancel-in-progress: true1415jobs:16 decky-gate:17 name: Decky plugin gate18 runs-on: ubuntu-24.0419 timeout-minutes: 1020 steps:21 - name: Check out repository22 uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.12324 - name: Install pinned pnpm25 uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v426 with:27 version: 9.4.028 run_install: false2930 - name: Set up Node.js31 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.032 with:33 node-version: "22"34 cache: pnpm35 cache-dependency-path: decky/pnpm-lock.yaml3637 - name: Install Decky dependencies38 working-directory: decky39 run: pnpm install --frozen-lockfile4041 - name: Test and build Decky plugin42 working-directory: decky43 run: |44 pnpm test45 pnpm typecheck46 pnpm build4748 - name: Verify deterministic Decky package49 run: |50 python3 scripts/package-decky-plugin.py "$RUNNER_TEMP/decky-artifacts"51 python3 -m unittest scripts.tests.test_decky_package -v5253 portal-target-matrix:54 name: Portal ${{ matrix.target }} compile guard55 runs-on: ${{ matrix.os }}56 timeout-minutes: 4057 strategy:58 fail-fast: false59 matrix:60 include:61 - os: macos-2662 target: x86_64-apple-darwin63 - os: windows-202564 target: x86_64-pc-windows-msvc65 steps:66 - name: Check out repository67 uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.16869 - name: Add the release matrix target70 run: rustup target add ${{ matrix.target }}7172 # These targets are built and attested for every release but are never73 # published, so nothing else in CI would notice them breaking. This job74 # keeps them compiling under both documented pointer policies.75 - name: Compile Portal under both pointer policies76 # Windows runners default to PowerShell, which reads the backslash77 # continuation as an incomplete unary operator and fails to parse the78 # step before compiling anything. Pin bash so both matrix legs run the79 # same commands.80 shell: bash81 run: |82 cargo check --locked -p portal --all-targets --target ${{ matrix.target }}83 cargo check --locked -p portal --all-targets --target ${{ matrix.target }} \84 --features experimental-non-macos-pointer-capture8586 demo-gate:87 name: Complete demo gate88 runs-on: ubuntu-24.0489 timeout-minutes: 4590 env:91 CARGO_TERM_COLOR: always92 RUST_BACKTRACE: "1"93 steps:94 - name: Check out repository95 uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.19697 - name: Install Linux build dependencies98 run: |99 sudo apt-get update100 sudo apt-get install --yes --no-install-recommends \101 build-essential \102 file \103 ffmpeg \104 gstreamer1.0-plugins-base \105 gstreamer1.0-plugins-bad \106 gstreamer1.0-plugins-good \107 gstreamer1.0-plugins-ugly \108 gstreamer1.0-tools \109 libayatana-appindicator3-dev \110 libgstreamer-plugins-base1.0-dev \111 libgstreamer1.0-dev \112 librsvg2-dev \113 libssl-dev \114 libudev-dev \115 libwebkit2gtk-4.1-dev \116 libxdo-dev \117 pkg-config \118 python3-venv \119 shellcheck120121 - name: Restore pinned cargo-zigbuild122 uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4123 with:124 path: ~/.cargo/bin/cargo-zigbuild125 key: cargo-zigbuild-${{ runner.os }}-${{ runner.arch }}-0.23.0126127 - name: Install pinned cross-build tools128 run: |129 python3 -m venv "$RUNNER_TEMP/zig-venv"130 printf '%s\n' \131 'ziglang==0.16.0 --hash=sha256:9fcda73f62b851dd72a54b710ad40a209896db14cfb13649e62191243556342b' \132 | "$RUNNER_TEMP/zig-venv/bin/pip" install \133 --disable-pip-version-check \134 --only-binary=:all: \135 --require-hashes \136 --requirement /dev/stdin137 install -d "$RUNNER_TEMP/ci-bin"138 # Expand runner paths when the generated wrapper executes.139 # shellcheck disable=SC2016140 printf '%s\n' \141 '#!/usr/bin/env bash' \142 'exec "$RUNNER_TEMP/zig-venv/bin/python" -m ziglang "$@"' \143 >"$RUNNER_TEMP/ci-bin/zig"144 chmod 0755 "$RUNNER_TEMP/ci-bin/zig"145 echo "$RUNNER_TEMP/ci-bin" >>"$GITHUB_PATH"146 export PATH="$RUNNER_TEMP/ci-bin:$PATH"147 if ! cargo-zigbuild --version 2>/dev/null \148 | grep -Fxq 'cargo-zigbuild 0.23.0'; then149 cargo install cargo-zigbuild --locked --version 0.23.0150 fi151 test "$(zig version)" = 0.16.0152 test "$(cargo-zigbuild --version)" = 'cargo-zigbuild 0.23.0'153154 - name: Run complete demo gate155 env:156 GOQ_VERIFY_IN_PROCESS_GSTREAMER: "1"157 GOQ_REQUIRE_LINUX_CROSS_BUILD: "1"158 run: ./scripts/verify-demo-build.sh