artifact_id and SHA-256 digest, then use their existing harness session to request a short-lived object-storage download.
Prerequisites
Before adding a connection, prepare:- A dedicated, non-expiring S3-compatible bucket for package artifacts.
- The organization slug used by Blue, such as the
control_api.bootstrap.organization_slugvalue for the bootstrap organization. - A read-only GitHub App or Bitbucket access token.
- A mounted PEM CA bundle when an enterprise provider uses a private certificate authority.
package-artifacts MinIO bucket automatically. Production deployments must create the bucket separately and set HARNESS_PACKAGE_BUCKET.
Configure artifact storage
Package artifacts must not use the raw-session bucket because session retention policies may delete objects still referenced by historical governance revisions.blue.yaml
deploy/docker-compose.yml; setting HARNESS_PACKAGE_BUCKET in deploy/.env does not override it. Change the Compose service environment explicitly when you need another bucket.
The Control API uses the same S3 endpoint, region, public endpoint, path-style setting, and ambient AWS credentials configured under control_api.blob_storage.
Configure a provider
Add connections undercontrol_api.package_sources.connections. Connection IDs must contain only letters, numbers, hyphens, and underscores. Each organization entry maps a Blue organization slug to the repository namespaces it may import.
- GitHub.com
- GitHub Enterprise
- Bitbucket Cloud
- Bitbucket Data Center
Create a GitHub App, grant it read-only Contents permission, and install it on the target organization or account. Select only the repositories Blue should import.
blue.yaml
app_id is the GitHub App ID, not the OAuth client ID. Blue creates a repository-scoped installation token when an administrator inspects a source.Supply deployment secrets
Environment references useos.environ/NAME or env://NAME. File references use file:///absolute/path. Keep private keys and tokens outside the repository.
For Compose, add the environment variables and read-only secret mounts to the Control API service:
docker-compose.override.yml
Connection secrets and referenced files are loaded when the Control API starts. Restart the service after rotating a key, token, URL reference, or CA bundle. Already mirrored artifacts remain installable after provider credentials change.
Control organization access
Theorganizations map is an authorization boundary, not a display filter. The Control API rejects a namespace before contacting the provider when it is not allowed for the authenticated administrator’s organization.
"*" entry permits every namespace accessible to the connection credential and should be reserved for single-organization deployments with an equivalent trust boundary.
Start and verify the connection
1
Restart the Control API
Rebuild or restart the service after changing the server configuration or secrets.
2
Check startup health
Confirm the service starts without secret, URL, CA, database migration, or object-storage errors.
3
Inspect a repository
Open Extensions, select Add extension, then choose Managed repository. Select the connection, enter
namespace/repository and a branch, tag, or commit, and select Inspect source.4
Confirm immutable metadata
Verify that the form shows a resolved commit, archive size, and SHA-256 digest. Add the capability mappings and publish the pending governance revision.
5
Verify client installation
Run
blue apply or launch an allowed harness. The client requests a fresh download with its harness session, verifies the digest, and installs the compatible package contents.Configuration fields
Troubleshooting
See Managed packages for capability mapping and client installation behavior, and Production deployment for storage and secret-management requirements.
