@@ -2,12 +2,8 @@ name: Deploy
22
33on :
44 push :
5- branches :
6- - ' **'
7- tags-ignore :
8- - ' v*'
9- - ' v*-pre.*'
10- pull_request :
5+ tags :
6+ - ' v[0-9]+.[0-9]+.[0-9]+'
117
128permissions :
139 contents : read
2319 RUST_BACKTRACE : 1
2420
2521jobs :
26- quality-check :
22+ verify-tag :
23+ name : Verify Tag
24+ runs-on : ubuntu-latest
25+ outputs :
26+ should_deploy : ${{ steps.check.outputs.should_deploy }}
27+ steps :
28+ - name : Checkout code
29+ uses : actions/checkout@v4
30+ with :
31+ fetch-depth : 0
32+
33+ - name : Check if tag is on main or master branch
34+ id : check
35+ run : |
36+ git fetch origin main master || true
37+ BRANCHES=$(git branch -r --contains ${{ github.ref }})
38+
39+ if echo "$BRANCHES" | grep -qE 'origin/(main|master)'; then
40+ echo "✓ Tag is on main or master branch"
41+ echo "should_deploy=true" >> $GITHUB_OUTPUT
42+ else
43+ echo "✗ Tag is not on main or master branch, skipping deployment"
44+ echo "Tag is on: $BRANCHES"
45+ echo "should_deploy=false" >> $GITHUB_OUTPUT
46+ fi
47+
48+ - name : Verify version consistency
49+ if : steps.check.outputs.should_deploy == 'true'
50+ run : |
51+ # Extract version from git tag (remove 'v' prefix)
52+ TAG_VERSION="${{ github.ref_name }}"
53+ TAG_VERSION="${TAG_VERSION#v}"
54+ # Extract version from Cargo.toml
55+ CARGO_VERSION=$(grep -m1 '^version' Cargo.toml | sed 's/.*"\(.*\)"/\1/')
56+ echo "Git tag version: $TAG_VERSION"
57+ echo "Cargo.toml version: $CARGO_VERSION"
58+ if [ "$TAG_VERSION" != "$CARGO_VERSION" ]; then
59+ echo "ERROR: Version mismatch! Tag version ($TAG_VERSION) != Cargo.toml version ($CARGO_VERSION)"
60+ exit 1
61+ fi
62+ echo "✓ Version check passed!"
63+
64+ check :
2765 uses : ./.github/workflows/check.yml
66+ needs : verify-tag
67+ if : needs.verify-tag.outputs.should_deploy == 'true'
2868
2969 test :
3070 uses : ./.github/workflows/test.yml
71+ needs : verify-tag
72+ if : needs.verify-tag.outputs.should_deploy == 'true'
3173
32- build-doc :
74+ build :
3375 name : Build documentation
3476 runs-on : ubuntu-latest
35- needs : quality-check
77+ needs : [verify-tag, check, test]
78+ if : needs.verify-tag.outputs.should_deploy == 'true'
3679 steps :
3780 - name : Checkout code
3881 uses : actions/checkout@v4
@@ -45,21 +88,20 @@ jobs:
4588 RUSTDOCFLAGS : -D rustdoc::broken_intra_doc_links -D missing-docs
4689 run : |
4790 cargo doc --no-deps --all-features
48- printf '<meta http-equiv="refresh" content="0;url=axhvc/index.html">' > target/doc/index.html
4991
5092 - name : Upload artifact
5193 uses : actions/upload-pages-artifact@v3
5294 with :
5395 path : target/doc
5496
55- deploy-doc :
97+ deploy :
5698 name : Deploy to GitHub Pages
5799 environment :
58100 name : github-pages
59101 url : ${{ steps.deployment.outputs.page_url }}
60102 runs-on : ubuntu-latest
61- needs : build-doc
62- if : github.ref == format('refs/heads/{0}', github.event.repository.default_branch)
103+ needs : [verify-tag, build]
104+ if : needs.verify-tag.outputs.should_deploy == 'true'
63105 steps :
64106 - name : Deploy to GitHub Pages
65107 id : deployment
0 commit comments