Skip to content

chore(ci): retarget build/deploy from cyberfabric to constructorfabric - #1270

Merged
cyberantonz merged 7 commits into
mainfrom
chore/migrate-ghcr-namespace
Jun 8, 2026
Merged

chore(ci): retarget build/deploy from cyberfabric to constructorfabric#1270
cyberantonz merged 7 commits into
mainfrom
chore/migrate-ghcr-namespace

Conversation

@cyberantonz

@cyberantonz cyberantonz commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Flip every CI / chart / helm-values / helper-script reference from ghcr.io/cyberfabric (and github.com/cyberfabric) to the new constructorfabric namespace after the GitHub org rename.
  • Rename the frontend Docker image cyber-insight-frontinsight-front in both the umbrella chart (charts/insight/values.yaml) and the frontend subchart (src/frontend/helm/values.yaml) to match what insight-front now publishes.
  • Cross-repo dispatch comments + CI git-author email updated for parity with the new org.

15 files changed, 35 insertions / 35 deletions.

Out of scope (tracked separately)

  • Runtime K8s annotation namespace insight.cyberfabric.com/* — renaming requires re-annotating already-deployed Secrets in lockstep, so it's its own change with a deploy playbook.
  • Connector descriptor.yaml image refs — left for the next CI auto-bump (build-images.yml's descriptor-bump job rewrites them on the next push).

Test plan

  • Trigger build-images.yml on this branch and confirm images push to ghcr.io/constructorfabric/...
  • Confirm umbrella chart pushes to oci://ghcr.io/constructorfabric/charts/insight
  • helm template charts/insight renders without unresolved repos
  • Verify dev-up.sh pulls FE from ghcr.io/constructorfabric/insight-front when FE_IMAGE_REPOSITORY is unset

Co-companion PR: constructorfabric/insight-front#

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Switched container image repositories and Helm/OCI chart references to a new registry namespace across deployment configs, scripts, and service Helm values.
    • Updated local/dev defaults, install/bootstrap scripts, and documentation examples to reflect the new image/chart locations.
    • Updated CI/workflow comments and commit-author metadata to the new namespace.
    • Updated repository/package metadata, CODEOWNERS, and incidental doc/test formatting/comments to reflect the new organization names.

@coderabbitai

coderabbitai Bot commented Jun 8, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

All image registries, chart repositories, Helm chart metadata, deployment tooling, and build scripts are updated from the cyberfabric namespace to constructorfabric. This includes CI/CD workflow configuration, umbrella chart defaults, service-specific Helm values, deployment scripts, helper scripts, Cargo metadata changes, and small tooling/test edits.

Changes

Namespace Migration: cyberfabric → constructorfabric

Layer / File(s) Summary
CI/CD workflow namespace updates
.github/workflows/build-images.yml
IMAGE_PREFIX env var, git author emails, GHCR OCI chart destination, and cross-repo dispatch/chart publishing comments updated to use constructorfabric namespace throughout the build-images workflow.
Umbrella Helm chart metadata and image defaults
charts/insight/Chart.yaml, charts/insight/values.yaml
Chart metadata (home, sources, maintainers) and default image repository values for toolbox, API gateway, analytics API, identity, and frontend services updated from cyberfabric to constructorfabric.
Service-specific Helm values updates
src/backend/services/analytics-api/helm/values.yaml, src/backend/services/api-gateway/helm/values.yaml, src/backend/services/identity/helm/values.yaml, src/frontend/helm/values.yaml
Individual service Helm values configured to pull images from constructorfabric repositories; API gateway module attribution comment updated to gears-rust.
Deployment scripts and configuration
deploy/scripts/install-insight.sh, dev-up.sh, docs/deploy/Makefile, docs/deploy/environments/local/values.yaml, docs/deploy/scripts/render-diff.sh
OCI chart references, Makefile variables, frontend image repository defaults, and documentation comments updated to reference constructorfabric chart and image registries.
Build and helper script updates
scripts/bootstrap-connector-images.sh, src/ingestion/reconcile-connectors/lib/cdk-build.sh, src/ingestion/tools/toolbox/build.sh
Script constants and help text updated to reference constructorfabric namespace for image references and bootstrap operations.
Package/Crate metadata
src/backend/Cargo.toml, src/backend/plugins/oidc-authn-plugin/Cargo.toml, src/ingestion/connectors/task-tracking/jira/enrich/Cargo.toml, src/backend/services/api-gateway/Cargo.toml
Workspace and crate metadata (authors, repository URLs, and section comment headers) updated to Constructor Fabric / constructorfabric and gears-rust labels; a modkit-errors entry was removed from workspace.dependencies.
Toolchain, tests, linters, migrations
.github/workflows/backend-checks.yml, src/backend/libs/insight-clickhouse/src/config.rs, src/backend/services/analytics-api/src/api/handlers.rs, src/backend/services/analytics-api/src/domain/schema_validator/probe.rs, migration files under src/backend/services/analytics-api/src/migration/*
Rust toolchain bumped to 1.95.0 in CI; unit tests and migration docstrings reformatted; a Clippy allow attribute added for ProbeRow; ClickHouse timeout test updated to use minutes.
CODEOWNERS
.github/CODEOWNERS
Root ownership entry changed from @cyberfabric/security to @constructorfabric/security.

🎯 3 (Moderate) | ⏱️ ~20 minutes

🐰 A hop, a change, a namespace new,
From cyberfabric to constructorfabric we flew,
Images repointed, charts set to roam,
CI, scripts, and crates find a new home.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title accurately summarizes the main objective of the changeset: migrating references from the old cyberfabric namespace to the new constructorfabric namespace across CI workflows, Helm charts, and deployment scripts.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/migrate-ghcr-namespace

Comment @coderabbitai help to get the list of available commands and usage tips.

cyberantonz and others added 4 commits June 8, 2026 16:54
Org renamed from `cyberfabric` to `constructorfabric` on GitHub/GHCR.
This flips every build, chart, helm-values, and helper-script reference
to the new namespace. The frontend image is also renamed
`cyber-insight-front` → `insight-front` (umbrella values + frontend
subchart values) to match what insight-front now publishes.

Out of scope:
- Runtime K8s annotation namespace `insight.cyberfabric.com/*`: renaming
  requires re-annotating deployed Secrets in lockstep; tracked separately.
- Connector descriptor.yaml image refs: left for the next CI auto-bump.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Anton Zelenov <antonz@constructor.tech>
- `repository` URL and `authors` in src/backend/Cargo.toml and
  src/ingestion/connectors/task-tracking/jira/enrich/Cargo.toml flipped
  to constructorfabric/Constructor Fabric.
- Section-header comments referring to the framework crates renamed
  "cyberfabric-core" → "gears-rust" (the new name of the framework repo;
  crate names on crates.io still use the `cf-` prefix, so no dep changes).
- Plugin description updated to mention gears-rust.

cargo check --workspace passes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Anton Zelenov <antonz@constructor.tech>
@cyberfabric/security and @cyberfabric/insight-app-maintainers no longer
resolve after the org rename — without this the review-routing rules
silently skip PRs in the new org.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Anton Zelenov <antonz@constructor.tech>
…e gap

`cf-modkit-errors` was declared in workspace deps but no service or
plugin imports it (`grep -r modkit_errors src/` returns nothing). Drop
the dead dep.

The gears-rust workspace renamed `cf-modkit-*` → `cf-gears-toolkit-*`
and `cf-<name>` → `cf-gears-<name>` locally, but none of the renamed
crates have been published to crates.io yet. The legacy names still
receive version bumps (cf-modkit 0.6.10, cf-modkit-auth 0.7.0, etc.).
Add an inline comment so the next person to touch this section knows
to flip `package = "..."` once the rename hits crates.io — no version
bump in this commit, that's a separate concern.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Anton Zelenov <antonz@constructor.tech>
@cyberantonz
cyberantonz force-pushed the chore/migrate-ghcr-namespace branch from 83fd356 to 75576a6 Compare June 8, 2026 14:55

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/backend/Cargo.toml`:
- Line 89: Verify and confirm that no workspace member Cargo.toml references
modkit-errors = { workspace = true } and that all Rust source imports use
modkit_canonical_errors (search for modkit-errors, cf-modkit-errors,
modkit_canonical_errors and cf-modkit-*); ensure cf-modkit-errors entries
remaining in src/backend/Cargo.lock (0.6.2/0.7.0) are only transitive via
cf-modkit and cf-modkit-odata and not direct dependencies, and if needed run
cargo update to refresh the lockfile; finally update the documentation reference
in docs/components/backend/specs/DESIGN.md (line ~740) to replace any mention of
modkit-errors with modkit-canonical-errors and mention RFC 9457 responses now
use modkit-canonical-errors.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 13998e61-78c3-459c-875b-317813fb9f64

📥 Commits

Reviewing files that changed from the base of the PR and between 83fd35677d3bd1e5ca28c3928487b24357bca0d2 and 75576a6.

📒 Files selected for processing (20)
  • .github/CODEOWNERS
  • .github/workflows/build-images.yml
  • charts/insight/Chart.yaml
  • charts/insight/values.yaml
  • deploy/scripts/install-insight.sh
  • dev-up.sh
  • docs/deploy/Makefile
  • docs/deploy/environments/local/values.yaml
  • docs/deploy/scripts/render-diff.sh
  • scripts/bootstrap-connector-images.sh
  • src/backend/Cargo.toml
  • src/backend/plugins/oidc-authn-plugin/Cargo.toml
  • src/backend/services/analytics-api/helm/values.yaml
  • src/backend/services/api-gateway/Cargo.toml
  • src/backend/services/api-gateway/helm/values.yaml
  • src/backend/services/identity/helm/values.yaml
  • src/frontend/helm/values.yaml
  • src/ingestion/connectors/task-tracking/jira/enrich/Cargo.toml
  • src/ingestion/reconcile-connectors/lib/cdk-build.sh
  • src/ingestion/tools/toolbox/build.sh
✅ Files skipped from review due to trivial changes (9)
  • src/frontend/helm/values.yaml
  • docs/deploy/scripts/render-diff.sh
  • src/ingestion/reconcile-connectors/lib/cdk-build.sh
  • .github/CODEOWNERS
  • src/ingestion/tools/toolbox/build.sh
  • src/ingestion/connectors/task-tracking/jira/enrich/Cargo.toml
  • src/backend/services/identity/helm/values.yaml
  • src/backend/services/api-gateway/Cargo.toml
  • src/backend/plugins/oidc-authn-plugin/Cargo.toml
🚧 Files skipped from review as they are similar to previous changes (10)
  • src/backend/services/api-gateway/helm/values.yaml
  • charts/insight/Chart.yaml
  • dev-up.sh
  • charts/insight/values.yaml
  • docs/deploy/Makefile
  • scripts/bootstrap-connector-images.sh
  • deploy/scripts/install-insight.sh
  • docs/deploy/environments/local/values.yaml
  • src/backend/services/analytics-api/helm/values.yaml
  • .github/workflows/build-images.yml

Comment thread src/backend/Cargo.toml
The workspace declares `rust-version = "1.95.0"` but
backend-checks.yml was still pinning the runner to 1.92.0, so the
workspace couldn't even compile on CI under that pin (every
analytics-api / insight-clickhouse / oidc-authn-plugin crate refused
to build with "requires rustc 1.95.0"). The failure surfaced because
`cargo fmt --check` ran first and short-circuited the job before the
1.92 → 1.95 mismatch showed up downstream.

Bumping the CI toolchain to 1.95.0 exposed pre-existing clippy debt
that the older clippy didn't flag (all under the workspace's
`clippy::pedantic = "deny"` rule):

* `libs/insight-clickhouse/src/config.rs` — `Duration::from_millis(N_000)`
  cleaned to `Duration::from_secs(N)` (auto-fix).
* `analytics-api/src/migration/*.rs` — missing backticks around
  identifiers in doc comments; auto-fixed by `clippy --fix`.
* `analytics-api/src/migration/m20260601_000002_seed_...rs:251` —
  `.expect()` swapped to `.unwrap_or_else(|| panic!(...))` to match
  the pattern used in adjacent tests on this file.
* `analytics-api/src/api/handlers.rs:1441` — test fn declared
  `Result<(), Box<dyn Error>>` but never used `?`; dropped the
  return type. (The sibling test on L1456 keeps the Result return
  because it actually `.ok_or(...)?`s.)
* `analytics-api/src/domain/schema_validator/probe.rs:50` —
  `#[allow(clippy::struct_field_names)]` on `ProbeRow` because each
  field IS a count of a distinct column kind; the `_columns` postfix
  is semantically meaningful, not redundant.
* Plus the formatting drift cargo fmt --check caught (analytics-api
  handlers and migrations).

cargo fmt --all -- --check, clippy, and test --all all pass under
1.95.0.

Signed-off-by: Anton Zelenov <antonz@constructor.tech>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/backend/services/analytics-api/src/migration/m20260601_000002_seed_claude_team_metrics_catalog.rs (1)

18-18: ⚠️ Potential issue | 🟡 Minor

Align the FE follow-up name to insight-front.
This migration references cyber-insight-front for the BULLET_DEFS follow-up, but the repo’s maintained frontend naming is insight-front; update the comment (or clarify why the old name is intentionally retained).

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@src/backend/services/analytics-api/src/migration/m20260601_000002_seed_claude_team_metrics_catalog.rs`
at line 18, Update the inline comment in
m20260601_000002_seed_claude_team_metrics_catalog.rs so the FE follow-up name
matches the maintained frontend repo; replace the reference to
"cyber-insight-front" with "insight-front" (or add a short clarifying note in
the comment if the old name is intentionally preserved) so the BULLET_DEFS
follow-up name is accurate and unambiguous.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In
`@src/backend/services/analytics-api/src/migration/m20260601_000002_seed_claude_team_metrics_catalog.rs`:
- Line 18: Update the inline comment in
m20260601_000002_seed_claude_team_metrics_catalog.rs so the FE follow-up name
matches the maintained frontend repo; replace the reference to
"cyber-insight-front" with "insight-front" (or add a short clarifying note in
the comment if the old name is intentionally preserved) so the BULLET_DEFS
follow-up name is accurate and unambiguous.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: be9c8382-ee90-4a1b-9c71-325504872566

📥 Commits

Reviewing files that changed from the base of the PR and between 75576a6 and bfaf51e.

📒 Files selected for processing (8)
  • .github/workflows/backend-checks.yml
  • src/backend/libs/insight-clickhouse/src/config.rs
  • src/backend/services/analytics-api/src/api/handlers.rs
  • src/backend/services/analytics-api/src/domain/schema_validator/probe.rs
  • src/backend/services/analytics-api/src/migration/m20260529_000001_metric_query_catalog_link.rs
  • src/backend/services/analytics-api/src/migration/m20260601_000001_ai_claude_team_metrics.rs
  • src/backend/services/analytics-api/src/migration/m20260601_000002_seed_claude_team_metrics_catalog.rs
  • src/backend/services/analytics-api/src/migration/m20260603_000001_seed_crm_metric_catalog.rs
✅ Files skipped from review due to trivial changes (4)
  • src/backend/services/analytics-api/src/domain/schema_validator/probe.rs
  • .github/workflows/backend-checks.yml
  • src/backend/services/analytics-api/src/migration/m20260603_000001_seed_crm_metric_catalog.rs
  • src/backend/services/analytics-api/src/api/handlers.rs

The "External Dependencies" table in DESIGN.md still listed
`modkit-errors` as the source of RFC 9457 error responses, but the
runtime crate that source code actually imports is
`modkit-canonical-errors` (every `use modkit_canonical_errors::{...}`
in analytics-api — auth.rs, api/error.rs, api/handlers.rs,
api/catalog.rs, api/canonical_json.rs, api/admin/error_map.rs,
domain/query.rs — plus `modkit::api::Problem` re-export used by
api-gateway/proxy.rs). The previous commit on this branch dropped the
unused `cf-modkit-errors` workspace dep; this updates the doc to match.

Signed-off-by: Anton Zelenov <antonz@constructor.tech>
src/backend's workspace declares `rust-version = "1.95.0"` (every
service + libs/insight-clickhouse + cf-modkit-canonical-errors 0.7.3
all refuse to build under older rustc). The previous commit bumped
backend-checks.yml; the E2E test runner image was still pinning
RUST_VERSION=1.92.0, so `cargo build` inside the runner failed with:

  error: rustc 1.92.0 is not supported by the following packages:
    analytics-api@0.1.0 requires rustc 1.95.0
    cf-modkit-canonical-errors@0.7.3 requires rustc 1.95.0
    insight-clickhouse@0.1.0 requires rustc 1.95.0

…and the analytics-api binary fixture (`fixtures/test_fixtures.py:35`)
was getting SKIPPED, masking the test results.

Out of scope here:
- src/ingestion/connectors/task-tracking/jira/enrich/Dockerfile still
  uses rust:1.92-bookworm but jira-enrich's own Cargo.toml declares
  `rust-version = "1.80"` and isn't part of the src/backend workspace,
  so it doesn't hit this incompatibility.

Signed-off-by: Anton Zelenov <antonz@constructor.tech>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants