将正式 Full Build 纳入 release 每日调度
Project CI / AI game creator shell Rust crates (push) Successful in 1m22s
Project CI / AI game creator shell Rust smoke (push) Successful in 1m54s
Project CI / Native shell tests (push) Failing after 4m4s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 6m23s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 7m53s
Project CI / Backend tests (push) Successful in 7m54s
Project CI / Frontend tests (push) Successful in 5m34s
Project CI / Repository checks (push) Successful in 5m31s
Project CI / AI game creator shell web tests (push) Successful in 4m16s

按服务端与客户端 scope 分别触发 release Full Build 和 AGC 双平台
等待并汇总三类下游结果,按成功 lane 推进 revision
同步 release 参数、生产门禁与运维文档
This commit is contained in:
2026-09-22 17:59:49 +08:00
parent 4d45afbd6e
commit 54a5401cce
8 changed files with 269 additions and 60 deletions
+59 -5
View File
@@ -7761,7 +7761,7 @@ for (const [file, content] of [
if (/\btriggers\s*\{/u.test(content) || content.includes('cron(')) {
failed = true;
console.error(
`[check:production-ops] ${file} 不得自带定时触发器;版本检查与触发必须由 Genarrative-Scheduled-Revision-Trigger 统一负责。`,
`[check:production-ops] ${file} 不得自带定时触发器;版本检查与触发必须由两条定时调度管线统一负责。`,
);
}
}
@@ -7908,6 +7908,10 @@ for (const [snippet, reason] of [
['disableConcurrentBuilds()', '必须禁止 release 调度器并发触发'],
['skipDefaultCheckout(true)', 'release 调度器不得依赖本地 SCM 工作区'],
['git ls-remote', 'release 调度器必须直接从远端解析分支版本'],
[
"FULL_BUILD_JOB_NAME = 'Genarrative-Full-Build-And-Deploy'",
'必须声明 release Full Build 目标 Job',
],
[
"AGC_WINDOWS_BUILD_JOB_NAME = 'Genarrative-Agc-Windows-Build'",
'必须声明 AGC Windows release 构建目标 Job',
@@ -7916,6 +7920,19 @@ for (const [snippet, reason] of [
"AGC_MACOS_BUILD_JOB_NAME = 'Genarrative-Agc-MacOS-Build'",
'必须声明 AGC macOS release 构建目标 Job',
],
[
"FULL_REVISION_STATE_FILE = '.jenkins-last-release-full-revision'",
'必须独立记录 Full Build 成功 revision',
],
[
"AGC_REVISION_STATE_FILE = '.jenkins-last-release-agc-revision'",
'必须独立记录 AGC 双平台成功 revision',
],
['full=changed', 'release 调度器必须计算服务端 Full Build scope'],
[
"env.FULL_BUILD_SCOPE = readScope('full')",
'release 调度器必须解析 Full Build scope',
],
[
"string(name: 'AGC_CHANNEL', value: 'release-unified')",
'release 调度器必须先通过发号 Job 获取统一总版本号',
@@ -7925,27 +7942,64 @@ for (const [snippet, reason] of [
'release 调度器必须把 Windows 与 macOS 都发到 release 分区',
],
[
'build job: env.AGC_WINDOWS_BUILD_JOB_NAME, wait: false, propagate: false, parameters: agcParameters',
"string(name: 'DEPLOY_TARGET', value: 'release')",
'release Full Build 必须固定部署到 release',
],
[
"booleanParam(name: 'CONFIRM_RELEASE_DEPLOY_AGENT', value: true)",
'release Full Build 必须确认使用独立 release 部署 agent',
],
[
"string(name: 'DATABASE_BACKUP_MODE', value: params.DATABASE_BACKUP_MODE)",
'release Full Build 必须显式透传数据库备份策略',
],
[
"string(name: 'STDB_API_ROLLOUT_MODE', value: params.STDB_API_ROLLOUT_MODE)",
'release Full Build 必须显式透传 Stdb/API rollout 策略',
],
[
'def runDownstream = { String jobName, List jobParameters, int timeoutMinutes ->',
'release 调度器必须统一等待并收集三个下游结果',
],
[
'build job: jobName,\n wait: true,\n propagate: false,',
'release 下游必须等待完成并保留每个 Job 的结果',
],
[
'branches[env.FULL_BUILD_JOB_NAME] = {',
'release 调度器必须触发 Full Build',
],
[
'branches[env.AGC_WINDOWS_BUILD_JOB_NAME] = {',
'release 调度器必须触发 AGC Windows release 构建',
],
[
'build job: env.AGC_MACOS_BUILD_JOB_NAME, wait: false, propagate: false, parameters: agcMacosParameters',
'branches[env.AGC_MACOS_BUILD_JOB_NAME] = {',
'release 调度器必须触发 AGC macOS release 构建',
],
[
"booleanParam(name: 'SKIP_IF_SUPERSEDED', value: true)",
'release 调度器必须让 macOS 节点恢复后跳过过期排队构建',
],
[
'if (fullSucceeded) {',
'只有 Full Build 成功后才能推进 Full Build revision',
],
['if (agcSucceeded) {', '只有 AGC 双平台成功后才能推进 AGC revision'],
[
'error("release 下游未全部成功: ${summary}")',
'任一 release 下游失败时调度器必须失败',
],
]) {
if (!scheduledReleaseTriggerContent.includes(snippet)) {
failed = true;
console.error(`[check:production-ops] release 调度管线${reason}`);
}
}
if (scheduledReleaseTriggerContent.includes('FULL_BUILD_JOB_NAME')) {
if (scheduledReleaseTriggerContent.includes('wait: false')) {
failed = true;
console.error(
'[check:production-ops] release 调度管线只负责 AGC release 客户端构建,不得触发 Full Build。',
'[check:production-ops] release 调度管线不得 fire-and-forget,必须等待并汇总 Full Build 与 AGC 结果。',
);
}
if (