| name: 'Docker Build Action' | |
| description: 'Build the docker image' | |
| inputs: | |
| registry: | |
| required: true | |
| description: The registry to tag the image with | |
| image: | |
| required: true | |
| description: The image to tag the image with | |
| version: | |
| required: true | |
| description: The image version to tag with | |
| push: | |
| required: false | |
| description: Push the image? | |
| default: 'false' | |
| outputs: | |
| tag: | |
| description: The docker tag of the built image | |
| value: ${{ steps.build_meta.outputs.tag }} | |
| version: | |
| description: The docker version of the built image | |
| value: ${{ steps.meta.outputs.version }} | |
| digest: | |
| description: The docker build digest of the built image | |
| value: ${{ steps.build_meta.outputs.digest }} | |
| runs: | |
| using: 'composite' | |
| steps: | |
| - name: Context | |
| id: context | |
| shell: bash | |
| run: | | |
| git_repo_url="${{ github.server_url }}/${{ github.repository }}" | |
| echo "git_build_url=$git_repo_url/actions/runs/${{ github.run_id }}" >> $GITHUB_OUTPUT | |
| echo "git_sha=${{ github.sha }}" >> $GITHUB_OUTPUT | |
| echo "metadata_file=buildx-bake-metadata.json" >> $GITHUB_OUTPUT | |
| cat $GITHUB_OUTPUT | |
| - name: Docker meta | |
| id: meta | |
| uses: docker/metadata-action@v5 | |
| with: | |
| bake-target: web | |
| images: ${{ inputs.registry }}/${{ inputs.image }} | |
| tags: | | |
| # use raw tag to allow the calling workflow to define the version of the image | |
| # and to prevent multiple tags from being associated with a build | |
| type=raw,value=${{ inputs.version }} | |
| - name: Build Image | |
| id: build | |
| shell: bash | |
| env: | |
| DOCKER_TAGS_FILE: ${{ steps.meta.outputs.bake-file-tags }} | |
| DOCKER_ANNOTATIONS_FILE: ${{ steps.meta.outputs.bake-file-annotations }} | |
| DOCKER_METADATA_FILE: ${{ steps.context.outputs.metadata_file }} | |
| DOCKER_PUSH: ${{ inputs.push }} | |
| run: | | |
| make setup \ | |
| DOCKER_TARGET="production" \ | |
| DOCKER_VERSION="${{ steps.meta.outputs.version }}" | |
| make docker_build_web \ | |
| DOCKER_COMMIT="${{ steps.context.outputs.git_sha }}" \ | |
| DOCKER_BUILD="${{ steps.context.outputs.git_build_url }}" | |
| - name: Get image digest | |
| id: build_meta | |
| shell: bash | |
| run: | | |
| metadata=$(cat ${{ steps.context.outputs.metadata_file }}) | |
| echo "digest=$(echo $metadata | jq -r '.web."containerimage.digest"')" >> $GITHUB_OUTPUT | |
| echo "tag=$(echo $metadata | jq -r '.web."image.name"')" >> $GITHUB_OUTPUT | |
| cat $GITHUB_OUTPUT | |