{"id":34991241,"url":"https://github.com/buildkite-plugins/docker-image-push-buildkite-plugin","last_synced_at":"2026-03-04T21:07:17.034Z","repository":{"id":308735286,"uuid":"1023661430","full_name":"buildkite-plugins/docker-image-push-buildkite-plugin","owner":"buildkite-plugins","description":"🐳 🚀 Push Docker images to various container registries - ECR, GAR, Artifactory","archived":false,"fork":false,"pushed_at":"2025-12-02T19:54:33.000Z","size":80,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-05T19:47:56.964Z","etag":null,"topics":["artifactory","aws","aws-ecr","buildkite-packages","buildkite-plugin","docker","ecr","gar","gcp","gcr"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/buildkite-plugins.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-21T13:53:18.000Z","updated_at":"2025-12-02T19:54:23.000Z","dependencies_parsed_at":"2025-08-07T16:27:17.958Z","dependency_job_id":"d6033848-afb3-4646-ae98-f02fa3da4479","html_url":"https://github.com/buildkite-plugins/docker-image-push-buildkite-plugin","commit_stats":null,"previous_names":["buildkite-plugins/docker-image-push-buildkite-plugin"],"tags_count":4,"template":false,"template_full_name":"buildkite-plugins/template-buildkite-plugin","purl":"pkg:github/buildkite-plugins/docker-image-push-buildkite-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buildkite-plugins%2Fdocker-image-push-buildkite-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buildkite-plugins%2Fdocker-image-push-buildkite-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buildkite-plugins%2Fdocker-image-push-buildkite-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buildkite-plugins%2Fdocker-image-push-buildkite-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/buildkite-plugins","download_url":"https://codeload.github.com/buildkite-plugins/docker-image-push-buildkite-plugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buildkite-plugins%2Fdocker-image-push-buildkite-plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30093015,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T20:42:30.420Z","status":"ssl_error","status_checked_at":"2026-03-04T20:42:30.057Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["artifactory","aws","aws-ecr","buildkite-packages","buildkite-plugin","docker","ecr","gar","gcp","gcr"],"created_at":"2025-12-27T01:54:41.100Z","updated_at":"2026-03-04T21:07:17.026Z","avatar_url":"https://github.com/buildkite-plugins.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Docker Image Push Buildkite Plugin\n\nA Buildkite plugin to build and push Docker images to a variety of container registries.\n\nSupported providers:\n- Amazon Elastic Container Registry (ECR)\n- Google Artifact Registry (GAR)\n- Buildkite Package Registries\n- Artifactory Docker Registry\n- Namespace Container Registry (requires Namespace CLI)\n- Azure Container Registry (ACR)\n\n## Options\n\nThese are all the options available to configure this plugin's behaviour.\n\n### Required\n\n#### `provider` (string)\n\nThe registry provider to use. Supported values: `ecr`, `gar`, `buildkite`, `artifactory`, `namespace`, `acr`.\n\n#### `image` (string)\n\nThe name of the Docker image to push (e.g., `my-org/my-app`).\n\n### Optional\n\n#### `tag` (string, default: `latest`)\n\nThe tag for the Docker image.\n\n#### `verbose` (boolean, default: `false`)\n\nEnable debug mode, which runs the plugin scripts with `set -x` to provide detailed command tracing. Set to `true`, `on`, or `1` to enable.\n\n### ECR Provider Options\n\n#### `region` (string)\n\nThe AWS region for the ECR registry.\n\n#### `registry-url` (string)\n\nThe full URL of the ECR registry (e.g., `123456789012.dkr.ecr.us-east-1.amazonaws.com`).\n\n### GAR Provider Options\n\n**Note:** Authentication is handled by the `gcloud` CLI. Ensure your Buildkite agent has authenticated with Google Cloud before running this plugin (e.g., using a service account key or Workload Identity Federation).\n\n#### `gar-project` (string)\n\nThe Google Cloud project ID.\n\n#### `region` (string, default: `us`)\n\nThe GAR region (e.g., `us-east1`) or a full GAR hostname (e.g., `europe-west10-docker.pkg.dev`).\n\n#### `repository` (string)\n\nThe name of the Artifact Registry repository. If omitted, it defaults to the image name.\n\n### Buildkite Packages Provider Options\n\n**Note:** Authentication requires either a Buildkite API token with Read Packages and Write Packages scopes, or OIDC authentication using `buildkite-agent` (available in Buildkite pipeline jobs).\n\n#### `org-slug` (string)\n\nThe Buildkite organization slug. If omitted, it will use the `BUILDKITE_ORGANIZATION_SLUG` environment variable.\n\n#### `registry-slug` (string)\n\nThe container registry slug. If omitted, it defaults to the image name.\n\n#### `auth-method` (string, default: `api-token`)\n\nAuthentication method to use. Supported values: `api-token`, `oidc`.\n\n- `api-token`: Uses the `api-token` parameter or falls back to `BUILDKITE_API_TOKEN` environment variable\n- `oidc`: Uses `buildkite-agent oidc request-token` command (available in pipeline jobs)\n\n#### `api-token` (string)\n\nThe Buildkite API token with Read Packages and Write Packages scopes. Required when `auth-method` is `api-token`. Can also be provided via the `BUILDKITE_API_TOKEN` environment variable for backward compatibility.\n\n### Artifactory Provider Options\n\n**Note:** Authentication requires a username (typically email) and identity token from your Artifactory instance.\n\n#### `registry-url` (string)\n\nThe Artifactory registry URL (e.g., `myjfroginstance.jfrog.io`). Do not include the protocol (`https://`).\n\n#### `username` (string)\n\nThe username for Artifactory authentication, typically your email address.\n\n#### `identity-token` (string)\n\nThe Artifactory identity token for authentication. Can reference an environment variable using `$VARIABLE_NAME` syntax.\n\n### Namespace Provider Options\n\n**Important:** This plugin authenticates to Namespace and pushes an image that already exists in the local Docker daemon. It does **not** trigger Namespace remote builds. If you want to build remotely, run `nsc docker buildx build --push` yourself and let the remote builder push directly to `nscr.io`.\n\n#### `tenant-id` (string)\n\nThe Namespace tenant/workspace ID (for example `tenant_abcd1234`). The plugin automatically derives the registry slug (`abcd1234`) from this value when tagging images.\n\n#### `registry` (string, default: `nscr.io`)\n\nNamespace registry host. Override only if you use a custom registry domain.\n\n#### `nsc-binary` (string, default: `/root/.ns/bin/nsc`)\n\nPath to the Namespace CLI (`nsc`). Leave unset if the CLI is available on `PATH`, or override if it is installed in a non-standard location.\n\n#### `auth-method` (string, default: `buildkite-oidc`)\n\nAuthentication method to use. Supported values: `buildkite-oidc`, `aws-cognito`.\n\n- `buildkite-oidc`: Uses `buildkite-agent oidc request-token`. Available only in Buildkite pipelines with OIDC enabled.\n- `aws-cognito`: Exchanges AWS credentials for a Namespace token via Cognito. Requires the additional fields below. See the [Namespace AWS Cognito federation guide](https://docs.namespace.so/docs/solutions/docker-builders#authenticate-with-aws-cognito) for cluster setup requirements.\n\n#### `buildkite-oidc.audience` (string, default: `federation.namespaceapis.com`)\n\nCustom OIDC audience when using `auth-method: buildkite-oidc`.\n\n#### `aws-cognito.region` (string)\n\nAWS region that hosts the Cognito identity pool (for example `us-east-1`).\n\n#### `aws-cognito.identity-pool` (string)\n\nFull Cognito identity pool identifier (GUID such as `217947c4-e20e-4315-97f8-08e9a14c8dfb`).\n\n### ACR Provider Options\n\n**Note:** Authentication can use either a Service Principal (client ID and secret) or the Azure CLI (`az acr login`).\n\n#### `registry-url` (string)\n\nThe ACR registry URL (e.g., `myregistry.azurecr.io`). Do not include the protocol (`https://`).\n\n#### `client-id` (string)\n\nThe Service Principal application (client) ID for authentication. Required unless `acr-login` is `true`. Can reference an environment variable using `$VARIABLE_NAME` syntax.\n\n#### `client-secret` (string)\n\nThe Service Principal client secret for authentication. Required unless `acr-login` is `true`. Can reference an environment variable using `$VARIABLE_NAME` syntax.\n\n#### `acr-login` (boolean, default: `false`)\n\nUse Azure CLI (`az acr login`) for authentication instead of Service Principal credentials. When enabled, the Azure CLI must be installed and authenticated on the agent.\n\n#### `repository` (string)\n\nThe ACR repository name. If omitted, it defaults to the image name.\n\n## Examples\n\n### Push to Amazon ECR\n\nThis example pushes an image to an ECR repository.\n\n```yaml\nsteps:\n  - label: \":docker: Build and Push\"\n    plugins:\n      - docker-image-push#v1.2.0:\n          provider: ecr\n          image: my-app\n          ecr:\n            region: us-east-1\n            registry-url: 123456789012.dkr.ecr.us-east-1.amazonaws.com\n```\n\n### Push to Google Artifact Registry\n\nThis example pushes an image to a GAR repository with a specific tag.\n\n```yaml\nsteps:\n  - label: \":docker: Build and Push\"\n    plugins:\n      - docker-image-push#v1.2.0:\n          provider: gar\n          image: my-app\n          tag: \"v1.2.3\"\n          gar:\n            project: my-gcp-project\n            region: australia-southeast1\n            repository: my-docker-repo\n```\n\n### Push to Buildkite Packages Container Registry\n\nThis example pushes an image to Buildkite Packages using API token authentication.\n\n```yaml\nsteps:\n  - label: \":docker: Build and Push\"\n    plugins:\n      - docker-image-push#v1.2.0:\n          provider: buildkite\n          image: my-app\n          tag: \"v1.2.3\"\n          buildkite:\n            org-slug: my-org\n            registry-slug: my-container-registry\n            api-token: your-api-token-here\n```\n\n### Push to Buildkite Packages with OIDC\n\nThis example uses OIDC authentication (recommended for Buildkite pipelines).\n\n```yaml\nsteps:\n  - label: \":docker: Build and Push\"\n    plugins:\n      - docker-image-push#v1.2.0:\n          provider: buildkite\n          image: my-app\n          buildkite:\n            org-slug: my-org\n            auth-method: oidc\n```\n\n### Push to Artifactory Docker Registry\n\nThis example pushes an image to an Artifactory Docker registry.\n\n```yaml\nsteps:\n  - label: \":docker: Build and Push\"\n    plugins:\n      - docker-image-push#v1.2.0:\n          provider: artifactory\n          image: my-app\n          tag: \"v1.2.3\"\n          artifactory:\n            registry-url: myjfroginstance.jfrog.io\n            username: me@example.com\n            identity-token: $ARTIFACTORY_IDENTITY_TOKEN\n```\n\n### Push to Namespace Container Registry (local build + push)\n\nThis example builds an image locally on a Docker-capable agent (or DinD pod) and lets the plugin authenticate and push to Namespace using Buildkite OIDC. The Namespace CLI must be installed and accessible, along with `docker-credential-nsc` on the agent `PATH`.\n\n```yaml\nsteps:\n  - label: \":namespace: Build \u0026 Push\"\n    command: |\n      set -euo pipefail\n      docker build -t \"namespace-app:latest\" .\n    plugins:\n      - docker-image-push#v1.2.0:\n          provider: namespace\n          image: \"namespace-app\"\n          tag: \"latest\"\n          namespace:\n            tenant-id: \"tenant_abcd1234\"\n            auth-method: buildkite-oidc\n            buildkite-oidc:\n              audience: \"federation.namespaceapis.com\"\n```\n\n### Push to Azure Container Registry\n\nThis example pushes an image to ACR using Service Principal authentication.\n\n```yaml\nsteps:\n  - label: \":docker: Build and Push\"\n    plugins:\n      - docker-image-push#v1.2.0:\n          provider: acr\n          image: my-app\n          tag: \"v1.2.3\"\n          acr:\n            registry-url: myregistry.azurecr.io\n            client-id: $ACR_CLIENT_ID\n            client-secret: $ACR_CLIENT_SECRET\n```\n\n### Push to Azure Container Registry with Azure CLI\n\nThis example uses Azure CLI authentication (requires `az` CLI to be installed and authenticated).\n\n```yaml\nsteps:\n  - label: \":docker: Build and Push\"\n    plugins:\n      - docker-image-push#v1.2.0:\n          provider: acr\n          image: my-app\n          tag: \"v1.2.3\"\n          acr:\n            registry-url: myregistry.azurecr.io\n            acr-login: true\n```\n\n### Verbose Mode\n\nEnable verbose mode for detailed debug output.\n\n```yaml\nsteps:\n  - label: \":docker: Build and Push (Debug)\"\n    plugins:\n      - docker-image-push#v1.2.0:\n          provider: ecr\n          image: my-app\n          verbose: true\n```\n\n## Compatibility\n\n| Elastic Stack | Agent Stack K8s | Hosted (Mac) | Hosted (Linux) | Notes |\n| :-----------: | :-------------: | :----: | :----: |:---- |\n| ✅ |  ⚠️ | ❌ | ⚠️ | **All** – Requires `awscli`, `gcloud`, `docker`, `nsc`, `az` for ECR, GAR, Namespace, and ACR (with `acr-login`) respectively. Buildkite Packages and ACR (with Service Principal) only require `docker`\u003cbr/\u003e**Hosted (Mac)** - Docker engine not available |\n\n- ✅ Fully supported (all combinations of attributes have been tested to pass)\n- ⚠️ Partially supported (some combinations cause errors/issues)\n- ❌ Not supported\n\n## 👩‍💻 Contributing\n\nContributions are welcome! Please open a pull request with your changes.\n\n## 📜 License\n\nThe package is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuildkite-plugins%2Fdocker-image-push-buildkite-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbuildkite-plugins%2Fdocker-image-push-buildkite-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuildkite-plugins%2Fdocker-image-push-buildkite-plugin/lists"}