feat(ql3): close local alpha milestone

This commit is contained in:
whyour
2026-08-27 20:44:33 +08:00
parent 78c261b556
commit a7308c78f9
9 changed files with 1156 additions and 6 deletions
+86 -6
View File
@@ -14,13 +14,22 @@ on:
required: true
default: false
type: boolean
alpha_artifact_scope:
description: Select the product family packaged by an authorized Alpha milestone
required: true
default: local
type: choice
options:
- local
- cluster
- all
permissions:
contents: read
concurrency:
group: ql3-ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
group: ql3-ci-${{ github.workflow }}-${{ github.ref }}-${{ github.event_name == 'workflow_dispatch' && inputs.produce_alpha_artifacts && github.run_id || 'validation' }}
cancel-in-progress: ${{ !(github.event_name == 'workflow_dispatch' && inputs.produce_alpha_artifacts) }}
jobs:
backend:
@@ -366,6 +375,7 @@ jobs:
run: |
node --test test/back/ql3LocalImageAudit.test.cjs
node --test test/back/ql3LocalOperatorImageAudit.test.cjs
node --test test/back/ql3LocalAlphaMilestone.test.cjs
pnpm audit:local-image:ql3
pnpm audit:local-operator-image:ql3
- name: Build the native AI-excluded image
@@ -587,7 +597,7 @@ jobs:
node scripts/ql3-local-api-cancellation-live-audit.cjs \
--report="${{ runner.temp }}/ql3-local-api-cancellation/standalone.json"
- name: Materialize and offline-audit the native Local Alpha trial kit
if: github.event_name == 'workflow_dispatch' && inputs.produce_alpha_artifacts
if: github.event_name == 'workflow_dispatch' && inputs.produce_alpha_artifacts && (inputs.alpha_artifact_scope == 'local' || inputs.alpha_artifact_scope == 'all')
env:
IMAGE: qinglong3-local-application:ci-${{ matrix.image_arch }}
OPERATOR_IMAGE: qinglong3-local-operator:ci-${{ matrix.image_arch }}
@@ -622,7 +632,7 @@ jobs:
node scripts/ql3-local-alpha-trial-kit-bundle.cjs \
--mode=audit --bundle="${RUNNER_TEMP}/ql3-alpha-local-${{ matrix.image_arch }}"
- name: Upload the tested native Local Alpha trial kit
if: github.event_name == 'workflow_dispatch' && inputs.produce_alpha_artifacts
if: github.event_name == 'workflow_dispatch' && inputs.produce_alpha_artifacts && (inputs.alpha_artifact_scope == 'local' || inputs.alpha_artifact_scope == 'all')
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: ql3-alpha-${{ github.sha }}-local-${{ matrix.image_arch }}
@@ -825,7 +835,7 @@ jobs:
--image=${{ matrix.image }}
--inventory-root=/opt/qinglong/node_modules
- name: Package the tested native Cluster Alpha image
if: github.event_name == 'workflow_dispatch' && inputs.produce_alpha_artifacts
if: github.event_name == 'workflow_dispatch' && inputs.produce_alpha_artifacts && (inputs.alpha_artifact_scope == 'cluster' || inputs.alpha_artifact_scope == 'all')
env:
IMAGE: ${{ matrix.repository }}:ci-${{ matrix.image_arch }}
IMAGE_ARCH: ${{ matrix.image_arch }}
@@ -874,7 +884,7 @@ jobs:
fs.writeFileSync(process.env.MANIFEST, `${JSON.stringify(manifest)}\n`, { mode: 0o600, flag: 'wx' });
NODE
- name: Upload the tested native Cluster Alpha image
if: github.event_name == 'workflow_dispatch' && inputs.produce_alpha_artifacts
if: github.event_name == 'workflow_dispatch' && inputs.produce_alpha_artifacts && (inputs.alpha_artifact_scope == 'cluster' || inputs.alpha_artifact_scope == 'all')
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: ql3-alpha-${{ github.sha }}-${{ matrix.image }}-${{ matrix.image_arch }}
@@ -1632,3 +1642,73 @@ jobs:
path: ${{ runner.temp }}/ql3-plugin-package-recovery-e2e/report.json
if-no-files-found: warn
retention-days: 14
local-alpha-milestone:
name: Finalize the Local Alpha milestone
if: github.event_name == 'workflow_dispatch' && inputs.produce_alpha_artifacts && (inputs.alpha_artifact_scope == 'local' || inputs.alpha_artifact_scope == 'all')
needs:
- backend
- service-manager-bridge
- linux-resource-envelopes
- linux-resource-release-evidence
- supply-chain
- local-image
- cluster-image
- cluster-console-capacity-release-evidence
- image-oci
- worker-runtime
- local-profiles
- cluster-postgres
- cluster-postgres-ha
- cluster-cloudnativepg-live
- cluster-provider-credential-test-kubernetes-live
- cluster-secret-binding-mounted-provider-kubernetes-live
- cluster-vault-kv-worker-secret-live
- cluster-plugin-package-kubernetes-live
- cluster-plugin-package-recovery-e2e
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: '24.18.0'
- name: Download the exact amd64 Local Alpha trial kit
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: ql3-alpha-${{ github.sha }}-local-amd64
path: ${{ runner.temp }}/ql3-alpha-local-milestone-input/amd64
- name: Download the exact arm64 Local Alpha trial kit
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: ql3-alpha-${{ github.sha }}-local-arm64
path: ${{ runner.temp }}/ql3-alpha-local-milestone-input/arm64
- name: Close both native trial kits into one milestone index
run: |
set -euo pipefail
umask 077
node scripts/ql3-local-alpha-milestone.cjs \
--mode=finalize \
--amd64-bundle="${RUNNER_TEMP}/ql3-alpha-local-milestone-input/amd64" \
--arm64-bundle="${RUNNER_TEMP}/ql3-alpha-local-milestone-input/arm64" \
--source-revision=${{ github.sha }} \
--repository=${{ github.repository }} \
--workflow-ref="${{ github.workflow_ref }}" \
--workflow-sha=${{ github.workflow_sha }} \
--event=${{ github.event_name }} \
--run-id=${{ github.run_id }} \
--run-attempt=${{ github.run_attempt }} \
--readme=docs/operations/ql3-local-alpha-milestone.md \
--output="${RUNNER_TEMP}/ql3-alpha-local-milestone"
node scripts/ql3-local-alpha-milestone.cjs \
--mode=audit \
--milestone="${RUNNER_TEMP}/ql3-alpha-local-milestone"
- name: Upload the closed Local Alpha milestone index
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: ql3-alpha-${{ github.sha }}-local-milestone
path: ${{ runner.temp }}/ql3-alpha-local-milestone
if-no-files-found: error
retention-days: 30
compression-level: 0
overwrite: false
include-hidden-files: false