@@ -38,34 +38,30 @@ jobs:
38
38
git config --global user.name "Leeroy Travis"
39
39
40
40
'
41
- - name : Get version
42
- id : current
43
- run : echo "version=$(.github/bump-version.get.sh)" >> "$GITHUB_OUTPUT"
44
- - name : Compute versions
45
- id : versions
46
- run : .github/bump-version.bump.sh "${{ env.MODE }}" "${{ steps.current.outputs.version
47
- }}" ${{ github.event.inputs.version }}
48
- - name : Set release version
49
- run : ' .github/bump-version.set.sh "${{ steps.versions.outputs.release }}"
50
-
51
- git diff --cached
52
-
53
- '
54
- - name : Commit release
55
- run : ' git commit -m "${COMMIT_PREFIX}Set release version ${{ steps.versions.outputs.release
56
- }}"
57
-
58
- '
59
- - name : Tag release
60
- run : ' git tag "${{ steps.versions.outputs.release }}"
61
-
62
- '
63
- - name : Push release tag
64
- run : ' git push origin "${{ github.ref }}"
65
-
66
- git push origin "${{ steps.versions.outputs.release }}"
67
-
68
- '
41
+ - name : Release
42
+ id : release
43
+ run : " set -x\n RETRIES=10\n TRY=0\n while [ $TRY -lt $RETRIES ] ; do\n TRY=$(expr\
44
+ \ $TRY + 1)\n # Get the current version.\n CURRENT=$(.github/bump-version.get.sh)\n \
45
+ \ # Calculate next release version, and next dev version. Output to $GITHUB_OUTPUT,\
46
+ \ which we then read.\n .github/bump-version.bump.sh \" ${{ env.MODE }}\" \
47
+ \ \" ${CURRENT}\" ${{ github.event.inputs.version }}\n . $GITHUB_OUTPUT\n \
48
+ \ # Set the in-tree version to the release version.\n .github/bump-version.set.sh\
49
+ \ \" ${release}\"\n git diff --cached\n # GHA intermixes the stdout from\
50
+ \ git diff with stderr from \" set -x\" , so we pause to let it settle.\n sleep\
51
+ \ 1\n git commit -m \" ${COMMIT_PREFIX}Set release version ${release}\"\n \
52
+ \ git tag \" ${release}\"\n\n # Bump to the next development version.\n \
53
+ \ .github/bump-version.set.sh \" ${bumped}\"\n git diff --cached\n sleep\
54
+ \ 1\n git commit -m \" ${COMMIT_PREFIX}Bump to next development version ${bumped}\" \
55
+ \n\n # If we push the release commit and its tag in one step, we hit strange\
56
+ \ race conditions where one client succeeds\n # pushing the tag, and another\
57
+ \ client succeeds pushing the commit. Instead, we push the commit first and\
58
+ \ then the tag.\n # That seems to cause the loser of the race to fail early.\n \
59
+ \ if git push origin \" ${{ github.ref }}\" && git push origin \" ${release}\" \
60
+ \ ; then\n break\n fi\n\n # If the \" git push\" failed, then let's forget\
61
+ \ our last two commits, re-pull the latest changes, and try again.\n git\
62
+ \ reset --hard HEAD~2\n git tag -d \" ${release}\"\n git pull origin \" ${{\
63
+ \ github.ref }}\"\n # Wait a little bit to let competing workflows finish\
64
+ \ their business.\n sleep 10\n done\n "
69
65
- name : Generate release text
70
66
id : release-body
71
67
run : " set -x\n # Get the most recent commit. Hopefully it was a PR merge.\n COMMIT=$(jq\
84
80
with :
85
81
token : ${{ secrets.WORKFLOW_PAT }}
86
82
prerelease : true
87
- tag : ${{ steps.versions .outputs.release }}
83
+ tag : ${{ steps.release .outputs.release }}
88
84
body : ${{ steps.release-body.outputs.body }}
89
- - name : Set development version
90
- run : ' .github/bump-version.set.sh "${{ steps.versions.outputs.bumped }}"
91
-
92
- git diff --cached
93
-
94
- '
95
- - name : Commit and push development version
96
- run : ' git commit -m "${COMMIT_PREFIX}Bump to next development version ${{ steps.versions.outputs.bumped
97
- }}"
98
-
99
- git push origin main
100
-
101
- '
0 commit comments