11name : Release
22
33on :
4- push :
5- tags :
6- - " v[0-9]+.[0-9]+.[0-9]+"
7- - " !v*-rc.*"
4+ workflow_dispatch :
5+ inputs :
6+ version :
7+ description : " Version to release (e.g. v0.1.0)"
8+ required : true
9+ type : string
810
911permissions :
1012 contents : write
1517 CARGO_INCREMENTAL : 0
1618
1719jobs :
20+ validate :
21+ name : " Validate ${{ inputs.version }}"
22+ runs-on : ubuntu-latest
23+ steps :
24+ - name : Verify tag exists
25+ run : |
26+ if ! git ls-remote --tags origin "refs/tags/${{ inputs.version }}" | grep -q .; then
27+ echo "Error: Tag ${{ inputs.version }} does not exist. Run Promote Release first."
28+ exit 1
29+ fi
30+
1831 build :
19- name : Build ${{ matrix.target }}
32+ name : " Build ${{ matrix.target }} (${{ inputs.version }})"
33+ needs : validate
2034 runs-on : ${{ matrix.os }}
2135 strategy :
2236 fail-fast : false
3448 steps :
3549 - name : Checkout code
3650 uses : actions/checkout@v4
51+ with :
52+ ref : ${{ inputs.version }}
3753
3854 - name : Install system dependencies (Linux)
3955 if : runner.os == 'Linux'
87103 skardi-${{ matrix.target }}.tar.gz.sha256
88104
89105 docker :
90- name : Build & Push Docker Image (${{ matrix.variant }})
106+ name : " Build & Push Docker Image (${{ matrix.variant }}, ${{ inputs.version }})"
107+ needs : validate
91108 runs-on : ubuntu-latest
92109 strategy :
93110 fail-fast : false
@@ -123,9 +140,9 @@ jobs:
123140 username : ${{ github.actor }}
124141 password : ${{ secrets.GITHUB_TOKEN }}
125142
126- - name : Extract version from tag
143+ - name : Extract version
127144 id : version
128- run : echo "version=${GITHUB_REF_NAME#v}" >> $GITHUB_OUTPUT
145+ run : echo "version=${{ inputs.version }}" | sed 's/v//' >> $GITHUB_OUTPUT
129146
130147 - name : Build and push Docker image
131148 uses : docker/build-push-action@v6
@@ -142,7 +159,7 @@ jobs:
142159 cache-to : type=gha,mode=max
143160
144161 release :
145- name : Create Release
162+ name : " Create Release (${{ inputs.version }}) "
146163 needs : [build, docker]
147164 runs-on : ubuntu-latest
148165 steps :
@@ -158,6 +175,7 @@ jobs:
158175 - name : Create GitHub Release
159176 uses : softprops/action-gh-release@v2
160177 with :
178+ tag_name : ${{ inputs.version }}
161179 generate_release_notes : true
162180 files : |
163181 artifacts/*
0 commit comments