fix: 修正NapCat运行时发布确认门禁

This commit is contained in:
sunlei 2026-06-25 03:51:46 +08:00
parent 36da962bb0
commit f9ce9b6015
2 changed files with 59 additions and 3 deletions

View File

@ -46,9 +46,6 @@ pipeline {
}
steps {
script {
if (params.CONFIRM_API_PROMOTION_TARGET != 'PROMOTE_KT_TEMPLATE_API_MAIN') {
error('CONFIRM_API_PROMOTION_TARGET must equal PROMOTE_KT_TEMPLATE_API_MAIN before API promotion runs.')
}
requireRuntimeOverrides(
params.QQBOT_NAPCAT_IMAGE_OVERRIDE,
params.QQBOT_NAPCAT_DESKTOP_PROFILE_VERSION_OVERRIDE
@ -72,6 +69,9 @@ pipeline {
}
steps {
script {
if (params.CONFIRM_API_PROMOTION_TARGET != 'PROMOTE_KT_TEMPLATE_API_MAIN') {
error('CONFIRM_API_PROMOTION_TARGET must equal PROMOTE_KT_TEMPLATE_API_MAIN before API promotion runs.')
}
requireRuntimeOverrides(
params.QQBOT_NAPCAT_IMAGE_OVERRIDE,
params.QQBOT_NAPCAT_DESKTOP_PROFILE_VERSION_OVERRIDE

View File

@ -524,6 +524,62 @@ export async function runSelfTest(): Promise<void> {
);
}
}
const runtimeImageBuildStageStart = runtimeReleaseJenkinsTemplate.indexOf(
"stage('Runtime image build and publish')",
);
const apiPromotionStageStart = runtimeReleaseJenkinsTemplate.indexOf(
"stage('API promotion')",
);
const pipelineEndBeforeRuntimeHelpers = runtimeReleaseJenkinsTemplate.indexOf(
"\n}\n\n/**",
apiPromotionStageStart,
);
if (
runtimeImageBuildStageStart === -1 ||
apiPromotionStageStart === -1 ||
pipelineEndBeforeRuntimeHelpers === -1 ||
runtimeImageBuildStageStart > apiPromotionStageStart
) {
throw new Error("NapCat runtime Jenkins template stage slice self-check failed");
}
const runtimeImageBuildStage = runtimeReleaseJenkinsTemplate.slice(
runtimeImageBuildStageStart,
apiPromotionStageStart,
);
const apiPromotionStage = runtimeReleaseJenkinsTemplate.slice(
apiPromotionStageStart,
pipelineEndBeforeRuntimeHelpers,
);
if (runtimeImageBuildStage.includes("CONFIRM_API_PROMOTION_TARGET")) {
throw new Error(
"NapCat runtime Jenkins runtime image build stage must not check API promotion confirmation",
);
}
if (!apiPromotionStage.includes("CONFIRM_API_PROMOTION_TARGET")) {
throw new Error(
"NapCat runtime Jenkins API promotion stage missing confirmation target check",
);
}
if (!apiPromotionStage.includes("PROMOTE_KT_TEMPLATE_API_MAIN")) {
throw new Error(
"NapCat runtime Jenkins API promotion stage missing production confirmation value",
);
}
const apiPromotionConfirmationIndex = apiPromotionStage.indexOf(
"CONFIRM_API_PROMOTION_TARGET",
);
const apiPromotionBuildIndex = apiPromotionStage.indexOf(
"build job: params.API_PROMOTION_JOB",
);
if (
apiPromotionConfirmationIndex === -1 ||
apiPromotionBuildIndex === -1 ||
apiPromotionConfirmationIndex > apiPromotionBuildIndex
) {
throw new Error(
"NapCat runtime Jenkins API promotion confirmation must run before API build job",
);
}
const codexExecutionArtifactRoot = resolveInsideRoot(
".kt-workspace/test-artifacts/napcat-codex-runner-self-test",
);