You grant these accounts access in your project. Ryvn mints short-lived tokens for them and never creates or stores a key.
Google Artifact Registry appears in Add Registry only when your hub runs on Google Cloud. On other hubs, use a generic OCI registry instead.
Before you begin
You need permission to manage registries in Ryvn, and permission to set IAM policy on the Google Cloud project, such as the Project IAM Admin role,roles/resourcemanager.projectIamAdmin. The Artifact Registry API must be enabled in the project.
If the project sits inside a VPC Service Controls perimeter that restricts artifactregistry.googleapis.com, Ryvn’s requests come from outside the perimeter and are denied, even after the grants succeed. Add an ingress rule that lets both service accounts call the Artifact Registry API. The connection test reports a VPC Service Controls denial as a failed check.
Connect the registry
1
Add the registry
Open Settings > Private Registries, click Add Registry, and select Google Artifact Registry. Enter:
- Registry name, such as
example-gar. - Project ID of the project that holds your repositories, such as
example-project. Use the project ID, not its display name. - Location of the repositories, such as
us-central1or the multi-regionus. Ryvn derives the registry host from it, for exampleus-central1-docker.pkg.dev. - Optional mirrors and environment availability, as for any private registry.
2
Grant Ryvn access
Ryvn opens the registry’s page. It shows the reader and publisher service account emails, each with a copy button, and a setup script.Paste the script into Cloud Shell or any terminal signed in to
gcloud. It grants the reader roles/artifactregistry.reader on the project. That grant is all Ryvn needs to pull.To let Ryvn builds push to this project as well, select Also grant publishing (Ryvn builds push to this project) before you copy or download the script. The command then starts with GRANT_PUBLISHER=true, and it also grants the publisher roles/artifactregistry.writer. Run a downloaded script with sh ryvn-artifact-registry-setup.sh.The script is safe to rerun. New IAM grants can take a few minutes to apply.3
Test access
Click Test on the registry’s page. Ryvn runs two checks:
The registry is connected when the reader check passes.
What Ryvn can reach
One reader and one publisher serve your whole Ryvn organization. If you connect several projects, you grant the same two accounts in each one. Every registry token the reader or publisher gets can reach every project you granted that account, not only the registry it was issued for. Environment availability decides which environments receive pull credentials for a registry. It is not an IAM boundary. To keep two projects apart, keep them out of the same Ryvn organization.Deploy from the registry
Reference images and charts by their full Artifact Registry path, for exampleus-central1-docker.pkg.dev/example-project/images/api. Environments where the registry is available get a reader token for it automatically, the same way as for any private registry.
Publish builds to the registry
A service that Ryvn builds from GitHub pushes to Ryvn Registry by default. To push to your Artifact Registry instead, run the setup script with publishing granted, then bind the service to the registry.- Dashboard
- YAML
Open the service, go to Settings > Build & Deploy, and pick your registry in Publish registry. Enter the destination, then click Save:
- For a server or job, Image repository, such as
us-central1-docker.pkg.dev/example-project/images/api, without a tag. - For a Helm chart, Chart repository, such as
example-project/charts.
- An image must be
<location>-docker.pkg.dev/<project>/<repository>/<name>, with the registry’s location and project. - A chart repository must start with
<project>/<repository>.
Build limits
- Builds have one hour to push. The publisher’s token lasts one hour from the start of the build. A build that runs longer fails when it pushes.
- Base images need read access too. The build signs in to the registry host as the publisher. If a Dockerfile’s
FROMimage lives in another Artifact Registry project at the same host, the publisher needsroles/artifactregistry.readerin that project, or the build fails.