chore: initial bootstrap — 5 reusable workflows + scaffolding
Public-readable Tier-1 exception (alongside sporel-meta) for the practical reason that community pipelines need to call into these workflows without per-repo deploy-token setup. 5 reusable workflows moved from sporel-meta/.gitea/workflows/ to here (Plan-B.1: privacy-fix for sporel-meta which stays private with the proprietary design docs). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
59
.gitea/workflows/reusable-engine-launcher.yml
Normal file
59
.gitea/workflows/reusable-engine-launcher.yml
Normal file
@@ -0,0 +1,59 @@
|
||||
# Reusable workflow: Engine + Launcher (Cat 1 per ADR-0025)
|
||||
# C-Build (Windows + Linux) → smoke tests → on-tag: release artefacts
|
||||
name: Engine + Launcher CI
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
build_type:
|
||||
description: "CMake build type"
|
||||
type: string
|
||||
default: "Release"
|
||||
smoke_test_script:
|
||||
description: "Path to smoke-test script (relative to repo root); empty = skip"
|
||||
type: string
|
||||
default: "tests/smoke.sh"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-latest, windows-latest]
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Configure CMake
|
||||
run: cmake -B build -DCMAKE_BUILD_TYPE=${{ inputs.build_type }}
|
||||
|
||||
- name: Build
|
||||
run: cmake --build build --config ${{ inputs.build_type }} --parallel
|
||||
|
||||
- name: Smoke tests
|
||||
if: hashFiles(inputs.smoke_test_script) != ''
|
||||
shell: bash
|
||||
run: |
|
||||
chmod +x "${{ inputs.smoke_test_script }}" || true
|
||||
"${{ inputs.smoke_test_script }}"
|
||||
|
||||
- name: Install (on tag)
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
run: cmake --install build --prefix=${{ github.workspace }}/install --config ${{ inputs.build_type }}
|
||||
|
||||
- name: Package release artefacts (on tag)
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
shell: bash
|
||||
run: |
|
||||
OS_TAG="${{ matrix.os }}"
|
||||
OS_TAG="${OS_TAG//-latest/}"
|
||||
ARTEFACT_NAME="${GITHUB_REPOSITORY##*/}-${GITHUB_REF_NAME}-${OS_TAG}.zip"
|
||||
cd install && zip -r "../${ARTEFACT_NAME}" . && cd ..
|
||||
echo "ARTEFACT_NAME=${ARTEFACT_NAME}" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Upload to Gitea Release (on tag)
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
uses: akkuman/gitea-release-action@v1
|
||||
with:
|
||||
files: ${{ env.ARTEFACT_NAME }}
|
||||
Reference in New Issue
Block a user