Skip to content

Commit d55c0c0

Browse files
authored
Merge pull request #301 from sine-fdn/ci/fix-http-server-image-action
CI: Fix http-server image release
2 parents eac6f34 + 6762503 commit d55c0c0

File tree

1 file changed

+22
-10
lines changed

1 file changed

+22
-10
lines changed

.github/workflows/push_http_server_image.yml

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,17 @@ jobs:
1414
steps:
1515
- name: Checkout repository
1616
uses: actions/checkout@v5
17+
- uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9
18+
with:
19+
toolchain: stable
1720
- run: cargo test --profile debug-release --package polytune --package polytune-server-core --package polytune-http-server
21+
- name: Extract version
22+
if: startsWith(github.ref, 'refs/tags/http-server-v')
23+
id: get-version
24+
run: |
25+
# Strip the http-server-v prefix
26+
RAW_TAG=${{ github.ref_name }}
27+
echo "version=${RAW_TAG#http-server-v}" >> $GITHUB_OUTPUT
1828
- name: Install taplo for extracting http-server version
1929
uses: taiki-e/install-action@44c6d64aa62cd779e873306675c7a58e86d6d532
2030
if: startsWith(github.ref, 'refs/tags/http-server-v')
@@ -24,10 +34,8 @@ jobs:
2434
if: startsWith(github.ref, 'refs/tags/http-server-v')
2535
run: |
2636
http_server_version=$(taplo get -f crates/polytune-http-server/Cargo.toml 'package.version')
27-
tag_version=$(echo "${{ github.ref_name }}" | sed 's/^http-server-v//')
28-
29-
if [[ "$http_server_version" != "$tag_version" ]]; then
30-
echo "::error:: polytune-http-server crate version ${http_server_version} does not match tag version ${tag_version}"
37+
if [[ "$http_server_version" != "${{ steps.get-version.outputs.version }}" ]]; then
38+
echo "::error:: polytune-http-server crate version ${http_server_version} does not match tag version ${{ steps.get-version.outputs.version }}"
3139
exit 1
3240
fi
3341
- name: Log in to GitHub Container Registry
@@ -42,13 +50,17 @@ jobs:
4250
with:
4351
images: ghcr.io/${{ github.repository }}/polytune-http-server
4452
tags: |
45-
# 1. Branch: main -> 'dev'
46-
type=raw,value=dev,enable=${{ github.ref == 'refs/heads/main' }}
53+
# Tags main branch pushes as 'dev'
54+
type=raw,value=dev,enable={{ is_default_branch }}
4755
48-
# 2. Tag: http-server-v1.2.3 -> '1.2.3', '1.2', '1'
49-
type=semver,pattern=^http-server-v(.*)$,value={{version}}
50-
type=semver,pattern=^http-server-v(.*)$,value={{major}}.{{minor}}
51-
type=semver,pattern=^http-server-v(.*)$,value={{major}}
56+
# On git tag pushes, push e.g. 1.2.4, 1.2, and 1 versions (if major 0 is zero, skip major only push)
57+
# metadata-action also tags a :latest image automatically when type=semver is enabled
58+
# TODO, there might be an issue with this action when releasing e.g. a patch release 1.2.1 when 2.0.0 is already
59+
# released, as then 1.2.1 would be tagged as :latest which is wrong.
60+
# See https://github.com/docker/metadata-action/issues/407
61+
type=semver,pattern={{major}},value=${{ steps.get-version.outputs.version }},enable=${{ steps.get-version.outputs.version != '' && !startsWith(steps.get-version.outputs.version, '0.') }}
62+
type=semver,pattern={{major.minor}},value=${{ steps.get-version.outputs.version }},enable=${{ steps.get-version.outputs.version != '' }}
63+
type=semver,pattern={{version}},value=${{ steps.get-version.outputs.version }},enable=${{ steps.get-version.outputs.version != '' }}
5264
5365
- name: Build and push http-server image
5466
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83

0 commit comments

Comments
 (0)