fix: expose node git mirror flush partial success
This commit is contained in:
@@ -1085,6 +1085,13 @@ console.log(JSON.stringify({
|
||||
githubSource: first.githubSource || null,
|
||||
localGitops: first.localGitops || null,
|
||||
githubGitops: first.githubGitops || null,
|
||||
refSources: {
|
||||
localSource: 'refs/heads/' + (first.sourceBranch || ''),
|
||||
githubSource: 'refs/mirror-stage/heads/' + (first.sourceBranch || ''),
|
||||
localGitops: 'refs/heads/' + (first.gitopsBranch || ''),
|
||||
githubGitops: 'refs/mirror-stage/heads/' + (first.gitopsBranch || ''),
|
||||
githubFieldsAreMirrorStageCache: true
|
||||
},
|
||||
pendingFlush,
|
||||
flushNeeded: pendingFlush,
|
||||
githubInSync: Object.values(items).every((item) => item.sourceInSync === true && item.gitopsInSync === true),
|
||||
@@ -1203,18 +1210,49 @@ function gitMirrorFlushShell(node: ControlPlaneNodeSpec, target: ControlPlaneTar
|
||||
"test -d \"$repo/objects\"",
|
||||
"git --git-dir=\"$repo\" remote set-url origin \"$remote\" || git --git-dir=\"$repo\" remote add origin \"$remote\"",
|
||||
"local_gitops=$(git --git-dir=\"$repo\" rev-parse --verify \"refs/heads/${gitops_branch}^{commit}\" 2>/dev/null || true)",
|
||||
"push_status=skipped",
|
||||
"push_exit=0",
|
||||
"fetch_status=skipped",
|
||||
"fetch_exit=0",
|
||||
"if [ -n \"$local_gitops\" ]; then",
|
||||
" set +e",
|
||||
" git --git-dir=\"$repo\" -c remote.origin.mirror=false push origin \"refs/heads/${gitops_branch}:refs/heads/${gitops_branch}\"",
|
||||
" git --git-dir=\"$repo\" fetch origin \"+refs/heads/${gitops_branch}:refs/mirror-stage/heads/${gitops_branch}\"",
|
||||
" push_exit=$?",
|
||||
" set -e",
|
||||
" if [ \"$push_exit\" = \"0\" ]; then",
|
||||
" push_status=succeeded",
|
||||
" set +e",
|
||||
" git --git-dir=\"$repo\" fetch origin \"+refs/heads/${gitops_branch}:refs/mirror-stage/heads/${gitops_branch}\"",
|
||||
" fetch_exit=$?",
|
||||
" set -e",
|
||||
" if [ \"$fetch_exit\" = \"0\" ]; then fetch_status=succeeded; else fetch_status=failed; fi",
|
||||
" else",
|
||||
" push_status=failed",
|
||||
" fi",
|
||||
"fi",
|
||||
"github_gitops=$(git --git-dir=\"$repo\" rev-parse --verify \"refs/mirror-stage/heads/${gitops_branch}^{commit}\" 2>/dev/null || true)",
|
||||
"pending=false; if [ -n \"$local_gitops\" ] && { [ -z \"$github_gitops\" ] || [ \"$local_gitops\" != \"$github_gitops\" ]; }; then pending=true; fi",
|
||||
"export repository gitops_branch started_at local_gitops github_gitops pending",
|
||||
"status=succeeded",
|
||||
"partial_success=",
|
||||
"degraded_reason=",
|
||||
"exit_code=0",
|
||||
"if [ \"$push_status\" = \"failed\" ]; then",
|
||||
" status=failed",
|
||||
" degraded_reason=git-mirror-push-failed",
|
||||
" exit_code=$push_exit",
|
||||
"elif [ \"$push_status\" = \"succeeded\" ] && [ \"$fetch_status\" = \"failed\" ]; then",
|
||||
" status=partial-success",
|
||||
" partial_success=push-succeeded-fetch-failed",
|
||||
" degraded_reason=git-mirror-post-push-fetch-failed",
|
||||
" exit_code=44",
|
||||
"fi",
|
||||
"export repository gitops_branch started_at local_gitops github_gitops pending push_status push_exit fetch_status fetch_exit status partial_success degraded_reason",
|
||||
"node <<'NODE' | tee /cache/HWLAB.last-flush.json",
|
||||
"const payload = { event: 'git-mirror-flush', repo: process.env.repository, status: 'succeeded', startedAt: process.env.started_at, flushedAt: new Date().toISOString(), gitopsBranch: process.env.gitops_branch, localGitops: process.env.local_gitops || null, githubGitops: process.env.github_gitops || null, pendingFlush: process.env.pending === 'true' };",
|
||||
"const payload = { event: 'git-mirror-flush', repo: process.env.repository, status: process.env.status || 'failed', partialSuccess: process.env.partial_success || null, degradedReason: process.env.degraded_reason || null, startedAt: process.env.started_at, flushedAt: new Date().toISOString(), gitopsBranch: process.env.gitops_branch, localGitops: process.env.local_gitops || null, githubGitops: process.env.github_gitops || null, pendingFlush: process.env.pending === 'true', stages: { push: process.env.push_status || null, pushExitCode: Number.parseInt(process.env.push_exit || '0', 10), postPushFetch: process.env.fetch_status || null, postPushFetchExitCode: Number.parseInt(process.env.fetch_exit || '0', 10) } };",
|
||||
"console.log(JSON.stringify(payload));",
|
||||
"NODE",
|
||||
"cat /cache/HWLAB.last-flush.json",
|
||||
"if [ \"$exit_code\" != \"0\" ]; then exit \"$exit_code\"; fi",
|
||||
"",
|
||||
].join("\n");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user