将正式 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
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:
@@ -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 (
|
||||
|
||||
Reference in New Issue
Block a user