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')
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