feat(sprint5): quality pass, smoke test workflow, Get-CIJobSummary

Task 5.1: Delete runner/Install-Runner.ps1 (superseded by Setup-Host.ps1).
Task 5.2: Replace Unicode/Discord emoji in Watch-DiskSpace.ps1, Watch-RunnerHealth.ps1,
          Test-E2E-Section3.3.ps1 with plain-text prefixes ([WARNING], [ALERT], [WARN]).
Task 5.3: docs/TEST-PLAN-v1.3-to-HEAD.md: ForEach-Object -Parallel replaced with Start-Job;
          -RepositoryUrl replaced with -RepoUrl (3 occurrences); PS7 syntax removed.
Task 5.4: scripts/Get-CIJobSummary.ps1 (new): scans JSONL logs in F:\CI\Logs, prints summary
          table per job, -JobId detail view, -Failed filter, -Last N.
Task 3.5: gitea/workflows/self-test.yml (new): workflow_dispatch, smoke-windows + smoke-linux.
          scripts/Test-Smoke.ps1 (new): invokes Invoke-CIJob.ps1 with marker-file build,
          asserts artifact dir and JSONL success event.
Task 5.6: docs/BEST-PRACTICES.md Section 10 added: SHA256 pinning policy, priority table,
          PS 5.1 implementation pattern, update guidance.
This commit is contained in:
Simone
2026-05-12 21:13:15 +02:00
parent 9de86ac289
commit c04a2f25aa
9 changed files with 447 additions and 222 deletions
+46
View File
@@ -0,0 +1,46 @@
# CI Self-Test (smoke) — Local CI/CD System
#
# On-demand smoke test that validates the full pipeline end-to-end:
# VM clone -> start -> IP detect -> trivial build -> artifact collect -> destroy
#
# Trigger: workflow_dispatch only (never runs on push/tag).
# Both jobs are independent — a failure in one does not cancel the other.
#
# Prerequisites (must be in place before running):
# - Runner labels: windows-build:host and linux-build:host active
# - Templates at GITEA_CI_TEMPLATE_PATH / GITEA_CI_LINUX_TEMPLATE_PATH
# - Snapshots BaseClean (Windows) and BaseClean-Linux (Linux) exist
# - ci-report-ip.service enabled in LinuxBuild2404 template
name: CI Self-Test (smoke)
on:
workflow_dispatch:
jobs:
smoke-windows:
runs-on: windows-build
steps:
- uses: Simone/local-ci-system/.gitea/actions/local-ci-build@main
with:
# Trivial no-op build: write a marker file to the CI output directory.
# The Windows build VM maps C:\CI\output as the artifact source.
build-command: 'New-Item -ItemType Directory -Path C:\CI\output -Force | Out-Null; Set-Content C:\CI\output\smoke.txt "smoke-ok"'
artifact-source: 'C:\CI\output'
guest-os: 'Windows'
job-id-suffix: 'smoke-win'
artifact-name: 'smoke-windows-${{ github.run_id }}'
smoke-linux:
runs-on: linux-build
steps:
- uses: Simone/local-ci-system/.gitea/actions/local-ci-build@main
with:
# Trivial no-op build: write a marker file to the CI output directory.
# The Linux build VM uses /opt/ci/output as the artifact source.
build-command: 'mkdir -p /opt/ci/output && echo smoke-ok > /opt/ci/output/smoke.txt'
artifact-source: '/opt/ci/output'
guest-os: 'Linux'
job-id-suffix: 'smoke-linux'
artifact-name: 'smoke-linux-${{ github.run_id }}'