diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0ac8010..914f479 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -255,6 +255,29 @@ jobs: if: always() uses: crazy-max/ghaction-dump-context@v1 + export-docker: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v2.3.3 + - + name: Build + uses: ./ + with: + context: ./test + file: ./test/Dockerfile + load: true + tags: myimage:latest + - + name: Inspect + run: | + docker image inspect myimage:latest + - + name: Dump context + if: always() + uses: crazy-max/ghaction-dump-context@v1 + multi: runs-on: ubuntu-latest strategy: diff --git a/README.md b/README.md index 93e717a..3e92f9a 100644 --- a/README.md +++ b/README.md @@ -7,10 +7,10 @@ ## Upgrade from v1 `v2` of this action includes significant updates and now uses Docker [Buildx](https://github.com/docker/buildx). It -works with 3 new optional actions ([login](https://github.com/docker/login-action), [setup-buildx](https://github.com/docker/setup-buildx-action) +works with 3 new actions ([login](https://github.com/docker/login-action), [setup-buildx](https://github.com/docker/setup-buildx-action) 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 -[GitHub Runner](https://github.com/actions/virtual-environments) during its execution (#71 #92). +[GitHub Runner](https://github.com/actions/virtual-environments) during its execution. [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). @@ -37,6 +37,7 @@ ___ * [Push to multi-registries](#push-to-multi-registries) * [Cache to registry](#push-to-multi-registries) * [Local registry](#local-registry) + * [Export image to Docker](#export-image-to-docker) * [Leverage GitHub cache](#leverage-github-cache) * [Complete workflow](#complete-workflow) * [Update DockerHub repo description](#update-dockerhub-repo-description) @@ -56,7 +57,8 @@ build-secrets, remote cache, etc. and different builder deployment/namespacing o ### Git context -The default behavior of this action is to use the [Git context invoked by your workflow](https://github.com/docker/build-push-action/blob/master/src/context.ts#L31-L35). +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. ```yaml name: ci @@ -380,6 +382,46 @@ For testing purposes you may need to create a [local registry](https://hub.docke ``` +### 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: + +
+ Show workflow + + ```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 + ``` +
+ ### Leverage GitHub cache You can leverage [GitHub cache](https://docs.github.com/en/actions/configuring-and-managing-workflows/caching-dependencies-to-speed-up-workflows) @@ -427,15 +469,20 @@ using [actions/cache](https://github.com/actions/cache) with this action: ``` +> 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`. + ### Complete workflow -If you come from [`v1`](https://github.com/docker/build-push-action/tree/releases/v1#readme) and you want an +If you come from [`v1`](https://github.com/docker/build-push-action/tree/releases/v1#readme) and want an "automatic" tag management through Git reference and [OCI Image Format Specification](https://github.com/opencontainers/image-spec/blob/master/annotations.md) -for labels, you will have to do it in a dedicated step [for now](https://github.com/docker/build-push-action/issues/116). +for labels, you will have to do it in a dedicated step. 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) -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: +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:
Show workflow @@ -595,6 +642,18 @@ with this action: Following inputs can be used as `step.with` keys +> `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 +> ``` + | Name | Type | Description | |---------------------|----------|------------------------------------| | `builder` | String | Builder instance (see [setup-buildx](https://github.com/docker/setup-buildx-action) action) | @@ -615,18 +674,6 @@ Following inputs can be used as `step.with` keys | `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`) | -> `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 -> ``` - ### outputs Following outputs are available