2020-08-20 03:46:12 +08:00
[![GitHub release ](https://img.shields.io/github/release/docker/build-push-action.svg?style=flat-square )](https://github.com/docker/build-push-action/releases/latest)
2020-09-09 06:03:42 +08:00
[![GitHub marketplace ](https://img.shields.io/badge/marketplace-build--and--push--docker--images-blue?logo=github&style=flat-square )](https://github.com/marketplace/actions/build-and-push-docker-images)
2020-08-20 03:46:12 +08:00
[![CI workflow ](https://img.shields.io/github/workflow/status/docker/build-push-action/ci?label=ci&logo=github&style=flat-square )](https://github.com/docker/build-push-action/actions?workflow=ci)
[![Test workflow ](https://img.shields.io/github/workflow/status/docker/build-push-action/test?label=test&logo=github&style=flat-square )](https://github.com/docker/build-push-action/actions?workflow=test)
2020-09-09 05:34:53 +08:00
[![Codecov ](https://img.shields.io/codecov/c/github/docker/build-push-action?logo=codecov&style=flat-square )](https://codecov.io/gh/docker/build-push-action)
2020-08-20 03:46:12 +08:00
2020-09-29 08:40:47 +08:00
## Upgrade from v1
2020-09-29 07:08:58 +08:00
2020-09-29 08:40:47 +08:00
`v2` of this action includes significant updates and now uses Docker [Buildx ](https://github.com/docker/buildx ). It
2020-10-23 03:50:22 +08:00
works with 3 new actions ([login](https://github.com/docker/login-action), [setup-buildx ](https://github.com/docker/setup-buildx-action )
2020-09-29 07:08:58 +08:00
and [setup-qemu ](https://github.com/docker/setup-qemu-action )) that we have created. It's also rewritten as a
[typescript-action ](https://github.com/actions/typescript-action/ ) to be as closed as possible of the
2020-10-23 03:50:22 +08:00
[GitHub Runner ](https://github.com/actions/virtual-environments ) during its execution.
2020-09-29 07:08:58 +08:00
[Upgrade notes ](UPGRADE.md ) and many [usage examples ](#usage ) have been added to handle most use cases but `v1` is
still available through [`releases/v1` branch ](https://github.com/docker/build-push-action/tree/releases/v1 ).
2020-08-16 06:36:41 +08:00
## About
2020-03-06 00:28:11 +08:00
2020-09-02 16:07:11 +08:00
GitHub Action to build and push Docker images with [Buildx ](https://github.com/docker/buildx ).
2020-03-16 23:13:04 +08:00
2020-08-29 22:10:05 +08:00
> :bulb: See also:
> * [login](https://github.com/docker/login-action) action
> * [setup-buildx](https://github.com/docker/setup-buildx-action) action
> * [setup-qemu](https://github.com/docker/setup-qemu-action) action
2020-08-20 03:35:36 +08:00
2020-08-20 03:46:12 +08:00
![Screenshot ](.github/build-push-action.png )
2020-08-16 06:36:41 +08:00
___
2020-03-06 00:28:11 +08:00
2020-08-16 06:36:41 +08:00
* [Usage ](#usage )
2020-09-02 16:07:11 +08:00
* [Git context ](#git-context )
* [Path context ](#path-context )
2020-08-29 23:46:56 +08:00
* [Isolated builders ](#isolated-builders )
2020-08-19 04:54:44 +08:00
* [Multi-platform image ](#multi-platform-image )
2020-09-13 02:40:12 +08:00
* [Advanced usage ](#advanced-usage )
2020-10-04 07:24:41 +08:00
* [Push to multi-registries ](#push-to-multi-registries )
* [Cache to registry ](#push-to-multi-registries )
2020-09-09 22:18:06 +08:00
* [Local registry ](#local-registry )
2020-10-23 03:50:22 +08:00
* [Export image to Docker ](#export-image-to-docker )
2020-08-29 22:10:05 +08:00
* [Leverage GitHub cache ](#leverage-github-cache )
2020-08-19 04:54:44 +08:00
* [Complete workflow ](#complete-workflow )
2020-09-10 07:14:41 +08:00
* [Update DockerHub repo description ](#update-dockerhub-repo-description )
2020-08-16 06:36:41 +08:00
* [Customizing ](#customizing )
* [inputs ](#inputs )
* [outputs ](#outputs )
2020-09-22 00:22:47 +08:00
* [Troubleshooting ](#troubleshooting )
2020-08-20 23:25:55 +08:00
* [Keep up-to-date with GitHub Dependabot ](#keep-up-to-date-with-github-dependabot )
2020-08-16 06:36:41 +08:00
* [Limitation ](#limitation )
2020-03-06 00:28:11 +08:00
2020-08-16 06:36:41 +08:00
## Usage
2020-03-06 00:28:11 +08:00
2020-08-16 11:53:50 +08:00
This action uses our [setup-buildx ](https://github.com/docker/setup-buildx-action ) action that extends the
`docker build` command named [buildx ](https://github.com/docker/buildx ) with the full support of the features
2020-08-20 03:35:36 +08:00
provided by [Moby BuildKit ](https://github.com/moby/buildkit ) builder toolkit. This includes multi-arch build,
2020-08-16 11:53:50 +08:00
build-secrets, remote cache, etc. and different builder deployment/namespacing options.
2020-03-06 00:28:11 +08:00
2020-09-02 16:07:11 +08:00
### Git context
2020-10-23 03:50:22 +08:00
The default behavior of this action is to use the [Git context invoked ](https://github.com/docker/build-push-action/blob/master/src/context.ts#L31-L35 )
by your workflow.
2020-09-13 02:40:12 +08:00
2020-09-23 02:49:18 +08:00
```yaml
2020-08-16 06:36:41 +08:00
name: ci
on:
push:
branches: master
jobs:
2020-08-18 04:18:15 +08:00
main:
runs-on: ubuntu-latest
steps:
2020-09-05 11:18:00 +08:00
-
name: Set up QEMU
2020-09-09 06:32:40 +08:00
uses: docker/setup-qemu-action@v1
2020-08-18 04:18:15 +08:00
-
name: Set up Docker Buildx
2020-09-09 06:32:40 +08:00
uses: docker/setup-buildx-action@v1
2020-08-18 04:18:15 +08:00
-
name: Login to DockerHub
2020-08-27 21:08:11 +08:00
uses: docker/login-action@v1
2020-08-18 04:18:15 +08:00
with:
2020-09-11 00:46:50 +08:00
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
2020-08-18 04:18:15 +08:00
-
name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
push: true
2020-08-19 04:54:44 +08:00
tags: user/app:latest
2020-10-21 23:34:06 +08:00
build-args: |
arg1=value1
arg2=value2
2020-08-18 04:18:15 +08:00
-
name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}
2020-09-23 02:49:18 +08:00
```
2020-08-18 04:18:15 +08:00
2020-09-23 17:04:40 +08:00
Building from current repository automatically uses the [GitHub Token ](https://help.github.com/en/actions/configuring-and-managing-workflows/authenticating-with-the-github_token )
as provided by `secrets` so it does not need to be passed. But if you want to authenticate against another private
repository, you have to use a secret named `GIT_AUTH_TOKEN` to be able to authenticate against it with buildx:
2020-09-02 16:07:11 +08:00
```yaml
-
name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
push: true
tags: user/app:latest
secrets: |
2020-09-23 02:49:18 +08:00
GIT_AUTH_TOKEN=${{ secrets.MYTOKEN }}
2020-09-02 16:07:11 +08:00
```
2020-09-22 00:22:47 +08:00
> :warning: Subdir for Git context is [not yet supported](https://github.com/docker/build-push-action/issues/120).
> For the moment you can use the [path context](#path-context).
2020-10-04 05:03:47 +08:00
> More info: https://docs.docker.com/engine/reference/commandline/build/#git-repositories
2020-09-02 16:07:11 +08:00
### Path context
You can also use the `PATH` context alongside the [`actions/checkout` ](https://github.com/actions/checkout/ ) action.
2020-08-29 23:46:56 +08:00
2020-09-23 02:49:18 +08:00
```yaml
name: ci
2020-09-22 00:22:47 +08:00
2020-09-23 02:49:18 +08:00
on:
push:
branches: master
2020-09-22 00:22:47 +08:00
2020-09-23 02:49:18 +08:00
jobs:
path-context:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v2
-
name: Set up QEMU
uses: docker/setup-qemu-action@v1
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
-
name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile
platforms: linux/amd64,linux/arm64,linux/386
push: true
tags: user/app:latest
```
2020-09-02 16:07:11 +08:00
### Isolated builders
2020-09-23 02:49:18 +08:00
```yaml
name: ci
2020-09-22 00:22:47 +08:00
2020-09-23 02:49:18 +08:00
on:
push:
branches: master
2020-09-22 00:22:47 +08:00
2020-09-23 02:49:18 +08:00
jobs:
multi-builders:
runs-on: ubuntu-latest
steps:
-
uses: docker/setup-buildx-action@v1
id: builder1
-
uses: docker/setup-buildx-action@v1
id: builder2
-
name: Builder 1 name
run: echo ${{ steps.builder1.outputs.name }}
-
name: Builder 2 name
run: echo ${{ steps.builder2.outputs.name }}
-
name: Build against builder1
uses: docker/build-push-action@v2
with:
builder: ${{ steps.builder1.outputs.name }}
target: mytarget1
-
name: Build against builder2
uses: docker/build-push-action@v2
with:
builder: ${{ steps.builder2.outputs.name }}
target: mytarget2
```
2020-08-29 23:46:56 +08:00
2020-08-18 04:18:15 +08:00
### Multi-platform image
2020-09-23 02:49:18 +08:00
```yaml
name: ci
2020-09-22 00:22:47 +08:00
2020-09-23 02:49:18 +08:00
on:
push:
branches: master
2020-09-22 00:22:47 +08:00
2020-09-23 02:49:18 +08:00
jobs:
multi:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v2
-
name: Set up QEMU
uses: docker/setup-qemu-action@v1
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
-
name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile
platforms: linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x
push: true
tags: |
user/app:latest
user/app:1.0.0
```
2020-04-22 23:34:18 +08:00
2020-09-13 02:40:12 +08:00
## Advanced usage
2020-10-04 07:24:41 +08:00
### Push to multi-registries
The following workflow will connect you to [DockerHub ](https://github.com/docker/login-action#dockerhub )
and [GitHub Container Registry ](https://github.com/docker/login-action#github-container-registry ) and push the
image to these registries.
< details >
< summary > < b > Show workflow< / b > < / summary >
```yaml
name: ci
on:
push:
branches: master
jobs:
multi-registries:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v2
-
name: Set up QEMU
uses: docker/setup-qemu-action@v1
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
-
name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Login to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.CR_PAT }}
-
name: Build and push
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile
platforms: linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x
push: true
tags: |
user/app:latest
user/app:1.0.0
ghcr.io/user/app:latest
ghcr.io/user/app:1.0.0
```
< / details >
### Cache to registry
You can import/export cache from a cache manifest or (special) image configuration on the registry.
< details >
< summary > < b > Show workflow< / b > < / summary >
```yaml
name: ci
on:
push:
branches: master
jobs:
registry-cache:
runs-on: ubuntu-latest
steps:
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
-
name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v2
with:
push: true
tags: user/app:latest
cache-from: type=registry,ref=user/app:latest
cache-to: type=inline
```
< / details >
2020-09-05 11:18:00 +08:00
### Local registry
2020-09-23 02:49:18 +08:00
For testing purposes you may need to create a [local registry ](https://hub.docker.com/_/registry ) to push images into:
2020-09-05 11:18:00 +08:00
2020-09-22 00:22:47 +08:00
< details >
< summary > < b > Show workflow< / b > < / summary >
```yaml
name: ci
on:
push:
branches: master
jobs:
local-registry:
runs-on: ubuntu-latest
services:
registry:
image: registry:2
ports:
- 5000:5000
steps:
-
name: Set up QEMU
uses: docker/setup-qemu-action@v1
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
with:
driver-opts: network=host
-
name: Build and push to local registry
uses: docker/build-push-action@v2
with:
push: true
tags: localhost:5000/name/app:latest
-
name: Inspect
run: |
docker buildx imagetools inspect localhost:5000/name/app:latest
```
< / details >
2020-09-05 11:18:00 +08:00
2020-10-23 03:50:22 +08:00
### Export image to Docker
You may want your build result to be available in the Docker client through `docker images` to be able to use it
in another step of your workflow:
< details >
< summary > < b > Show workflow< / b > < / summary >
```yaml
name: ci
on:
push:
branches: master
jobs:
export-docker:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v2
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
-
name: Build
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile
load: true
tags: myimage:latest
-
name: Inspect
run: |
docker image inspect myimage:latest
```
< / details >
2020-08-29 22:10:05 +08:00
### Leverage GitHub cache
You can leverage [GitHub cache ](https://docs.github.com/en/actions/configuring-and-managing-workflows/caching-dependencies-to-speed-up-workflows )
2020-09-23 02:49:18 +08:00
using [actions/cache ](https://github.com/actions/cache ) with this action:
2020-08-29 22:10:05 +08:00
2020-09-22 00:22:47 +08:00
< details >
< summary > < b > Show workflow< / b > < / summary >
```yaml
name: ci
on:
push:
branches: master
jobs:
github-cache:
runs-on: ubuntu-latest
steps:
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
-
name: Cache Docker layers
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
-
name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v2
with:
push: true
tags: user/app:latest
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache
```
< / details >
2020-08-29 22:10:05 +08:00
2020-10-23 03:50:22 +08:00
> If you want to [export layers for all stages](https://github.com/docker/buildx#--cache-tonametypetypekeyvalue),
> you have to specify `mode=max` attribute in `cache-to`.
2020-09-13 02:40:12 +08:00
### Complete workflow
2020-09-11 04:24:13 +08:00
2020-10-23 03:50:22 +08:00
If you come from [`v1` ](https://github.com/docker/build-push-action/tree/releases/v1#readme ) and want an
2020-09-12 07:44:53 +08:00
"automatic" tag management through Git reference and [OCI Image Format Specification ](https://github.com/opencontainers/image-spec/blob/master/annotations.md )
2020-10-23 03:50:22 +08:00
for labels, you will have to do it in a dedicated step.
2020-09-11 04:24:13 +08:00
2020-09-13 02:40:12 +08:00
The following workflow with the `Prepare` step will generate some [outputs ](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjobs_idoutputs )
2020-10-23 03:50:22 +08:00
to handle tags and labels based on GitHub actions events.
This is just an example to show many cases that you might want to use and that you will have to adapt according
to your needs:
2020-09-13 02:40:12 +08:00
2020-09-22 00:22:47 +08:00
< details >
< summary > < b > Show workflow< / b > < / summary >
```yaml
name: ci
2020-09-11 04:24:13 +08:00
2020-09-22 00:22:47 +08:00
on:
schedule:
- cron: '0 10 * * *' # everyday at 10am
push:
branches:
- '**'
tags:
- 'v*.*.*'
pull_request:
jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v2
2020-10-08 21:11:44 +08:00
-
name: Repo metadata
id: repo
uses: actions/github-script@v3
with:
script: |
const repo = await github.repos.get(context.repo)
return repo.data
2020-09-22 00:22:47 +08:00
-
name: Prepare
id: prep
run: |
DOCKER_IMAGE=name/app
VERSION=noop
if [ "${{ github.event_name }}" = "schedule" ]; then
VERSION=nightly
elif [[ $GITHUB_REF == refs/tags/* ]]; then
VERSION=${GITHUB_REF#refs/tags/}
elif [[ $GITHUB_REF == refs/heads/* ]]; then
VERSION=$(echo ${GITHUB_REF#refs/heads/} | sed -r 's#/+#-#g')
if [ "${{ github.event.repository.default_branch }}" = "$VERSION" ]; then
VERSION=edge
fi
elif [[ $GITHUB_REF == refs/pull/* ]]; then
VERSION=pr-${{ github.event.number }}
2020-09-12 07:44:53 +08:00
fi
2020-09-22 00:22:47 +08:00
TAGS="${DOCKER_IMAGE}:${VERSION}"
if [[ $VERSION =~ ^v[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
MINOR=${VERSION%.*}
MAJOR=${MINOR%.*}
TAGS="$TAGS,${DOCKER_IMAGE}:${MINOR},${DOCKER_IMAGE}:${MAJOR},${DOCKER_IMAGE}:latest"
elif [ "${{ github.event_name }}" = "push" ]; then
TAGS="$TAGS,${DOCKER_IMAGE}:sha-${GITHUB_SHA::8}"
fi
echo ::set-output name=version::${VERSION}
echo ::set-output name=tags::${TAGS}
echo ::set-output name=created::$(date -u +'%Y-%m-%dT%H:%M:%SZ')
-
name: Set up QEMU
uses: docker/setup-qemu-action@v1
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
-
name: Login to DockerHub
if: github.event_name != 'pull_request'
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile
platforms: linux/amd64,linux/arm64,linux/386
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.prep.outputs.tags }}
labels: |
2020-10-08 21:11:44 +08:00
org.opencontainers.image.title=${{ fromJson(steps.repo.outputs.result).name }}
org.opencontainers.image.description=${{ fromJson(steps.repo.outputs.result).description }}
org.opencontainers.image.url=${{ fromJson(steps.repo.outputs.result).html_url }}
org.opencontainers.image.source=${{ fromJson(steps.repo.outputs.result).clone_url }}
2020-09-22 00:22:47 +08:00
org.opencontainers.image.version=${{ steps.prep.outputs.version }}
org.opencontainers.image.created=${{ steps.prep.outputs.created }}
org.opencontainers.image.revision=${{ github.sha }}
2020-10-08 21:11:44 +08:00
org.opencontainers.image.licenses=${{ fromJson(steps.repo.outputs.result).license.spdx_id }}
2020-09-22 00:22:47 +08:00
```
< / details >
2020-08-17 01:41:44 +08:00
2020-09-23 02:49:18 +08:00
| Event | Ref | Commit SHA | Docker Tag | Pushed |
|-----------------|-------------------------------|------------|------------------------------------|--------|
| `schedule` | | | `nightly` | Yes |
| `pull_request` | `refs/pull/2/merge` | `a123b57` | `pr-2` | No |
| `push` | `refs/heads/<default_branch>` | `676cae2` | `sha-676cae2` , `edge` | Yes |
| `push` | `refs/heads/dev` | `cf20257` | `sha-cf20257` , `dev` | Yes |
| `push` | `refs/heads/my/branch` | `a5df687` | `sha-a5df687` , `my-branch` | Yes |
| `push tag` | `refs/tags/v1.2.3` | | `v1.2.3` , `v1.2` , `v1` , `latest` | Yes |
2020-09-10 07:14:41 +08:00
### Update DockerHub repo description
2020-10-21 23:34:06 +08:00
You can update the [DockerHub repository description ](https://docs.docker.com/docker-hub/repos/ ) using
a third-party action called [DockerHub Description ](https://github.com/peter-evans/dockerhub-description )
2020-09-23 02:49:18 +08:00
with this action:
2020-09-10 07:14:41 +08:00
2020-09-22 00:22:47 +08:00
< details >
< summary > < b > Show workflow< / b > < / summary >
```yaml
name: ci
on:
push:
branches: master
jobs:
main:
runs-on: ubuntu-latest
steps:
-
name: Set up QEMU
uses: docker/setup-qemu-action@v1
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
-
name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v2
with:
push: true
tags: user/app:latest
-
name: Update repo description
uses: peter-evans/dockerhub-description@v2
2020-10-19 01:14:55 +08:00
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
repository: user/app
2020-09-22 00:22:47 +08:00
```
< / details >
2020-09-10 07:14:41 +08:00
2020-08-16 06:36:41 +08:00
## Customizing
2020-03-06 00:28:11 +08:00
2020-08-16 06:36:41 +08:00
### inputs
2020-03-06 00:28:11 +08:00
2020-08-16 06:36:41 +08:00
Following inputs can be used as `step.with` keys
2020-03-06 00:28:11 +08:00
2020-10-23 03:50:22 +08:00
> `List` type is a newline-delimited string
> ```yaml
> cache-from: |
> user/app:cache
> type=local,src=path/to/dir
> ```
> `CSV` type is a comma-delimited string
> ```yaml
> tags: name/app:latest,name/app:1.0.0
> ```
2020-10-21 01:04:54 +08:00
| Name | Type | Description |
|---------------------|----------|------------------------------------|
| `builder` | String | Builder instance (see [setup-buildx ](https://github.com/docker/setup-buildx-action ) action) |
| `context` | String | Build's context is the set of files located in the specified [`PATH` or `URL` ](https://docs.docker.com/engine/reference/commandline/build/ ) (default [Git context ](#git-context )) |
| `file` | String | Path to the Dockerfile (default `Dockerfile` ) |
| `build-args` | List | List of build-time variables |
| `labels` | List | List of metadata for an image |
| `tags` | List/CSV | List of tags |
| `pull` | Bool | Always attempt to pull a newer version of the image (default `false` ) |
| `target` | String | Sets the target stage to build |
| `allow` | List/CSV | List of [extra privileged entitlement ](https://github.com/docker/buildx#--allowentitlement ) (eg. `network.host,security.insecure` ) |
| `no-cache` | Bool | Do not use cache when building the image (default `false` ) |
| `platforms` | List/CSV | List of [target platforms ](https://github.com/docker/buildx#---platformvaluevalue ) for build |
| `load` | Bool | [Load ](https://github.com/docker/buildx#--load ) is a shorthand for `--output=type=docker` (default `false` ) |
| `push` | Bool | [Push ](https://github.com/docker/buildx#--push ) is a shorthand for `--output=type=registry` (default `false` ) |
| `outputs` | List | List of [output destinations ](https://github.com/docker/buildx#-o---outputpath-typetypekeyvalue ) (format: `type=local,dest=path` ) |
| `cache-from` | List | List of [external cache sources ](https://github.com/docker/buildx#--cache-fromnametypetypekeyvalue ) (eg. `type=local,src=path/to/dir` ) |
| `cache-to` | List | List of [cache export destinations ](https://github.com/docker/buildx#--cache-tonametypetypekeyvalue ) (eg. `type=local,dest=path/to/dir` ) |
| `secrets` | List | List of secrets to expose to the build (eg. `key=value` , `GIT_AUTH_TOKEN=mytoken` ) |
2020-09-11 07:23:49 +08:00
| `ssh` | List | List of SSH agent socket or keys to expose to the build (eg: `default|<id>[=<socket>|<key>[,<key>]]` ) |
2020-10-21 01:04:54 +08:00
2020-08-16 06:36:41 +08:00
### outputs
2020-03-06 00:28:11 +08:00
2020-08-16 06:36:41 +08:00
Following outputs are available
2020-03-06 00:28:11 +08:00
2020-08-16 06:36:41 +08:00
| Name | Type | Description |
|---------------|---------|---------------------------------------|
| `digest` | String | Image content-addressable identifier also called a digest |
2020-03-06 00:28:11 +08:00
2020-09-22 00:22:47 +08:00
## Troubleshooting
2020-09-22 03:06:04 +08:00
See [TROUBLESHOOTING.md ](TROUBLESHOOTING.md )
2020-09-22 00:22:47 +08:00
2020-08-20 23:25:55 +08:00
## Keep up-to-date with GitHub Dependabot
Since [Dependabot ](https://docs.github.com/en/github/administering-a-repository/keeping-your-actions-up-to-date-with-github-dependabot )
has [native GitHub Actions support ](https://docs.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates#package-ecosystem ),
to enable it on your GitHub repo all you need to do is add the `.github/dependabot.yml` file:
```yaml
version: 2
updates:
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
```
2020-08-16 06:36:41 +08:00
## Limitation
2020-03-06 00:28:11 +08:00
2020-08-16 06:36:41 +08:00
This action is only available for Linux [virtual environments ](https://help.github.com/en/articles/virtual-environments-for-github-actions#supported-virtual-environments-and-hardware-resources ).