-
Notifications
You must be signed in to change notification settings - Fork 97
91 lines (87 loc) · 3.28 KB
/
hotfix.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# Copyright 2021 Agnostiq Inc.
#
# This file is part of Covalent.
#
# Licensed under the Apache License 2.0 (the "License"). A copy of the
# License may be obtained with this software package or at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Use of this file is prohibited except in compliance with the License.
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
name: hotfix
on:
push:
branches:
- "release-0.*.*"
jobs:
hotfix:
runs-on: ubuntu-latest
outputs:
version: ${{ env.VERSION }}
steps:
- name: Stable tag
id: stable-tag
uses: ./.github/actions/describe
with:
token: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ github.event.ref }}
stable: true
- name: Latest tag
id: latest-tag
uses: ./.github/actions/describe
with:
token: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ github.event.ref }}
stable: false
- name: Check out head
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Hotfix version
id: hotfix
run: |
re='^[0-9]+$'
IFS='-' read -ra stable_tag <<< $(echo ${{ steps.stable-tag.outputs.tag }} | cut -c2-)
IFS='-' read -ra release_tag <<< $(echo ${{ github.event.ref }} | cut -c2-)
IFS='-' read -ra latest_tag <<< $(echo ${{ steps.latest-tag-release.outputs.tag }} | cut -c2-)
if [ ${stable_tag[0]} != ${release_tag[1]} ] ; then
echo "This branch does not contain a matching stable release. Hotfixes can only be applied to stable releases."
exit 0
if [ ${#latest_tag[1]} -eq 0 ] ; then
version="${latest_tag[0]}-1-rc.0"
elif [[ ${latest_tag[1]} =~ $re ]] && [ ${#latest_tag[2]} -eq 0 ] ; then
version="${latest_tag[0]}-$(( ${latest_tag[1]} + 1 ))-rc.0"
elif [[ ${latest_tag[1]} =~ $re ]] ; then
IFS='.' read -ra rc <<< "${latest_tag[2]}"
version="${latest_tag[0]}-${latest_tag[1]}-rc.$(( ${rc[1]} + 1 ))"
else
echo "Hotfix branches must be created from a stable release."
exit 2
fi
changelog_header="## [${version}] - $(date -I)"
nl=$'\n'
sed -i '/UNRELEASED/a\'$'\n''\'$'\n'"$changelog_header" CHANGELOG.md
echo $version > VERSION
echo "VERSION=$version" >> $GITHUB_ENV
- name: Commit
uses: EndBug/add-and-commit@v9
if: ${{ env.VERSION }}
with:
author_name: CovalentOpsBot
author_email: [email protected]
message: "${{ github.event.issue.title }} (#${{ github.event.issue.number }})"
tag: "v${{ env.VERSION }}"
release:
name: Create Release
needs: hotfix
if: needs.hotfix.outputs.version
uses: AgnostiqHQ/covalent/.github/workflows/release.yml@develop
with:
prerelease: true
prerelease_version: needs.hotfix.outputs.version
secrets: inherit # pragma: allowlist secret