@ -20,6 +20,8 @@ jobs:
-
name : Checkout
uses : actions/checkout@v2.3.3
with:
path : action
-
name : Set up QEMU
uses : docker/setup-qemu-action@v1
@ -35,7 +37,7 @@ jobs:
-
name : Build and push
id : docker_build
uses : ./
uses : ./ action
with:
file : ./test/Dockerfile
builder : ${{ steps.buildx.outputs.name }}
@ -67,6 +69,8 @@ jobs:
-
name : Checkout
uses : actions/checkout@v2.3.3
with:
path : action
-
name : Set up QEMU
uses : docker/setup-qemu-action@v1
@ -82,7 +86,7 @@ jobs:
-
name : Build and push
id : docker_build
uses : ./
uses : ./ action
with:
file : ./test/Dockerfile
builder : ${{ steps.buildx.outputs.name }}
@ -215,8 +219,155 @@ jobs:
if : always()
uses : crazy-max/ghaction-dump-context@v1
github-cache:
registry-cache:
runs-on : ubuntu-latest
services:
registry:
image : registry:2
ports:
- 5000 : 5000
steps:
-
name : Checkout
uses : actions/checkout@v2.3.3
-
name : Set up QEMU
uses : docker/setup-qemu-action@v1
with:
platforms : all
-
name : Set up Docker Buildx
id : buildx
uses : docker/setup-buildx-action@v1
with:
driver-opts : network=host
-
name : Build and push (1)
id : docker_build
uses : ./
with:
context : ./test
file : ./test/Dockerfile-multi
builder : ${{ steps.buildx.outputs.name }}
platforms : linux/amd64,linux/arm64
push : true
tags : |
localhost:5000/name/app:latest
localhost:5000/name/app:1.0.0
cache-from : type=registry,ref=localhost:5000/name/app
cache-to : type=inline
-
name : Inspect (1)
run : |
docker buildx imagetools inspect localhost:5000/name/app:latest
-
name : Image digest (1)
run : echo ${{ steps.docker_build.outputs.digest }}
-
name : Prune
run : |
docker buildx prune -a -f --verbose
-
name : Build and push (2)
id : docker_build2
uses : ./
with:
context : ./test
file : ./test/Dockerfile-multi
builder : ${{ steps.buildx.outputs.name }}
platforms : linux/amd64,linux/arm64
push : true
tags : |
localhost:5000/name/app:latest
localhost:5000/name/app:1.0.0
cache-from : type=registry,ref=localhost:5000/name/app
cache-to : type=inline
-
name : Inspect (2)
run : |
docker buildx imagetools inspect localhost:5000/name/app:latest
-
name : Image digest (2)
run : echo ${{ steps.docker_build2.outputs.digest }}
-
name : Check digests
run : |
echo Compare "${{ steps.docker_build.outputs.digest }}" with "${{ steps.docker_build2.outputs.digest }}"
if [ "${{ steps.docker_build.outputs.digest }}" != "${{ steps.docker_build2.outputs.digest }}" ]; then
echo "::error::Digests should be identical"
exit 1
fi
-
name : Dump context
if : always()
uses : crazy-max/ghaction-dump-context@v1
github-cache-first:
runs-on : ubuntu-latest
outputs:
digest : ${{ steps.docker_build.outputs.digest }}
services:
registry:
image : registry:2
ports:
- 5000 : 5000
steps:
-
name : Checkout
uses : actions/checkout@v2.3.3
-
name : Set up QEMU
uses : docker/setup-qemu-action@v1
with:
platforms : all
-
name : Set up Docker Buildx
id : buildx
uses : docker/setup-buildx-action@v1
with:
driver-opts : network=host
-
name : Cache Docker layers
uses : actions/cache@v2
with:
path : /tmp/.buildx-cache
key : ${{ runner.os }}-buildx-ghcache-${{ github.sha }}
restore-keys : |
${{ runner.os }}-buildx-ghcache-
-
name : Erase cache
run : |
rm -rf /tmp/.buildx-cache/*
-
name : Build and push
id : docker_build
uses : ./
with:
context : ./test
file : ./test/Dockerfile-multi-golang
builder : ${{ steps.buildx.outputs.name }}
platforms : linux/amd64,linux/arm64
push : true
tags : |
localhost:5000/name/app:latest
localhost:5000/name/app:1.0.0
cache-from : type=local,src=/tmp/.buildx-cache
cache-to : type=local,dest=/tmp/.buildx-cache
-
name : Inspect
run : |
docker buildx imagetools inspect localhost:5000/name/app:1.0.0
-
name : Image digest
run : echo ${{ steps.docker_build.outputs.digest }}
-
name : Dump context
if : always()
uses : crazy-max/ghaction-dump-context@v1
github-cache-hit:
runs-on : ubuntu-latest
needs : github-cache-first
services:
registry:
image : registry:2
@ -243,9 +394,9 @@ jobs:
id : cache
with:
path : /tmp/.buildx-cache
key : ${{ runner.os }}-buildx- ${{ github.sha }}
key : ${{ runner.os }}-buildx- ghcache- ${{ github.sha }}
restore-keys : |
${{ runner.os }}-buildx-
${{ runner.os }}-buildx- ghcache-
-
name : Build and push
id : docker_build
@ -268,6 +419,14 @@ jobs:
-
name : Image digest
run : echo ${{ steps.docker_build.outputs.digest }}
-
name : Check digests
run : |
echo Compare "${{ needs.github-cache-first.outputs.digest }}" with "${{ steps.docker_build.outputs.digest }}"
if [ "${{ needs.github-cache-first.outputs.digest }}" != "${{ steps.docker_build.outputs.digest }}" ]; then
echo "::error::Digests should be identical"
exit 1
fi
-
name : Cache hit
run : echo ${{ steps.cache.outputs.cache-hit }}