@@ -3,6 +3,7 @@ name: push-latest
3
3
# trigger on push to master
4
4
# only on Dockerfile related modifications
5
5
on :
6
+ workflow_dispatch :
6
7
push :
7
8
branches :
8
9
- " master"
15
16
- " .github/workflows/push-latest.yml"
16
17
17
18
env :
18
- ORGANIZATION : " zenika"
19
- IMAGE_NAME : " terraform-azure-cli"
20
- IMAGE_TAG : " latest"
19
+ IMAGE_NAME : " zenika/terraform-azure-cli"
20
+ REGISTRY : ghcr.io
21
21
22
22
jobs :
23
23
build_push_latest :
@@ -32,20 +32,41 @@ jobs:
32
32
echo "AZ_VERSION=$(jq -r '.azcli_version | sort | .[-1]' supported_versions.json)" >> $GITHUB_ENV
33
33
echo "TF_VERSION=$(jq -r '.tf_version | sort | .[-1]' supported_versions.json)" >> $GITHUB_ENV
34
34
35
- - name : Build image
36
- run : docker image build . --file Dockerfile --build-arg TERRAFORM_VERSION=${TF_VERSION} --build-arg AZURE_CLI_VERSION=${AZ_VERSION} --tag $ORGANIZATION/$IMAGE_NAME:$IMAGE_TAG
35
+ - name : Log in to the Container registry
36
+ uses : docker/login-action@v3
37
+ with :
38
+ registry : ${{ env.REGISTRY }}
39
+ username : ${{ github.actor }}
40
+ password : ${{ secrets.GITHUB_TOKEN }}
37
41
38
- - name : Login to Docker Hub registry
39
- run : echo '${{ secrets.DOCKERHUB_PASS }}' | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin
42
+ - name : Extract metadata (tags, labels) for Docker
43
+ id : meta
44
+ uses : docker/metadata-action@v5
45
+ with :
46
+ images : ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
47
+ flavor : |
48
+ latest=auto
49
+ tags : |
50
+ # set latest tag for default branch
51
+ type=raw,value=latest,enable={{is_default_branch}}
40
52
41
- - name : Push image to registry
42
- run : docker push $ORGANIZATION/$IMAGE_NAME:$IMAGE_TAG
53
+ - name : Set up QEMU
54
+ uses : docker/setup-qemu-action@v2
43
55
44
- - name : Save image
45
- run : docker image save -o $IMAGE_NAME-$IMAGE_TAG.tar $ORGANIZATION/$IMAGE_NAME:$IMAGE_TAG
56
+ - name : Set up Buildx
57
+ id : buildx
58
+ uses : docker/setup-buildx-action@v2
46
59
47
- - name : Upload image artifact
48
- uses : actions/upload-artifact @v4
60
+ - name : Build and push container images
61
+ uses : docker/build-push-action @v4
49
62
with :
50
- name : ${{ env.IMAGE_NAME }}-${{ env.IMAGE_TAG }}
51
- path : ${{ env.IMAGE_NAME }}-${{ env.IMAGE_TAG }}.tar
63
+ context : .
64
+ platforms : linux/amd64,linux/arm64,linux/arm/v7,linux/386
65
+ build-args : |
66
+ TERRAFORM_VERSION=${{ env.TF_VERSION }}
67
+ AWS_CLI_VERSION=${{ env.AWS_VERSION }}
68
+ tags : ${{ steps.meta.outputs.tags }}
69
+ labels : ${{ steps.meta.outputs.labels }}
70
+ push : true
71
+ cache-from : type=gha
72
+ cache-to : type=gha,mode=max
0 commit comments