From d4c14fd0066c842daf6e6d5835f5f43a5eddd9ef Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 4 Nov 2022 09:17:25 +0100 Subject: [PATCH] docs: examples moved to docs website Signed-off-by: CrazyMax --- README.md | 35 +--- docs/advanced/cache.md | 206 +---------------------- docs/advanced/copy-between-registries.md | 57 +------ docs/advanced/dockerhub-desc.md | 47 +----- docs/advanced/export-docker.md | 34 +--- docs/advanced/isolated-builders.md | 43 +---- docs/advanced/local-registry.md | 44 +---- docs/advanced/multi-platform.md | 47 +----- docs/advanced/named-contexts.md | 97 +---------- docs/advanced/push-multi-registries.md | 52 +----- docs/advanced/secrets.md | 87 +--------- docs/advanced/share-image-jobs.md | 59 +------ docs/advanced/tags-labels.md | 76 +-------- docs/advanced/test-before-push.md | 66 +------- 14 files changed, 18 insertions(+), 932 deletions(-) diff --git a/README.md b/README.md index b943bb5..ed14a19 100644 --- a/README.md +++ b/README.md @@ -18,20 +18,7 @@ ___ * [Usage](#usage) * [Git context](#git-context) * [Path context](#path-context) -* [Advanced usage](#advanced-usage) - * [Multi-platform image](docs/advanced/multi-platform.md) - * [Secrets](docs/advanced/secrets.md) - * [Isolated builders](docs/advanced/isolated-builders.md) - * [Push to multi-registries](docs/advanced/push-multi-registries.md) - * [Copy between registries](docs/advanced/copy-between-registries.md) - * [Cache](docs/advanced/cache.md) - * [Local registry](docs/advanced/local-registry.md) - * [Export image to Docker](docs/advanced/export-docker.md) - * [Share built image between jobs](docs/advanced/share-image-jobs.md) - * [Test your image before pushing it](docs/advanced/test-before-push.md) - * [Named contexts](docs/advanced/named-contexts.md) - * [Handle tags and labels](docs/advanced/tags-labels.md) - * [Update Docker Hub repo description](docs/advanced/dockerhub-desc.md) +* [Examples](#examples) * [Customizing](#customizing) * [inputs](#inputs) * [outputs](#outputs) @@ -129,8 +116,8 @@ to the default Git context: Building from the current repository automatically uses the [GitHub Token](https://docs.github.com/en/actions/security-guides/automatic-token-authentication), so it does not need to be passed. If you want to authenticate against another -private repository, you have to use a [secret](docs/advanced/secrets.md) named -`GIT_AUTH_TOKEN` to be able to authenticate against it with Buildx: +private repository, you have to use a [secret](https://docs.docker.com/build/ci/github-actions/examples/#secrets) +named `GIT_AUTH_TOKEN` to be able to authenticate against it with Buildx: ```yaml - @@ -181,21 +168,9 @@ jobs: tags: user/app:latest ``` -## Advanced usage +## Examples -* [Multi-platform image](docs/advanced/multi-platform.md) -* [Secrets](docs/advanced/secrets.md) -* [Isolated builders](docs/advanced/isolated-builders.md) -* [Push to multi-registries](docs/advanced/push-multi-registries.md) -* [Copy between registries](docs/advanced/copy-between-registries.md) -* [Cache](docs/advanced/cache.md) -* [Local registry](docs/advanced/local-registry.md) -* [Export image to Docker](docs/advanced/export-docker.md) -* [Share built image between jobs](docs/advanced/share-image-jobs.md) -* [Test your image before pushing it](docs/advanced/test-before-push.md) -* [Named contexts](docs/advanced/named-contexts.md) -* [Handle tags and labels](docs/advanced/tags-labels.md) -* [Update Docker Hub repo description](docs/advanced/dockerhub-desc.md) +See https://docs.docker.com/build/ci/github-actions/examples/. ## Customizing diff --git a/docs/advanced/cache.md b/docs/advanced/cache.md index 561bbd9..060be66 100644 --- a/docs/advanced/cache.md +++ b/docs/advanced/cache.md @@ -1,207 +1,3 @@ # Cache -* [Inline cache](#inline-cache) -* [Registry cache](#registry-cache) -* [GitHub cache](#github-cache) - * [Cache backend API](#cache-backend-api) - * [Local cache](#local-cache) - -> **Note** -> -> See [our guide](https://github.com/docker/buildx/blob/master/docs/guides/cache/index.md) -> for more details about cache storage backends. - -## Inline cache - -In most cases you want to use the [`type=inline` cache exporter](https://github.com/docker/buildx/blob/master/docs/guides/cache/inline.md). -However, note that the `inline` cache exporter only supports `min` cache mode. To enable `max` cache mode, push the -image and the cache separately by using the `registry` cache exporter as shown in the [next example](#registry-cache). - -```yaml -name: ci - -on: - push: - branches: - - 'main' - -jobs: - docker: - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Login to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build and push - uses: docker/build-push-action@v3 - with: - context: . - push: true - tags: user/app:latest - cache-from: type=registry,ref=user/app:latest - cache-to: type=inline -``` - -## Registry cache - -You can import/export cache from a cache manifest or (special) image configuration on the registry with the -[`type=registry` cache exporter](https://github.com/docker/buildx/blob/master/docs/guides/cache/registry.md). - -```yaml -name: ci - -on: - push: - branches: - - 'main' - -jobs: - docker: - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Login to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build and push - uses: docker/build-push-action@v3 - with: - context: . - push: true - tags: user/app:latest - cache-from: type=registry,ref=user/app:buildcache - cache-to: type=registry,ref=user/app:buildcache,mode=max -``` - -## GitHub cache - -### Cache backend API - -> **Warning** -> -> This cache exporter is considered EXPERIMENTAL until further notice. Please -> provide feedback on [BuildKit repository](https://github.com/moby/buildkit) -> if you encounter any issues. - -[GitHub Actions cache exporter](https://github.com/docker/buildx/blob/master/docs/guides/cache/gha.md) -backend uses the [GitHub Cache API](https://github.com/tonistiigi/go-actions-cache/blob/master/api.md) -to fetch and upload cache blobs. That's why this type of cache should be -exclusively used in a GitHub Action workflow as the `url` (`$ACTIONS_CACHE_URL`) -and `token` (`$ACTIONS_RUNTIME_TOKEN`) attributes are populated when a workflow -is started. - -```yaml -name: ci - -on: - push: - branches: - - 'main' - -jobs: - docker: - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Login to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build and push - uses: docker/build-push-action@v3 - with: - context: . - push: true - tags: user/app:latest - cache-from: type=gha - cache-to: type=gha,mode=max -``` - -### Local cache - -> **Warning** -> -> At the moment caches are copied over the existing cache, so it [keeps growing](https://github.com/docker/build-push-action/issues/252). -> The `Move cache` step is used as a workaround (see [moby/buildkit#1896](https://github.com/moby/buildkit/issues/1896) for more info). - -You can also leverage [GitHub cache](https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows) -using the [actions/cache](https://github.com/actions/cache) and [`type=local` cache exporter](https://github.com/docker/buildx/blob/master/docs/guides/cache/local.md) -with this action: - -```yaml -name: ci - -on: - push: - branches: - - 'main' - -jobs: - docker: - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Cache Docker layers - uses: actions/cache@v3 - with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-buildx- - - - name: Login to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build and push - uses: docker/build-push-action@v3 - with: - context: . - push: true - tags: user/app:latest - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max - - - # Temp fix - # https://github.com/docker/build-push-action/issues/252 - # https://github.com/moby/buildkit/issues/1896 - name: Move cache - run: | - rm -rf /tmp/.buildx-cache - mv /tmp/.buildx-cache-new /tmp/.buildx-cache -``` +This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/examples/#cache) diff --git a/docs/advanced/copy-between-registries.md b/docs/advanced/copy-between-registries.md index 3838481..84cb9f0 100644 --- a/docs/advanced/copy-between-registries.md +++ b/docs/advanced/copy-between-registries.md @@ -1,58 +1,3 @@ # Copy images between registries -[Multi-platform images](https://docs.docker.com/build/building/multi-platform/) -built using Buildx can be copied from one registry to another using the -[`imagetools create` command](https://docs.docker.com/engine/reference/commandline/buildx_imagetools_create/): - -```yaml -name: ci - -on: - push: - branches: - - 'main' - -jobs: - docker: - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Login to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Login to GitHub Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Build and push - uses: docker/build-push-action@v3 - with: - context: . - platforms: linux/amd64,linux/arm64 - push: true - tags: | - user/app:latest - user/app:1.0.0 - - - name: Push image to GHCR - run: | - docker buildx imagetools create \ - --tag ghcr.io/user/app:latest \ - --tag ghcr.io/user/app:1.0.0 \ - user/app:latest -``` +This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/examples/#copy-images-between-registries) diff --git a/docs/advanced/dockerhub-desc.md b/docs/advanced/dockerhub-desc.md index a6c0984..57b57e9 100644 --- a/docs/advanced/dockerhub-desc.md +++ b/docs/advanced/dockerhub-desc.md @@ -1,48 +1,3 @@ # Update Docker Hub repo description -You can update the [Docker Hub repository description](https://docs.docker.com/docker-hub/repos/) -using a third party action called [Docker Hub Description](https://github.com/peter-evans/dockerhub-description) -with this action: - -```yaml -name: ci - -on: - push: - branches: - - 'main' - -jobs: - docker: - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Login to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build and push - uses: docker/build-push-action@v3 - with: - context: . - push: true - tags: user/app:latest - - - name: Update repo description - uses: peter-evans/dockerhub-description@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - repository: user/app -``` +This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/examples/#update-docker-hub-repository-description) diff --git a/docs/advanced/export-docker.md b/docs/advanced/export-docker.md index 22174a2..b2274d3 100644 --- a/docs/advanced/export-docker.md +++ b/docs/advanced/export-docker.md @@ -1,35 +1,3 @@ # 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: - -```yaml -name: ci - -on: - push: - branches: - - 'main' - -jobs: - docker: - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Build - uses: docker/build-push-action@v3 - with: - context: . - load: true - tags: myimage:latest - - - name: Inspect - run: | - docker image inspect myimage:latest -``` +This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/examples/#export-image-to-docker) diff --git a/docs/advanced/isolated-builders.md b/docs/advanced/isolated-builders.md index 8dcac71..672aa19 100644 --- a/docs/advanced/isolated-builders.md +++ b/docs/advanced/isolated-builders.md @@ -1,44 +1,3 @@ # Isolated builders -```yaml -name: ci - -on: - push: - branches: - - 'main' - -jobs: - docker: - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - uses: docker/setup-buildx-action@v2 - id: builder1 - - - uses: docker/setup-buildx-action@v2 - 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@v3 - with: - builder: ${{ steps.builder1.outputs.name }} - context: . - target: mytarget1 - - - name: Build against builder2 - uses: docker/build-push-action@v3 - with: - builder: ${{ steps.builder2.outputs.name }} - context: . - target: mytarget2 -``` +This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/examples/#isolated-builders) diff --git a/docs/advanced/local-registry.md b/docs/advanced/local-registry.md index f6e7f5f..d311610 100644 --- a/docs/advanced/local-registry.md +++ b/docs/advanced/local-registry.md @@ -1,45 +1,3 @@ # Local registry -For testing purposes you may need to create a [local registry](https://hub.docker.com/_/registry) -to push images into: - -```yaml -name: ci - -on: - push: - branches: - - 'main' - -jobs: - docker: - runs-on: ubuntu-latest - services: - registry: - image: registry:2 - ports: - - 5000:5000 - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - with: - driver-opts: network=host - - - name: Build and push to local registry - uses: docker/build-push-action@v3 - with: - context: . - push: true - tags: localhost:5000/name/app:latest - - - name: Inspect - run: | - docker buildx imagetools inspect localhost:5000/name/app:latest -``` +This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/examples/#local-registry) diff --git a/docs/advanced/multi-platform.md b/docs/advanced/multi-platform.md index 8d6bae0..186073e 100644 --- a/docs/advanced/multi-platform.md +++ b/docs/advanced/multi-platform.md @@ -1,48 +1,3 @@ # Multi-platform image -You can build [multi-platform images](https://docs.docker.com/build/building/multi-platform/) -using the [`platforms` input](../../README.md#inputs) as described below. - -> **Note** -> -> * List of available platforms will be displayed and available through our -> [setup-buildx](https://github.com/docker/setup-buildx-action#about) action. -> * If you want support for more platforms, you can use QEMU with our -> [setup-qemu](https://github.com/docker/setup-qemu-action) action. - -```yaml -name: ci - -on: - push: - branches: - - 'main' - -jobs: - docker: - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Login to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build and push - uses: docker/build-push-action@v3 - with: - context: . - platforms: linux/amd64,linux/arm64 - push: true - tags: user/app:latest -``` +This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/examples/#multi-platform-images) diff --git a/docs/advanced/named-contexts.md b/docs/advanced/named-contexts.md index f0e85e8..de66308 100644 --- a/docs/advanced/named-contexts.md +++ b/docs/advanced/named-contexts.md @@ -1,98 +1,3 @@ # Named contexts -You can define [additional build contexts](https://docs.docker.com/engine/reference/commandline/buildx_build/#build-context) -that can be accessed in your Dockerfile with `FROM name` or `--from=name`. When -Dockerfile defines a stage with the same name it is overwritten. - -This can be useful with GitHub Actions to reuse results from other builds or -pin an image to a spcific tag in your workflow. - -* [Pin image to a specific tag](#pin-image-to-a-specific-tag) -* [Usage of the built image in other build steps](#usage-of-the-built-image-in-other-build-steps) - -## Pin image to a specific tag - -Replace `alpine:latest` with a pinned one: - -```dockerfile -# syntax=docker/dockerfile:1 -FROM alpine -RUN echo "Hello World" -``` - -```yaml -name: ci - -on: - push: - branches: - - 'main' - -jobs: - docker: - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Build - uses: docker/build-push-action@v3 - with: - context: . - build-contexts: | - alpine=docker-image://alpine:3.16 - tags: myimage:latest -``` - -## Usage of the built image in other build steps - -By default, the [`setup-buildx` action](https://github.com/docker/setup-buildx-action#about) -uses `docker-container` as a build driver, so built Docker images are not -available in the builder container. - -With named contexts you can reuse the built image: - -```dockerfile -# syntax=docker/dockerfile:1 -FROM alpine -RUN echo "Hello World" -``` - -```yaml -name: ci - -on: - push: - branches: - - 'main' - -jobs: - docker: - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Build base image - uses: docker/build-push-action@v3 - with: - context: base - load: true - tags: my-base-image:latest - - - name: Build - uses: docker/build-push-action@v3 - with: - context: . - build-contexts: | - alpine=docker-image://my-base-image:latest - tags: myimage:latest -``` +This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/examples/#named-contexts) diff --git a/docs/advanced/push-multi-registries.md b/docs/advanced/push-multi-registries.md index 4553f81..a8ee7d6 100644 --- a/docs/advanced/push-multi-registries.md +++ b/docs/advanced/push-multi-registries.md @@ -1,53 +1,3 @@ # Push to multi-registries -The following workflow will connect you to [Docker Hub](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: - -```yaml -name: ci - -on: - push: - branches: - - 'main' - -jobs: - docker: - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Login to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Login to GitHub Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Build and push - uses: docker/build-push-action@v3 - with: - context: . - platforms: linux/amd64,linux/arm64 - push: true - tags: | - user/app:latest - user/app:1.0.0 - ghcr.io/user/app:latest - ghcr.io/user/app:1.0.0 -``` +This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/examples/#push-to-multi-registries) diff --git a/docs/advanced/secrets.md b/docs/advanced/secrets.md index b670845..0cc464d 100644 --- a/docs/advanced/secrets.md +++ b/docs/advanced/secrets.md @@ -1,88 +1,3 @@ # Secrets -In the following example we will expose and use the [GITHUB_TOKEN secret](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#about-the-github_token-secret) -as provided by GitHub in your workflow. - -First let's create our `Dockerfile` to use our secret: - -```dockerfile -# syntax=docker/dockerfile:1 -FROM alpine -RUN --mount=type=secret,id=github_token \ - cat /run/secrets/github_token -``` - -As you can see we have named our secret `github_token`. Here is the workflow -you can use to expose this secret using the [`secrets` input](../../README.md#inputs): - -```yaml -name: ci - -on: - push: - branches: - - 'main' - -jobs: - docker: - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Build - uses: docker/build-push-action@v3 - with: - context: . - platforms: linux/amd64,linux/arm64 - tags: user/app:latest - secrets: | - "github_token=${{ secrets.GITHUB_TOKEN }}" -``` - -> **Note** -> -> You can also expose a secret file to the build with the [`secret-files`](../../README.md#inputs) input: -> ```yaml -> secret-files: | -> "MY_SECRET=./secret.txt" -> ``` - -If you're using [GitHub secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets) -and need to handle multi-line value, you will need to place the key-value pair -between quotes: - -```yaml -secrets: | - "MYSECRET=${{ secrets.GPG_KEY }}" - GIT_AUTH_TOKEN=abcdefghi,jklmno=0123456789 - "MYSECRET=aaaaaaaa - bbbbbbb - ccccccccc" - FOO=bar - "EMPTYLINE=aaaa - - bbbb - ccc" - "JSON_SECRET={""key1"":""value1"",""key2"":""value2""}" -``` - -| Key | Value | -|--------------------|-------------------------------------| -| `MYSECRET` | `***********************` | -| `GIT_AUTH_TOKEN` | `abcdefghi,jklmno=0123456789` | -| `MYSECRET` | `aaaaaaaa\nbbbbbbb\nccccccccc` | -| `FOO` | `bar` | -| `EMPTYLINE` | `aaaa\n\nbbbb\nccc` | -| `JSON_SECRET` | `{"key1":"value1","key2":"value2"}` | - -> **Note** -> -> All quote signs need to be doubled for escaping. +This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/examples/#secrets) diff --git a/docs/advanced/share-image-jobs.md b/docs/advanced/share-image-jobs.md index a380054..cf1b6a1 100644 --- a/docs/advanced/share-image-jobs.md +++ b/docs/advanced/share-image-jobs.md @@ -1,60 +1,3 @@ # Share built image between jobs -As each job is isolated in its own runner you cannot use your built image -between jobs (except for [self-hosted runners](https://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners)). -However, you can [pass data between jobs in a workflow](https://docs.github.com/en/actions/using-workflows/storing-workflow-data-as-artifacts#passing-data-between-jobs-in-a-workflow) -using the [actions/upload-artifact](https://github.com/actions/upload-artifact) -and [actions/download-artifact](https://github.com/actions/download-artifact) -actions: - -```yaml -name: ci - -on: - push: - branches: - - 'main' - -jobs: - build: - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Build and export - uses: docker/build-push-action@v3 - with: - context: . - tags: myimage:latest - outputs: type=docker,dest=/tmp/myimage.tar - - - name: Upload artifact - uses: actions/upload-artifact@v3 - with: - name: myimage - path: /tmp/myimage.tar - - use: - runs-on: ubuntu-latest - needs: build - steps: - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Download artifact - uses: actions/download-artifact@v3 - with: - name: myimage - path: /tmp - - - name: Load image - run: | - docker load --input /tmp/myimage.tar - docker image ls -a -``` +This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/examples/#share-built-image-between-jobs) diff --git a/docs/advanced/tags-labels.md b/docs/advanced/tags-labels.md index 6447c7a..c3993db 100644 --- a/docs/advanced/tags-labels.md +++ b/docs/advanced/tags-labels.md @@ -1,77 +1,3 @@ # Handle tags and labels -If you want an "automatic" tag management and [OCI Image Format Specification](https://github.com/opencontainers/image-spec/blob/master/annotations.md) -for labels, you can do it in a dedicated step. The following workflow will use -the [Docker metadata action](https://github.com/docker/metadata-action) to -handle tags and labels based on GitHub actions events and Git metadata: - -```yaml -name: ci - -on: - schedule: - - cron: '0 10 * * *' - push: - branches: - - '**' - tags: - - 'v*.*.*' - pull_request: - branches: - - 'main' - -jobs: - docker: - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Docker meta - id: meta - uses: docker/metadata-action@v4 - with: - # list of Docker images to use as base name for tags - images: | - name/app - ghcr.io/username/app - # generate Docker tags based on the following events/attributes - tags: | - type=schedule - type=ref,event=branch - type=ref,event=pr - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=semver,pattern={{major}} - type=sha - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Login to Docker Hub - if: github.event_name != 'pull_request' - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Login to GHCR - if: github.event_name != 'pull_request' - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Build and push - uses: docker/build-push-action@v3 - with: - context: . - push: ${{ github.event_name != 'pull_request' }} - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} -``` +This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/examples/#manage-tags-and-labels) diff --git a/docs/advanced/test-before-push.md b/docs/advanced/test-before-push.md index 84b08a5..6b3ac99 100644 --- a/docs/advanced/test-before-push.md +++ b/docs/advanced/test-before-push.md @@ -1,67 +1,3 @@ # Test your image before pushing it -In some cases, you might want to validate that the image works as expected -before pushing it. - -The workflow below will be composed of several steps to achieve this: -* Build and export the image to Docker -* Test your image -* Multi-platform build and push the image - -```yaml -name: ci - -on: - push: - branches: - - 'main' - -env: - TEST_TAG: user/app:test - LATEST_TAG: user/app:latest - -jobs: - docker: - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Login to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build and export to Docker - uses: docker/build-push-action@v3 - with: - context: . - load: true - tags: ${{ env.TEST_TAG }} - - - name: Test - run: | - docker run --rm ${{ env.TEST_TAG }} - - - name: Build and push - uses: docker/build-push-action@v3 - with: - context: . - platforms: linux/amd64,linux/arm64 - push: true - tags: ${{ env.LATEST_TAG }} -``` - -> **Note** -> -> Build time will not be increased with this workflow because internal cache -> for `linux/amd64` will be used from previous step on `Build and push` step -> so only `linux/arm64` will be actually built. +This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/examples/#test-your-image-before-pushing-it)