Prevent RC regressions at release boundary

This commit is contained in:
rcourtman
2026-08-01 13:57:44 +01:00
parent 1f20ce5dd8
commit bc265ada2e
13 changed files with 425 additions and 74 deletions
+48 -2
View File
@@ -253,7 +253,7 @@ jobs:
needs: prepare
if: ${{ needs.prepare.outputs.historical_asset_backfill_only != 'true' }}
runs-on: ubuntu-24.04
timeout-minutes: 10
timeout-minutes: 20
steps:
- name: Checkout repository
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
@@ -277,6 +277,12 @@ jobs:
- name: Check frontend copy-paste duplication
run: npm --prefix frontend-modern run lint:cpd
- name: Type-check frontend
run: npm --prefix frontend-modern run type-check
- name: Test frontend
run: npm --prefix frontend-modern test
- name: Build verified frontend bundle
run: npm --prefix frontend-modern run build
@@ -290,6 +296,31 @@ jobs:
compression-level: 0
overwrite: true
windows_install_command_smoke:
name: Windows PowerShell 5.1 Install Command Smoke
needs: prepare
if: ${{ needs.prepare.outputs.historical_asset_backfill_only != 'true' }}
runs-on: windows-2025
timeout-minutes: 15
steps:
- name: Checkout repository
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Set up Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: 'frontend-modern/package-lock.json'
- name: Install frontend test dependencies
working-directory: frontend-modern
run: npm ci
- name: Execute generated command with Windows PowerShell 5.1
working-directory: frontend-modern
run: npm test -- --run src/utils/__tests__/agentInstallCommand.windows.test.ts
# Backend tests run in parallel with frontend checks
backend_tests:
needs:
@@ -764,11 +795,23 @@ jobs:
docker logs pulse-test-server || true
docker compose -f docker-compose.test.yml down -v || true
- name: Upload smoke diagnostics
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: release-smoke-failures-${{ github.sha }}
path: |
tests/integration/test-results/
tests/integration/playwright-report/
if-no-files-found: ignore
retention-days: 14
create_release:
needs:
- prepare
- build_release_candidate
- frontend_checks
- windows_install_command_smoke
- backend_tests
- docker_build
- helm_smoke
@@ -776,7 +819,7 @@ jobs:
- release_smoke
# Run if integration_tests passed OR was skipped (prereleases). The
# release smoke has no skipped escape: it runs for prereleases too.
if: ${{ needs.prepare.outputs.historical_asset_backfill_only != 'true' && always() && needs.build_release_candidate.result == 'success' && needs.frontend_checks.result == 'success' && needs.backend_tests.result == 'success' && needs.docker_build.result == 'success' && needs.helm_smoke.result == 'success' && needs.release_smoke.result == 'success' && (needs.integration_tests.result == 'success' || needs.integration_tests.result == 'skipped') }}
if: ${{ needs.prepare.outputs.historical_asset_backfill_only != 'true' && always() && needs.build_release_candidate.result == 'success' && needs.frontend_checks.result == 'success' && needs.windows_install_command_smoke.result == 'success' && needs.backend_tests.result == 'success' && needs.docker_build.result == 'success' && needs.helm_smoke.result == 'success' && needs.release_smoke.result == 'success' && (needs.integration_tests.result == 'success' || needs.integration_tests.result == 'skipped') }}
runs-on: ubuntu-24.04
timeout-minutes: 30
permissions:
@@ -1463,6 +1506,7 @@ jobs:
needs:
- prepare
- release_smoke
- windows_install_command_smoke
- create_release
- publish_docker
- validate_release_assets
@@ -1481,6 +1525,7 @@ jobs:
IS_PRERELEASE: ${{ needs.prepare.outputs.is_prerelease }}
CREATE_RESULT: ${{ needs.create_release.result }}
SMOKE_RESULT: ${{ needs.release_smoke.result }}
WINDOWS_INSTALL_COMMAND_RESULT: ${{ needs.windows_install_command_smoke.result }}
DOCKER_RESULT: ${{ needs.publish_docker.result }}
VALIDATE_RESULT: ${{ needs.validate_release_assets.result }}
INSTALL_RESULT: ${{ needs.install_sh_smoke.result }}
@@ -1501,6 +1546,7 @@ jobs:
}
require_result "release smoke" "$SMOKE_RESULT" success
require_result "Windows install command smoke" "$WINDOWS_INSTALL_COMMAND_RESULT" success
require_result "release assembly" "$CREATE_RESULT" success
require_result "release asset validation" "$VALIDATE_RESULT" success
@@ -13,6 +13,8 @@ on:
- 'internal/kubernetesagent/**'
- 'internal/remoteconfig/**'
- 'pkg/agents/**'
- 'frontend-modern/src/utils/agentInstallCommand.ts'
- 'frontend-modern/src/utils/__tests__/agentInstallCommand.windows.test.ts'
- 'scripts/install.sh'
- 'scripts/install.ps1'
- 'scripts/installtests/**'
@@ -30,6 +32,8 @@ on:
- 'internal/kubernetesagent/**'
- 'internal/remoteconfig/**'
- 'pkg/agents/**'
- 'frontend-modern/src/utils/agentInstallCommand.ts'
- 'frontend-modern/src/utils/__tests__/agentInstallCommand.windows.test.ts'
- 'scripts/install.sh'
- 'scripts/install.ps1'
- 'scripts/installtests/**'
@@ -96,6 +100,24 @@ jobs:
if: ${{ !matrix.unix }}
run: go test ./scripts/installtests -run '^Test(InstallPS1|WindowsAgentLifecycle)'
- name: Set up Node.js for Windows command proof
if: ${{ !matrix.unix }}
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: 'frontend-modern/package-lock.json'
- name: Install frontend test dependencies
if: ${{ !matrix.unix }}
working-directory: frontend-modern
run: npm ci
- name: Execute generated command with Windows PowerShell 5.1
if: ${{ !matrix.unix }}
working-directory: frontend-modern
run: npm test -- --run src/utils/__tests__/agentInstallCommand.windows.test.ts
- name: Build and execute native Unix agent
if: matrix.unix
shell: bash