@@ -2,44 +2,68 @@ name: Bump Version
22on :
33 workflow_dispatch :
44 inputs :
5- force :
6- description : ' force release'
7- required : false
8- default : ' 0'
5+ force_bump :
6+ description : ' Force version bump'
7+ required : true
8+ type : boolean
9+ default : false
910 schedule :
1011 - cron : ' 0 0 * * *'
1112jobs :
1213 bump-version :
1314 runs-on : ubuntu-latest
1415 steps :
15- - uses : actions/checkout@v5.0.0
16+ - uses : actions/checkout@v5
1617 with :
1718 fetch-depth : 0
1819 persist-credentials : false
1920 token : ${{ secrets.PERSONAL_ACCESS_TOKEN }}
2021 - name : Calculate changes from the latest tag to HEAD
2122 id : changes
2223 run : |
23- LATEST_TAG=$(git describe --abbrev=0 --tags)
24- echo "latest-tag = $LATEST_TAG"
25- COUNT=$(git log $LATEST_TAG..HEAD --pretty=format:"%s" --no-merges \
26- --grep='^build:' \
27- --grep='^ci:' \
28- --grep='^feat:' \
29- --grep='^fix:' \
30- --grep='^docs:' \
31- --grep='^style:' \
32- --grep='^refactor:' \
33- --grep='^perf:' \
34- --grep='^test:' \
35- --grep='^revert:' \
36- --grep='^chore:' | awk 'END{print NR}')
24+ # タグが存在するか確認
25+ if git tag -l | grep -q .; then
26+ LATEST_TAG=$(git describe --abbrev=0 --tags)
27+ echo "latest-tag = $LATEST_TAG"
28+ # 最新タグから現在までの変更をカウント
29+ COUNT=$(git log $LATEST_TAG..HEAD --pretty=format:"%s" --no-merges \
30+ --grep='^build:' \
31+ --grep='^ci:' \
32+ --grep='^feat:' \
33+ --grep='^fix:' \
34+ --grep='^docs:' \
35+ --grep='^style:' \
36+ --grep='^refactor:' \
37+ --grep='^perf:' \
38+ --grep='^test:' \
39+ --grep='^revert:' \
40+ --grep='^chore:' | awk 'END{print NR}')
41+ else
42+ echo "No tags found - using initial commit as base"
43+ # 初期コミットから現在までの変更をカウント(初回実行時)
44+ FIRST_COMMIT=$(git rev-list --max-parents=0 HEAD)
45+ COUNT=$(git log $FIRST_COMMIT..HEAD --pretty=format:"%s" --no-merges \
46+ --grep='^build:' \
47+ --grep='^ci:' \
48+ --grep='^feat:' \
49+ --grep='^fix:' \
50+ --grep='^docs:' \
51+ --grep='^style:' \
52+ --grep='^refactor:' \
53+ --grep='^perf:' \
54+ --grep='^test:' \
55+ --grep='^revert:' \
56+ --grep='^chore:' | awk 'END{print NR}')
57+ # 初回は必ず1以上にしてタグ付けができるようにする
58+ if [ "$COUNT" -eq "0" ]; then
59+ COUNT=1
60+ fi
61+ fi
3762 echo "steps.changes.outputs.count = $COUNT"
38- FORCE=${{ inputs.force }}
39- if [[ "$FORCE" = "1" ]]; then
40- echo "::set-output name=count::1"
63+ if [[ "${{ inputs.force_bump }}" == "true" ]]; then
64+ echo "count=1" >> $GITHUB_OUTPUT
4165 else
42- echo "::set-output name= count:: $COUNT"
66+ echo "count= $COUNT" >> $GITHUB_OUTPUT
4367 fi
4468 - name : Bump version and push tag
4569 id : tag_version
5680 tag_name : ${{ steps.tag_version.outputs.new_tag }}
5781 release_name : Release ${{ steps.tag_version.outputs.new_tag }}
5882 body : ${{ steps.tag_version.outputs.changelog }}
59- if : steps.changes.outputs.count > 0
83+ if : steps.changes.outputs.count > 0
0 commit comments