This repository has been archived on 2026-11-08. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
platform-ci/runtime/package-reader-bindings.yaml
james.maesandClaude Sonnet 5.5 04d80f272d
KofTwentyTwo/ci-policy: ci / fork-guard (pull_request) Skipped
KofTwentyTwo/ci-policy: native / fork-deny (pull_request) Skipped
KofTwentyTwo/ci-policy: native / build-macos-0 (pull_request) Skipped
KofTwentyTwo/ci-policy: native / build-macos-1 (pull_request) Skipped
KofTwentyTwo/ci-policy: native / build-macos-2 (pull_request) Skipped
KofTwentyTwo/ci-policy: native / build-macos-3 (pull_request) Skipped
KofTwentyTwo/ci-policy: native / build-windows-4 (pull_request) Skipped
KofTwentyTwo/ci-policy: native / build-windows-5 (pull_request) Skipped
KofTwentyTwo/ci-policy: native / build-windows-6 (pull_request) Skipped
KofTwentyTwo/ci-policy: native / build-windows-7 (pull_request) Skipped
KofTwentyTwo/ci-policy: native / dotnet-8 (pull_request) Skipped
KofTwentyTwo/ci-policy: native / dotnet-9 (pull_request) Skipped
KofTwentyTwo/ci-policy: native / dotnet-10 (pull_request) Skipped
KofTwentyTwo/ci-policy: native / dotnet-11 (pull_request) Skipped
KofTwentyTwo/ci-policy: native / swift-12 (pull_request) Skipped
KofTwentyTwo/ci-policy: native / swift-13 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / Scoped workflow [workflow 56c9aa7d4e8180123218896b74ac75e41092286b] (pull_request) Successful in 5s
KofTwentyTwo/ci-policy: native / swift-14 (pull_request) Skipped
KofTwentyTwo/ci-policy: native / swift-15 (pull_request) Skipped
KofTwentyTwo/ci-policy: native / swift-16 (pull_request) Skipped
KofTwentyTwo/ci-policy: native / swift-17 (pull_request) Skipped
KofTwentyTwo/ci-policy: native / swift-18 (pull_request) Skipped
KofTwentyTwo/ci-policy: native / swift-19 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / go-0 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / go-nix-1 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / gradle-2 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / gradle-3 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / java-docker-4 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / java-maven-5 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / manifests-6 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / nix-7 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / node-8 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / python-9 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / rust-10 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / rust-11 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / rust-12 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / source-config-13 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / source-config-14 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / image-build-0 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / image-build-1 (pull_request) Skipped
KofTwentyTwo/ci-policy: native / native-result (pull_request) Successful in 4s
KofTwentyTwo/ci-policy: ci / image-build-2 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / image-build-3 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / image-build-4 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / image-build-5 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / image-build-6 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / image-build-7 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / not-enrolled (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / content-validate-0 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / standards-0 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / node-matrix-0 (pull_request) Skipped
KofTwentyTwo/ci-policy: ci / shared-pipeline (pull_request) Skipped
KofTwentyTwo/ci-policy: Shared source and config CI / verify (pull_request) Successful in 9s
KofTwentyTwo/ci-policy: Shared source and config CI / secrets (pull_request) Successful in 10s
KofTwentyTwo/ci-policy: Shared source and config CI / gate (pull_request) Successful in 9s
KofTwentyTwo/ci-policy: ci / source-config-15 (pull_request) Successful in 21s
KofTwentyTwo/ci-policy: ci / ci-result (pull_request) Successful in 3s
feat(ci): read-only private Maven package prefetch with reviewed-commit bootstrap, and standalone images
Adds the plumbing a repository needs to resolve private QRun-IO Maven packages during verification without exposing the credential to the tests or to
any image step:
- .ci.yaml component field package_reads: {binding}; plan target field and a matrix flag `packages`.
- `prefetch-packages` command (platform_ci/package_prefetch.py): authorizes the binding and the consuming repository against
  runtime/package-reader-bindings.yaml, and runs only for a push to the default branch or a SAME-REPOSITORY pull request whose forge-supplied head commit is an
  exact entry of the binding's reviewed_commits (empty by default, so inert; no forks, no other commits, no branch patterns). Authorization runs before the
  credential check, any project-file read or any child process. It fills the local Maven repository with `dependency:go-offline` using credential settings
  that hold only ${env.CI_PACKAGE_READ_TOKEN}; the token is in that one Maven child's environment and the settings live in a scratch directory deleted even on
  failure. The registry id is pinned to the constant URL by a mirror, the repository-declared tool environment is not merged, maven.ext.class.path is
  cleared, and .mvn launch files and POMs with build extensions, a reference to the credential variable or a repository claiming the registry id with
  another URL are refused before the token exists. Neither path writes the dependency cache.
- the step is placed before "Build and test" in the three container verify jobs; verification and image steps never receive the token and run with the
  credential-free public settings. image-prebuild and the image boundary are unchanged.
- runtime/package-reader-bindings.yaml: binding kof22-qrun-read for KofTwentyTwo/Website-Backend (slot PACKAGE_READ_TOKEN, registry user qqq-package-reader),
  reviewed_commits empty.
- images: `standalone: true` for an image that contains no verified build output (still scanned and source-bound; recompile and entitlement refusals
  unchanged).
Tests cover configuration, prefetch authorization, credential handling, the guard (including the real host POM shape) and standalone rules.
Single commit equivalent of reviewed PR 72 (head 14e66a5e) merged onto current main; the three overlapping files differ from PR 72 only by main's own
concurrent changes.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-05 15:35:44 +00:00

31 lines
2.5 KiB
YAML

# Operator-owned authorization manifest for READ-ONLY private Maven package access before a component's verification.
#
# A consumer repository's `.ci.yaml` names a logical binding (`components.<name>.package_reads.binding`). This file decides who may use it: which
# repositories' runs may use the one repository secret slot the shared workflow forwards to the `prefetch-packages` step ALONE, and as which registry
# user the token authenticates. The step runs only for a push to the repository's default branch, or for a same-repository pull request whose forge-supplied
# head commit is an exact entry of the binding's `reviewed_commits` (empty by default, so inert); never for forks, other commits, tags, feature-branch pushes
# or image jobs, and neither path writes the dependency cache. It fills the local Maven repository with the component's dependencies and plugins, then deletes the credentialed settings; the
# verification that follows never sees the token. The registry is https://git.kof22.com/api/packages/QRun-IO/maven.
#
# Operator prerequisites (none is created by this repository; no credential value is recorded anywhere):
# 1. A repository secret named PACKAGE_READ_TOKEN on each consumer, holding a read:package-only token of the EXISTING read-only identity named below.
# 2. That identity must be able to read the QRun-IO Maven packages. Gitea metadata observed 2026-11-05: `qqq-package-reader` is the only member of the
# QRun-IO `package-reader` team (repo.packages: read); `kof-package-reader` is only in the KofTwentyTwo `package-reader` team, so it cannot read QRun-IO.
#
# Shape (each binding has exactly these keys):
# bindings:
# <logical-name>:
# secret: PACKAGE_READ_TOKEN # the one slot name the workflow forwards
# username: <registry user of the token>
# consumers: [<owner>/<name>] # repositories whose runs may use it
# reviewed_commits: [<40-hex>, ...] # optional, default EMPTY (inert): exact full commit ids of reviewed sources. A SAME-REPOSITORY pull request
# # whose forge-supplied head commit equals one of them may prefetch (bootstrap of the first private-package
# # change). Filled only by protected metadata review after the commit exists; no branch names, no patterns.
schema: 1
bindings:
kof22-qrun-read:
secret: PACKAGE_READ_TOKEN
username: qqq-package-reader
consumers: [KofTwentyTwo/Website-Backend]
reviewed_commits: []