11name : Release
22
33on :
4- # push:
5- # tags:
6- # - '[0-9]+.[0-9]+.[0-9]+' # no pre-release suffix
7- # - '[0-9]+.[0-9]+.[0-9]+-[0-9A-Za-z]+' # pre-release suffix, no ID
8- # - '[0-9]+.[0-9]+.[0-9]+-[0-9A-Za-z]+.[0-9]+' # pre-release suffix
9- # - '!0[0-9]+*' # MAJOR only absolute integer
10- # - '!*.0[0-9]+*' # MINOR, PATCH and ID only absolute integer
11- # - '!*-0[0-9]+' # NAME only absolute integer, no ID
12- # - '!*-0[0-9]+.*' # NAME only absolute integer
13-
144 workflow_dispatch :
155 inputs :
166 version :
177 description : ' Version'
188 required : true
199 type : string
20- title :
21- description : ' Title'
22- required : true
23- type : string
2410 draft :
2511 description : ' Draft'
2612 required : true
2713 default : false
2814 type : boolean
15+ fix :
16+ description : ' Fix version'
17+ required : true
18+ default : false
19+ type : boolean
2920
3021env :
31- version : ${{ github.event.inputs.version }}
32- title : ${{ github.event.inputs.title }}
22+ fix : ${{ github.event.inputs.fix }}
3323 regex : ((0|[1-9][0-9]*)\.){2}(0|[1-9][0-9]*)(-(alpha|beta|rc)(\.(0|[1-9][0-9]*))?)?
3424
3525jobs :
3626
37- release :
38- name : Update the docs and release
27+ update :
28+ name : Update files
3929 runs-on : ubuntu-latest
4030
4131 steps :
42- - name : Verify version
43- id : verify_version
44- run : grep -qE "^$regex$" <<< "$version"
45-
4632 - name : Checkout code
4733 id : checkout
4834 uses : actions/checkout@v3
5743 id : fetch_tags
5844 run : git fetch --prune --unshallow --tags
5945
60- - name : Generate release body
61- id : make_body
62- run : .github/workflows/body.sh >> $GITHUB_ENV
46+ - name : Get latest version release tag
47+ run : .github/workflows/release/latest.sh >> $GITHUB_ENV
48+
49+ - name : Generate body
50+ env :
51+ latest : ${{ env.latest }}
52+ run : .github/workflows/release/body.sh >> $GITHUB_ENV
53+
54+ - name : Verify version against regex
55+ run : |
56+ [[ "$version" =~ ^$regex$ ]] || exit 1
57+
58+ - name : Fix version
59+ env :
60+ old : ${{ env.latest }}
61+ new : ${{ env.version }}
62+ run : .github/workflows/release/semver.sh >> $GITHUB_ENV
63+ if : ${{ github.event.inputs.fix }}
6364
6465 - name : Update INSTALLATION.md
6566 id : update_installation_md
@@ -86,15 +87,14 @@ jobs:
8687 run : echo "commitish=$(git rev-parse @)" >> $GITHUB_ENV
8788
8889 - name : Release on GitHub
89- id : create_release
9090 uses : actions/create-release@v1
9191 env :
9292 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
9393 with :
9494 tag_name : refs/tags/${{ env.version }}
9595 commitish : ${{ env.commitish }}
96- release_name : ${{ env.title }}
97- body : ${{ env.body }}
96+ release_name : ${{ env.version }}
97+ body_path : BODY.md
9898 # '-' appears only if the pre-release suffix is present
9999 prerelease : ${{ contains(env.version, '-') }}
100100 draft : ${{ github.event.inputs.draft }}
0 commit comments