Docker Docker Authentication

Push images to Docker Hub, GitHub Container Registry, or AWS ECR

GitHub Container Registry (GHCR)

Workflow Configuration

permissions:
  contents: write
  packages: write  # Required for GHCR

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - uses: docker/setup-qemu-action@v3
      - uses: docker/setup-buildx-action@v3

      - uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - uses: a-line-services/release-pilot@v1
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}

release-pilot.yml Configuration

packages:
  - name: my-app
    ecosystem: docker
    docker:
      registry: ghcr.io
      image: your-org/your-app
      platforms:
        - linux/amd64
        - linux/arm64
      tags:
        - latest
        - "{version}"
        - "{major}.{minor}"

Docker Hub

Getting Credentials

  1. Go to Docker Hub Security Settings
  2. Create a new Access Token
  3. Add as secrets: DOCKERHUB_USERNAME and DOCKERHUB_TOKEN

Workflow Configuration

- uses: docker/login-action@v3
  with:
    username: ${{ secrets.DOCKERHUB_USERNAME }}
    password: ${{ secrets.DOCKERHUB_TOKEN }}

- uses: a-line-services/release-pilot@v1
  with:
    github-token: ${{ secrets.GITHUB_TOKEN }}

release-pilot.yml Configuration

packages:
  - name: my-app
    ecosystem: docker
    docker:
      registry: docker.io
      image: your-username/your-app
      tags:
        - latest
        - "{version}"

AWS Elastic Container Registry (ECR)

Workflow Configuration

- uses: aws-actions/configure-aws-credentials@v4
  with:
    aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
    aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
    aws-region: us-east-1

- uses: aws-actions/amazon-ecr-login@v2

- uses: a-line-services/release-pilot@v1
  with:
    github-token: ${{ secrets.GITHUB_TOKEN }}

release-pilot.yml Configuration

packages:
  - name: my-app
    ecosystem: docker
    docker:
      registry: 123456789012.dkr.ecr.us-east-1.amazonaws.com
      image: my-app
      tags:
        - latest
        - "{version}"

Google Artifact Registry

- uses: google-github-actions/auth@v2
  with:
    credentials_json: ${{ secrets.GCP_CREDENTIALS }}

- uses: google-github-actions/setup-gcloud@v2

- run: gcloud auth configure-docker us-docker.pkg.dev

- uses: a-line-services/release-pilot@v1
  with:
    github-token: ${{ secrets.GITHUB_TOKEN }}

release-pilot.yml Configuration

packages:
  - name: my-app
    ecosystem: docker
    docker:
      registry: us-docker.pkg.dev
      image: your-project/your-repo/your-app
      tags:
        - latest
        - "{version}"

Tag Templates

Use placeholders to generate tags dynamically:

Placeholder Example (v1.2.3)
{version} 1.2.3
{major} 1
{minor} 2
{patch} 3

Docker Configuration Reference

Option Description Default
registry Registry hostname docker.io
image Image name (required) -
dockerfile Path to Dockerfile Dockerfile
context Build context directory Package path
platforms Target platforms -
buildArgs Build-time variables -
target Multi-stage build target -
tags Stable release tags ['latest', '{version}']
devTags Dev release tags ['dev', '{version}']
push Push after build true