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