Builds a Docker image and pushes it to the private registry of your choosing.
- GitHub Actions Beta program participation
- Run checkout action before using this action
steps:
- uses: actions/checkout@v1
- uses: mr-smithers-excellent/docker-build-push@master
with:
image: repo/image
registry: registry-url.io
dockerfile: Dockerfile.ci
username: username
password: ${{ secrets.DOCKER_PASSWORD }}
Name | Description | Required |
---|---|---|
image | Docker image name | Yes |
registry | Registry host | Yes |
dockerfile | Location of Dockerfile (defaults to Dockerfile ) |
No |
username | Registry username | No |
password | Registry password or token | No |
- Save your Docker Hub username (
DOCKER_USERNAME
) and password (DOCKER_PASSWORD
) as secrets in your GitHub repo - Modify sample below and include in your workflow
.github/workflows/*.yml
file
uses: mr-smithers-excellent/docker-build-push@master
with:
image: docker-hub-repo/image-name
registry: docker.io
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- Create a service account with the ability to push to GCR (see configuring access control)
- Create and download JSON key for new service account
- Save content of
.json
file as a secret calledDOCKER_PASSWORD
in your GitHub repo - Modify sample below and include in your workflow
.github/workflows/*.yml
file - Ensure you set the username to
_json_key
uses: mr-smithers-excellent/docker-build-push@master
with:
image: gcp-project/image-name
registry: gcr.io
username: _json_key
password: ${{ secrets.DOCKER_PASSWORD }}
- Create an IAM user with the ability to push to ECR (see example policies)
- Create and download access keys
- Save
AWS_ACCESS_KEY_ID
andAWS_SECRET_ACCESS_KEY
as secrets in your GitHub repo - Modify sample below and include in your workflow
.github/workflows/*.yml
file
uses: mr-smithers-excellent/docker-build-push@master
with:
image: image-name
registry: [aws-account-number].dkr.ecr.[region].amazonaws.com
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
By default, this action will use an algorithm based on the state of your git repo to determine the Docker image tag. This is designed to enable developers to more easily use GitOps in their CI/CD pipelines. Below is a table detailing how the GitHub trigger (branch or tag) determines the Docker tag.
Trigger | Commit SHA | Docker Tag |
---|---|---|
/refs/tags/v1.0 | N/A | v1.0 |
/refs/heads/master | 1234567 | dev-1234567 |
/refs/heads/some-feature | 1234567 | some-feature-1234567 |