@@ -2,6 +2,11 @@ name: Build and push Docker image
22
33on :
44 workflow_dispatch :
5+ inputs :
6+ release_tag :
7+ description : Optional release tag created by Release Please
8+ required : false
9+ type : string
510 push :
611 branches :
712 - master
@@ -20,21 +25,71 @@ jobs:
2025 - name : Checkout
2126 uses : actions/checkout@v4
2227 with :
28+ ref : ${{ inputs.release_tag || github.ref }}
2329 submodules : true
2430
2531 - name : Extract metadata
2632 id : meta
2733 uses : docker/metadata-action@v5
2834 with :
2935 images : ${{ env.REGISTRY_IMAGE }}
36+ flavor : |
37+ latest=false
3038 tags : |
31- type=ref,event=branch
32- type=ref,event=pr
33- type=semver,pattern={{version}}
34- type=semver,pattern={{major}}.{{minor}}
39+ type=ref,event=branch,enable=${{ inputs.release_tag == '' }}
40+ type=ref,event=pr,enable=${{ inputs.release_tag == '' }}
41+ type=semver,pattern={{version}},enable=${{ inputs.release_tag == '' }}
42+ type=semver,pattern={{major}}.{{minor}},enable=${{ inputs.release_tag == '' }}
43+ type=semver,value=${{ inputs.release_tag }},pattern={{version}},enable=${{ inputs.release_tag != '' }}
44+ type=semver,value=${{ inputs.release_tag }},pattern={{major}}.{{minor}},enable=${{ inputs.release_tag != '' }}
3545 type=raw,value=dev,enable=${{ github.ref == 'refs/heads/dev' }}
36- type=raw,value=beta,enable={{is_default_branch}}
37- type=raw,value=latest,enable={{is_default_branch}}
46+ type=sha,prefix=edge-,enable=${{ github.ref == 'refs/heads/master' && inputs.release_tag == '' }}
47+ type=raw,value=latest,enable=${{ startsWith(github.ref, 'refs/tags/v') || inputs.release_tag != '' }}
48+
49+ - name : Verify release version
50+ if : ${{ startsWith(github.ref, 'refs/tags/v') || inputs.release_tag != '' }}
51+ shell : bash
52+ env :
53+ RELEASE_TAG : ${{ inputs.release_tag || github.ref_name }}
54+ run : |
55+ source_version="$(tr -d '[:space:]' < VERSION)"
56+ tag_version="${RELEASE_TAG#v}"
57+ test "$source_version" = "$tag_version" || {
58+ echo "Version mismatch: VERSION=$source_version, tag=$tag_version" >&2
59+ exit 1
60+ }
61+
62+ - name : Resolve source revision
63+ id : source-revision
64+ shell : bash
65+ run : |
66+ revision="$(git rev-parse HEAD)"
67+ echo "value=$revision" >> "$GITHUB_OUTPUT"
68+ echo "short=${revision::12}" >> "$GITHUB_OUTPUT"
69+
70+ - name : Resolve latest frontend revisions
71+ id : frontend-revisions
72+ shell : bash
73+ run : |
74+ frontend_2024_ref="$(git ls-remote https://github.com/vastsa/FileCodeBoxFronted.git HEAD | cut -f1)"
75+ frontend_2023_ref="$(git ls-remote https://github.com/vastsa/FileCodeBoxFronted2023.git HEAD | cut -f1)"
76+ test -n "$frontend_2024_ref"
77+ test -n "$frontend_2023_ref"
78+ echo "frontend_2024=$frontend_2024_ref" >> "$GITHUB_OUTPUT"
79+ echo "frontend_2023=$frontend_2023_ref" >> "$GITHUB_OUTPUT"
80+
81+ - name : Resolve application version
82+ id : app-version
83+ shell : bash
84+ env :
85+ RELEASE_TAG : ${{ inputs.release_tag }}
86+ run : |
87+ source_version="$(tr -d '[:space:]' < VERSION)"
88+ if [[ "$GITHUB_REF" == refs/tags/v* || -n "$RELEASE_TAG" ]]; then
89+ echo "value=$source_version" >> "$GITHUB_OUTPUT"
90+ else
91+ echo "value=${source_version}-dev+${{ steps.source-revision.outputs.short }}" >> "$GITHUB_OUTPUT"
92+ fi
3893
3994 - name : Set up QEMU
4095 uses : docker/setup-qemu-action@v3
@@ -60,6 +115,11 @@ jobs:
60115 push : true
61116 tags : ${{ steps.meta.outputs.tags }}
62117 labels : ${{ steps.meta.outputs.labels }}
118+ build-args : |
119+ APP_VERSION=${{ steps.app-version.outputs.value }}
120+ VCS_REF=${{ steps.source-revision.outputs.value }}
121+ FRONTEND_2024_REF=${{ steps.frontend-revisions.outputs.frontend_2024 }}
122+ FRONTEND_2023_REF=${{ steps.frontend-revisions.outputs.frontend_2023 }}
63123 cache-from : type=gha
64124 cache-to : type=gha,mode=max
65125 provenance : false
0 commit comments