fix: use internal Harbor URL in .woodpecker.yaml (#5) #10
No reviewers
Labels
No labels
domain:backend
domain:devops
domain:frontend
status:approved
status:in-progress
status:needs-fix
status:qa
type:bug
type:devops
type:feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
ldraney/notion-mcp-remote!10
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "5-fix-harbor-internal-url"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Switch the Woodpecker
build-and-pushstep's registry from the external Tailscale Funnel URL to the in-cluster Harbor service URL. CI runs inside the cluster, so it must push to the internal service, not the external ingress.Fixes #5
Rule
Per
service-onboarding-sopPre-Deploy Validation Checklist: CI pipelines must push toharbor-core.harbor.svc.cluster.local(in-cluster). The externalharbor.tail5b443a.ts.netURL is for humans and runtime image pulls, not for CI.Changes
One line changed in
.woodpecker.yaml(line 22):Before:
After:
The repo path, tags, dockerfile, build_args, and secret references are all preserved exactly.
Out of Scope
k8s/deployment.yamlalso referencesharbor.tail5b443a.ts.netfor the kubelet's runtime image pull. That is a separate concern (kubelet-in-cluster image pulls) and was explicitly flagged informational-only by the scope review (review-1042-2026-04-21). Not touched here.Test Plan
.woodpecker.yamlparses as valid YAML (python3 -c "import yaml; yaml.safe_load(open('.woodpecker.yaml'))"returns clean)k8s/deployment.yamluntouchedReview Checklist
.woodpecker.yamlis modified (one line)harbor-core.harbor.svc.cluster.local(internal cluster DNS, matches SOP)notion-mcp-remote/notion-mcp-remoteafter the hostname is preservedk8s/deployment.yamlis NOT modified (out of scope per review)Related Notes
board-notion-mcp-remotereview-1042-2026-04-21(APPROVED, taggedreview,ready)service-onboarding-sop(Pre-Deploy Validation Checklist)story-notion-mcp-remote-ops-deploy-gitopsarch-deployment-notion-mcp-remoteproject-notion-mcp-remoteDev agent self-check (pre-QA)
Dev agent completed the implementation for #5. Per SOP-12 this PR still needs a separate QA review before merge. The Dev agent's toolset does not include a subagent-spawn mechanism, so the parent session should dispatch the
qaagent via/review-pr forgejo_admin/notion-mcp-remote#10.Self-check against the PR's Review Checklist
.woodpecker.yamlis modified (one line) -- diff is +1/-1, one fileharbor-core.harbor.svc.cluster.local(internal cluster DNS)notion-mcp-remote/notion-mcp-remoteafter the hostname is preserved (unchanged in diff)k8s/deployment.yamlis NOT modified (out of scope perreview-1042-2026-04-21)python3 -c "import yaml; yaml.safe_load(open('.woodpecker.yaml'))"-> OK)Notes for the QA reviewer
registry:key at line 22. No structural or indentation change.service-onboarding-sopand resolves from the Woodpecker agent's cluster.k8s/deployment.yamlstill references the external URL -- intentional, informational-only per scope review. Separate concern (kubelet runtime image pull).VERDICT: PENDING_QA
PR #10 Review
DOMAIN REVIEW
Stack: Woodpecker CI + Kaniko plugin + Harbor registry (YAML only).
Change verified:
.woodpecker.yaml:22—registry: harbor.tail5b443a.ts.net→registry: harbor-core.harbor.svc.cluster.localrepo: notion-mcp-remote/notion-mcp-remote,tags: $CI_COMMIT_SHA,dockerfile: Dockerfile.k8s,build_args,username/passwordsecret refs, and step-levelwhen:triggers all preserved byte-for-byte.teststep, top-levelwhen:block, or any other file.Correctness vs. SOP (
service-onboarding-sopPre-Deploy Validation Checklist — "CI registry URL" row):harbor-core.harbor.svc.cluster.local(in-cluster service DNS, bypasses Tailscale DERP which is unreliable from inside the cluster).harbor-core.harbor.svc.cluster.local. Exact match.notion-mcp-remote/notion-mcp-remotecontinues to match the Harbor project naming convention (service-key/image-name).Out-of-scope
k8s/deployment.yaml:23(image: harbor.tail5b443a.ts.net/...) — correctly NOT touched. This is the kubelet runtime image pull reference, which is a separate concern from the CI push target. The scope reviewreview-1042-2026-04-21explicitly flagged this as informational-only / SCOPE-FUTURE and instructed agents not to expand the bundle. Preserving it here is the correct behavior.YAML quality: Valid YAML; indentation consistent with surrounding
settings:block; no trailing whitespace introduced by the diff.BLOCKERS
None.
NITS
None. The diff is minimal, surgical, and exactly matches the SOP prescription.
SOP COMPLIANCE
5-fix-harbor-internal-url— follows{issue-number}-{kebab-case-purpose}service-onboarding-sop,review-1042-2026-04-21,story-notion-mcp-remote-ops-deploy-gitops,arch-deployment-notion-mcp-remote,project-notion-mcp-remote, board item #1042teststep is untouched).env, no credentials in diffPROCESS OBSERVATIONS
story-ops-deploy-gitops(#1043 var.services entry, #1044 kustomize overlay, #1048 adjacent CI work) by giving those downstream items a working CI push target.$HARBOR_INTERNALfallback path in the parent issue). Runtime path (kubelet image pull viak8s/deployment.yaml) is unaffected.[SCOPE-FUTURE]follow-up onk8s/deployment.yamlimage pull URL should be filed as a separate ticket if/when evaluation of kubelet cluster-internal DNS resolution is warranted — not a gap in this PR.VERDICT: APPROVED