RHOAIENG-50709: add ADR for CI/CD on firewalled clusters#793
RHOAIENG-50709: add ADR for CI/CD on firewalled clusters#793
Conversation
This comment has been minimized.
This comment has been minimized.
d761513 to
27a7abe
Compare
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
Re: "Missing Status field", I'm addressing that in #797 |
Merge Readiness — Blockers Found
|
27a7abe to
ef47bf7
Compare
|
Test comment |
ef47bf7 to
974cfc1
Compare
|
PR 793 review posted separately - see below |
|
Claude Code Review Summary PR 793 adds ADR-0007 documenting the CI/CD deployment strategy for firewalled OpenShift clusters. The content is well-structured and clearly explains the phased approach (standalone runner to ARC). However, the document deviates from the project ADR template and README-defined workflow in several ways that reduce navigability and completeness. Issues by Severity Blocker Issues: None. Critical Issues: None. Major Issues M1. Missing Status field — The ADR README defines an explicit lifecycle: Proposed → Accepted → Deprecated → Superseded. Every accepted ADR (0001–0006) includes a Fix: add M2. Considered Options placed after Decision — The template and all accepted ADRs (0001–0005) list Considered Options before the Decision Outcome so readers understand the option space before seeing the rationale. Here the decision is presented first and rejected options follow — a structural inversion of the established pattern. Fix: move the Considered Options section above Decision. M3. README index not updated — The README table ends at ADR-0005 (ADR-0006 is also absent). Per the ADR workflow defined in the README, the table should be updated when an ADR is proposed. Fix: append both ADR-0006 (Ambient Runner SDK Architecture, 2026-02-10) and ADR-0007 (this ADR, 2026-03-04) to the table. Minor Issues m4. Missing Technical Story field — The template requires a Fix: add m5. Missing Decision Drivers section — The two driving properties (Immediacy and Visibility) are described in the Context prose but not extracted into a dedicated Decision Drivers section, making it harder to evaluate future alternatives against the same criteria. m6. Consequences is a top-level section — Per the template, Consequences (Positive/Negative/Risks) should be a subsection under Decision Outcome, not a top-level sibling. m7. Missing Implementation Notes and Validation sections — These template sections are valuable post-rollout. Add them with [TBD] placeholders now so they get filled in after the runner is deployed. Positive Highlights
Recommendations
Reviewed by Claude Code using repository standards from |
Present a phased approach for running GitHub Actions inside firewalled OpenShift. Phase 1 deploys a standalone runner with no CRDs or cluster-level permissions. Phase 2 replaces that with an upgrade to Actions Runner Controller (ARC), if IT approves CRDs. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
974cfc1 to
59f3703
Compare
SummaryPR adds ADR-0007, a phased CI/CD deployment strategy for firewalled OpenShift clusters using self-hosted GitHub Actions runners. The architectural reasoning is sound and the trade-off analysis is honest. The document is well-written, but deviates from the project ADR template structure and has a security guidance gap around credential storage. No blocker or critical issues. Major Issues:
Minor Issues:
Positive Highlights:
Recommendations:
|
|
Claude Code Review - PR 793 adds ADR-0007 documenting a phased CI/CD deployment strategy for firewalled OpenShift clusters. |
|
Full review below - Part 1 of 3: BLOCKER ISSUES: None. CRITICAL ISSUES: None. MAJOR ISSUES: 1. Missing secure credential storage guidance (docs/internal/adr/0007-cicd-deployment-strategy.md, line 31). The document describes GitHub App credentials (App ID + private key) but does not specify how they must be stored. In Kubernetes context they must be stored as Kubernetes Secrets. Without this guidance an implementer could store the key insecurely (ConfigMap, baked into image, etc). Suggested addition: The GitHub App private key and App ID MUST be stored as a Kubernetes Secret and mounted into the runner pod. They must NOT be stored in a ConfigMap, baked into the container image, or committed to source control. Violates: security-standards.md. |
|
Part 2 of 3 - MINOR ISSUES: 1. Missing Status field (line 3): Every other ADR (0001-0006) includes Status: Accepted after the title block. Suggested: add Status: Accepted. 2. Missing Technical Story link: RHOAIENG-50709 is in the PR description but not the document. Add: Technical Story: https://issues.redhat.com/browse/RHOAIENG-50709. 3. Temporal language (line 23): 'This week I have already moved forward with trialing Phase 1' will confuse future readers. Replace with a date-anchored statement e.g. 'As of 2026-03-04, Phase 1 has been trialled in the target environment.' 4. Inconsistent bullet formatting (lines 97-98): Two bullets have a leading space before the asterisk, unlike every other bullet. 5. AI co-authorship non-standard (line 5): Authors: Ken Dreyer (with Gemini 3 Pro) - no other ADR attributes an AI assistant. Consider removing the parenthetical. |
|
Part 3 of 3 - POSITIVE HIGHLIGHTS: Pragmatic phased approach: Phase 1 deploys with zero IT dependencies - exactly the right call. Proactive risk identification: The 'Risks of Remaining on Phase 1' section goes beyond template requirements and candidly enumerates single-point-of-failure, no-alerting, and manual recovery concerns - genuinely useful for future operators. Concurrency addressed: Proactively identifies that ARC reintroduces concurrent deploy races and proposes the GitHub Actions concurrency key, with honest acknowledgment it negates most of ARC's benefit. Security-conscious design: Outbound-only model, namespace-scoped ServiceAccount, and short-lived GitHub App tokens align with project security standards. Clear option rejection: ArgoCD and VPN options rejected with specific technical reasons. RECOMMENDATIONS: 1. (Major) Add guidance that GitHub App credentials must be stored as Kubernetes Secrets. 2. (Minor) Add Status and Technical Story fields to the header. 3. (Minor) Replace 'This week...' with a date-anchored statement. 4. (Minor) Fix leading-space bullets on lines 97-98. 5. (Minor) Consider removing '(with Gemini 3 Pro)' from Authors. --- Reviewed with Claude Code (claude-sonnet-4-6) using amber.review |
Present a phased approach for running GitHub Actions inside firewalled OpenShift.
Phase 1 deploys a standalone runner with no CRDs or cluster-level permissions.
Phase 2 upgrades to Actions Runner Controller (ARC) if IT approves CRDs.
https://issues.redhat.com/browse/RHOAIENG-50709