Skip to content

Merge branch 'main' of https://github.com/themuffinator/OpenQ4 #4

Merge branch 'main' of https://github.com/themuffinator/OpenQ4

Merge branch 'main' of https://github.com/themuffinator/OpenQ4 #4

name: Push Verification
on:
push:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: openq4-push-verification-${{ github.ref }}
cancel-in-progress: true
jobs:
script-smoke:
name: Validation Script Smoke
runs-on: ubuntu-24.04
env:
OPENQ4_GAMELIBS_REPO: ${{ github.workspace }}/../OpenQ4-GameLibs
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Fetch OpenQ4-GameLibs
shell: bash
run: |
set -euo pipefail
git clone --depth 1 https://github.com/themuffinator/OpenQ4-GameLibs.git "${OPENQ4_GAMELIBS_REPO}"
- name: Setup Python
uses: actions/setup-python@v6
with:
python-version: "3.x"
- name: Check validation script syntax
shell: bash
run: |
set -euo pipefail
python -m py_compile tools/validation/openq4_validate.py
bash -n tools/build/meson_setup.sh
bash -n tools/validation/validate_push.sh
bash -n tools/validation/validate_pr.sh
python tools/tests/hdr_postprocess_math.py
- name: Dry-run push profile
shell: bash
run: |
set -euo pipefail
bash tools/validation/validate_push.sh --dry-run
posix-builds:
name: ${{ matrix.name }}
needs: script-smoke
runs-on: ${{ matrix.os }}
timeout-minutes: 90
env:
OPENQ4_GAMELIBS_REPO: ${{ github.workspace }}/../OpenQ4-GameLibs
strategy:
fail-fast: false
matrix:
include:
- name: Linux Push Verification
os: ubuntu-24.04
artifact_name: linux
- name: macOS Push Verification
os: macos-15
artifact_name: macos
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Fetch OpenQ4-GameLibs
shell: bash
run: |
set -euo pipefail
git clone --depth 1 https://github.com/themuffinator/OpenQ4-GameLibs.git "${OPENQ4_GAMELIBS_REPO}"
- name: Setup Python
uses: actions/setup-python@v6
with:
python-version: "3.x"
- name: Install Meson and Ninja
shell: bash
run: |
set -euo pipefail
python -m pip install --upgrade pip
python -m pip install meson ninja
- name: Run push verification
shell: bash
run: |
set -euo pipefail
bash tools/validation/validate_push.sh --install --fail-on-dirty
- name: Publish staged payload
if: always()
uses: actions/upload-artifact@v6
with:
name: push-${{ matrix.artifact_name }}-payload
path: .install
if-no-files-found: warn
retention-days: 14
windows-build:
name: Windows Push Verification
needs: script-smoke
runs-on: windows-2025
timeout-minutes: 90
env:
OPENQ4_GAMELIBS_REPO: ${{ github.workspace }}/../OpenQ4-GameLibs
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Fetch OpenQ4-GameLibs
shell: pwsh
run: |
$ErrorActionPreference = "Stop"
git clone --depth 1 https://github.com/themuffinator/OpenQ4-GameLibs.git "$env:OPENQ4_GAMELIBS_REPO"
- name: Setup Python
uses: actions/setup-python@v6
with:
python-version: "3.x"
- name: Install Meson and Ninja
shell: pwsh
run: |
$ErrorActionPreference = "Stop"
python -m pip install --upgrade pip
python -m pip install meson ninja
- name: Run push verification
shell: pwsh
run: |
$ErrorActionPreference = "Stop"
powershell -NoProfile -ExecutionPolicy Bypass -File tools/validation/validate_push.ps1 --install --fail-on-dirty
- name: Publish staged payload
if: always()
uses: actions/upload-artifact@v6
with:
name: push-windows-payload
path: .install
if-no-files-found: warn
retention-days: 14