fix: report GitOps renderer rollout scope
This commit is contained in:
@@ -59,6 +59,7 @@ export const DEFAULT_GITOPS_ONLY_PATHS = Object.freeze([
|
||||
"deploy/gitops/",
|
||||
"deploy/frp/",
|
||||
"scripts/gitops-render.mjs",
|
||||
"scripts/src/gitops-render/",
|
||||
"scripts/src/runtime-lane.ts",
|
||||
"tsconfig.gitops.json"
|
||||
]);
|
||||
@@ -69,6 +70,7 @@ export const DEFAULT_GITOPS_RENDER_PATHS = Object.freeze([
|
||||
"deploy/gitops/",
|
||||
"deploy/frp/",
|
||||
"scripts/gitops-render.mjs",
|
||||
"scripts/src/gitops-render/",
|
||||
"scripts/src/runtime-lane.ts",
|
||||
"tsconfig.gitops.json"
|
||||
]);
|
||||
@@ -111,6 +113,7 @@ export async function createCiPlan(options = {}) {
|
||||
const envReuseServices = enabledEnvReuseServices(deployJson, lane, serviceIdResolution.serviceIds);
|
||||
const envArtifactGroupByService = envArtifactGroupsByService(runtimeReuseConfig, serviceIdResolution.serviceIds);
|
||||
const globalChange = classifyGlobalChange(normalizedChangedPaths);
|
||||
const gitopsRenderChanged = hasGitOpsRenderChange(normalizedChangedPaths);
|
||||
const hasGoService = componentModels.some((model) => model.runtimeKind === "go-service");
|
||||
const dockerfileHash = await hashGitPaths(repoRoot, targetRef, [
|
||||
...envReuseRecipe.additionalEnvPaths,
|
||||
@@ -261,10 +264,10 @@ export async function createCiPlan(options = {}) {
|
||||
const catalogReuse = envReuse
|
||||
? envReuseCandidate({ catalogRecord, envChanged, environmentImage, environmentDigest, environmentInputHash })
|
||||
: reuseCandidate(catalogRecordForReuse, imageRelevantChangedPaths.length > 0, componentInputChanged);
|
||||
const plannedAffected = envReuse
|
||||
const serviceInputAffected = envReuse
|
||||
? Boolean(envChanged || codeChanged || runtimeConfigChanged)
|
||||
: imageRelevantChangedPaths.length > 0 || componentInputChanged || catalogReuse.status === "candidate-no-catalog" || catalogReuse.status === "candidate-unverified-digest";
|
||||
const plannedBuildRequired = envReuse ? envChanged === true : plannedAffected;
|
||||
const plannedBuildRequired = envReuse ? envChanged === true : serviceInputAffected;
|
||||
const runtimeReuseDecision = await runtimeReuseDecisionForService({
|
||||
repoRoot,
|
||||
baseRef,
|
||||
@@ -273,11 +276,12 @@ export async function createCiPlan(options = {}) {
|
||||
config: runtimeReuseByService.get(model.serviceId) ?? null
|
||||
});
|
||||
const reuseArtifactReady = !envReuse || environmentReady === true;
|
||||
const affected = runtimeReuseDecision.runtimeReuseHit === true && reuseArtifactReady
|
||||
const affectedByServiceInputs = runtimeReuseDecision.runtimeReuseHit === true && reuseArtifactReady
|
||||
? false
|
||||
: runtimeReuseDecision.envReuseHit === true && reuseArtifactReady
|
||||
? runtimeReuseDecision.sourceIdentityHit === false || runtimeConfigChanged === true
|
||||
: plannedAffected;
|
||||
: serviceInputAffected;
|
||||
const affected = gitopsRenderChanged || affectedByServiceInputs;
|
||||
const buildRequired = runtimeReuseDecision.skipImageBuild === true && reuseArtifactReady ? false : plannedBuildRequired;
|
||||
services.push({
|
||||
serviceId: model.serviceId,
|
||||
@@ -340,7 +344,9 @@ export async function createCiPlan(options = {}) {
|
||||
envChangedPaths: relevantEnvMatches,
|
||||
codeChangedPaths: relevantCodeMatches,
|
||||
reason: affected
|
||||
? reasonForService({ directMatches, sharedMatches, runtimeDepMatches, buildSystemMatches, catalogReuse, envReuse, envChanged, runtimeConfigChanged, environmentInputChanged: effectiveEnvironmentInputChanged, codeChanged, reuseRegistry })
|
||||
? gitopsRenderChanged && !affectedByServiceInputs
|
||||
? ["gitops-render-input-changed"]
|
||||
: reasonForService({ directMatches, sharedMatches, runtimeDepMatches, buildSystemMatches, catalogReuse, envReuse, envChanged, runtimeConfigChanged, environmentInputChanged: effectiveEnvironmentInputChanged, codeChanged, reuseRegistry })
|
||||
: reasonForUnchanged(globalChange),
|
||||
reuse: catalogReuse
|
||||
});
|
||||
@@ -353,7 +359,6 @@ export async function createCiPlan(options = {}) {
|
||||
const rolloutWithoutImageBuildServices = services.filter((service) => service.affected && !service.buildRequired).map((service) => service.serviceId);
|
||||
const reusedServices = services.filter((service) => !service.affected && !service.buildRequired).map((service) => service.serviceId);
|
||||
const imageBuildSkippedServices = services.filter((service) => !service.buildRequired).map((service) => service.serviceId);
|
||||
const gitopsRenderChanged = hasGitOpsRenderChange(normalizedChangedPaths);
|
||||
return {
|
||||
planVersion: CI_PLAN_VERSION,
|
||||
sourceCommitId,
|
||||
@@ -407,7 +412,7 @@ export async function createCiPlan(options = {}) {
|
||||
envArtifactGroups: envArtifactGroupPlans,
|
||||
willRunGitopsPromote: globalChange.gitopsOnly || affectedServices.length > 0 || gitopsRenderChanged,
|
||||
noImageBuildReason: buildServices.length === 0
|
||||
? (affectedServices.length > 0 ? "env-reuse-code-only-rollout" : gitopsRenderChanged ? "gitops-render-only-change" : globalChange.summary)
|
||||
? (gitopsRenderChanged ? "gitops-render-only-change" : affectedServices.length > 0 ? "env-reuse-code-only-rollout" : globalChange.summary)
|
||||
: null
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user