Skip to main content

GitHub Action: docker-build-push

Build Docker image and push it

Introduction

Build Docker image and push it.

Usage

  name: github-action-docker-build-push
on:
push:
branches: [ master ]

jobs:
context:
runs-on: ubuntu-latest
steps:
- name: github-action-docker-build-push
uses: actions/checkout@v3

- name: github-action-docker-build-push
id: build
uses: cloudposse/github-action-docker-build-push@main
with:
registry: registry.hub.docker.com
organization: "${{ github.event.repository.owner.login }}"
repository: "${{ github.event.repository.name }}"
login: "${{ secrets.DOCKERHUB_USERNAME }}"
password: "${{ secrets.DOCKERHUB_PASSWORD }}"
platforms: linux/amd64,linux/arm64

outputs:
image: ${{ steps.build.outputs.image }}
tag: ${{ steps.build.outputs.tag }}
tip

If omitted, cache-from and cache-to will default to gha. In an AWS environment, we recommend using ECR as a remote cache.

     - name: github-action-docker-build-push
id: build
uses: cloudposse/github-action-docker-build-push@main
with:
registry: registry.hub.docker.com
organization: "${{ github.event.repository.owner.login }}"
repository: "${{ github.event.repository.name }}"
+ cache-from: "type=registry,ref=registry.hub.docker.com/${{ github.event.repository.owner.login }}/${{ github.event.repository.name }}:cache"
+ cache-to: "mode=max,image-manifest=true,oci-mediatypes=true,type=registry,ref=registry.hub.docker.com/${{ github.event.repository.owner.login }}/${{ github.event.repository.name }}:cache"

Inputs

NameDescriptionDefaultRequired
build-argsList of build-time variablesN/Afalse
cache-fromList of external cache sources for buildx (e.g., user/app:cache, type=local,src=path/to/dir)type=ghafalse
cache-toList of cache export destinations for buildx (e.g., user/app:cache, type=local,dest=path/to/dir)type=gha,mode=maxfalse
docker-metadata-pr-head-shaSet to true to tag images with the PR HEAD SHA instead of the merge commit SHA within pull requests.falsefalse
fileDockerfile nameDockerfilefalse
image_nameImage name (excluding registry). Defaults to {{$organization/$repository}}.false
loginDocker loginfalse
no-cacheSend the --no-cache flag to the docker build processfalsefalse
organizationOrganizationN/Atrue
passwordDocker passwordfalse
platformsList of target platforms for build (e.g. linux/amd64,linux/arm64,linux/riscv64,linux/ppc64le,linux/s390x,etc)linux/amd64false
provenanceGenerate provenance attestation for the buildN/Afalse
registryDocker registryN/Atrue
repositoryRepositoryN/Atrue
secret-filesList of secret files to expose to the build (e.g., key=filename, MY_SECRET=./secret.txt)N/Afalse
secretsList of secrets to expose to the build (e.g., key=string, GIT_AUTH_TOKEN=mytoken)N/Afalse
sshList of SSH agent socket or keys to expose to the buildN/Afalse
tagsList of tags (supports https://github.com/docker/metadata-action#tags-input)N/Afalse
targetSets the target stage to buildfalse
workdirWorking directory./false

Outputs

NameDescription
imageDocker image name
metadataDocker image metadata
tagDocker image tag