@@ -2,8 +2,8 @@ name: Docker CI (beta)
22
33on :
44 push :
5- # branches:
6- # - "*-beta"
5+ branches :
6+ - " *-beta" # 启用分支推送触发,但会检查是否有 tag
77 tags :
88 - " v*.*.*.beta*"
99 - " v*.*.*-beta*"
1717 steps :
1818 - name : Checkout
1919 uses : actions/checkout@v4
20+ with :
21+ fetch-depth : 0 # 获取完整的 git 历史,包括 tags
2022
2123 - name : Set up QEMU
2224 uses : docker/setup-qemu-action@v3
@@ -34,12 +36,35 @@ jobs:
3436 - name : Extract version
3537 id : vars
3638 run : |
39+ # 检查当前 commit 是否有 beta tag
40+ CURRENT_TAG=$(git tag --points-at HEAD | grep -E '^v.*\.beta.*$' | head -1)
41+
3742 if [[ "${GITHUB_REF}" == refs/tags/* ]]; then
38- VERSION=${GITHUB_REF#refs/tags/}
43+ # 直接由 tag 触发
44+ RAW_VERSION=${GITHUB_REF#refs/tags/}
45+ elif [[ -n "$CURRENT_TAG" ]]; then
46+ # 分支推送但当前 commit 有 beta tag
47+ RAW_VERSION=$CURRENT_TAG
3948 else
49+ # 普通分支推送,使用 commit hash
4050 VERSION=${GITHUB_SHA::7}-beta
51+ echo "version=$VERSION" >> $GITHUB_OUTPUT
52+ exit 0
53+ fi
54+
55+ # 格式化版本号:v2.0.0.beta8 -> 2.0.0-beta8
56+ if [[ $RAW_VERSION =~ ^v([0-9]+\.[0-9]+\.[0-9]+)\.beta([0-9]+)$ ]]; then
57+ VERSION="${BASH_REMATCH[1]}-beta${BASH_REMATCH[2]}"
58+ elif [[ $RAW_VERSION =~ ^v([0-9]+\.[0-9]+\.[0-9]+)-beta([0-9]+)$ ]]; then
59+ VERSION="${BASH_REMATCH[1]}-beta${BASH_REMATCH[2]}"
60+ else
61+ # 如果格式不匹配,直接去掉 v 前缀
62+ VERSION=${RAW_VERSION#v}
63+ VERSION=${VERSION/.beta/-beta}
4164 fi
65+
4266 echo "version=$VERSION" >> $GITHUB_OUTPUT
67+ echo "raw_version=$RAW_VERSION" >> $GITHUB_OUTPUT
4368
4469 - name : Prepare metadata
4570 id : meta
6287
6388 - name : Output version info
6489 run : |
65- echo "🏷 Version: ${{ steps.vars.outputs.version }}"
90+ echo "🏷 Raw Version: ${{ steps.vars.outputs.raw_version }}"
91+ echo "🏷 Formatted Version: ${{ steps.vars.outputs.version }}"
6692 echo "📦 Image Tags:"
6793 echo " ghcr.io/${{ steps.meta.outputs.repo }}:${{ steps.vars.outputs.version }}"
6894 echo " ghcr.io/${{ steps.meta.outputs.repo }}:beta"
0 commit comments