6
6
# the minor version number and set the patch number to 0.
7
7
inputs :
8
8
candidate-stable :
9
- description : Release candidate version (stable, like 1.3.0). Don't include a leading `v`.
10
-
11
- current-stable :
12
- required : true
13
- description : Current version (stable, like 1.2.0). Don't include a leading `v`.
9
+ description : Release candidate version bump (stable).
10
+ type : choice
11
+ options :
12
+ - minor
13
+ - patch
14
+ - " no bump"
15
+ default : minor
14
16
15
17
candidate-beta :
16
- description : Release candidate version (beta, like 0.96.0). Don't include `v`.
17
-
18
- current-beta :
19
- required : true
20
- description : Current version (beta, like 0.95.1). Don't include `v`.
18
+ description : Release candidate version bump (beta).
19
+ type : choice
20
+ options :
21
+ - minor
22
+ - patch
23
+ default : minor
21
24
22
25
permissions : read-all
23
26
24
27
jobs :
25
- validate-versions-format :
28
+ extract-versions :
29
+ outputs :
30
+ current-beta : ${{ steps.current-version-core-beta.outputs.tags }}
31
+ current-stable : ${{ steps.current-version-core-stable-trimmed.outputs.tag }}
32
+ next-beta : ${{ steps.next-versions.outputs.next_beta }}
33
+ next-stable : ${{ steps.next-versions.outputs.next_stable }}
26
34
runs-on : ubuntu-latest
27
35
28
36
steps :
29
- - name : Validate version format
30
- shell : bash
37
+ - uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
38
+ with :
39
+ fetch-depth : 0
40
+
41
+ - name : Get current tag for core beta
42
+ id : current-version-core-beta
43
+ uses : WyriHaximus/github-action-get-previous-tag@04e8485ecb6487243907e330d522ff60f02283ce # v1.4.0
44
+ with :
45
+ prefix : v0
46
+
47
+ - name : Get current tag for core stable
48
+ id : current-version-core-stable
49
+ uses : WyriHaximus/github-action-get-previous-tag@04e8485ecb6487243907e330d522ff60f02283ce # v1.4.0
50
+ with :
51
+ prefix : component/v1 # needs to be a tag of a stable component because major tags are not published
52
+
53
+ - name : Clean up core tag
54
+ id : current-version-core-stable-trimmed
31
55
run : |
32
- validate_beta_version() {
33
- local regex_pattern_beta='^[0-9]+\.[0-9]+\.[0-9]+$'
34
- if [[ ! "$1" =~ $regex_pattern_beta ]]; then
35
- echo "Invalid $2 version format. For beta, it can be 0.1.0 or higher"
36
- exit 1
37
- fi
38
- }
56
+ monorepo_tag=${{ steps.current-version-core-stable.outputs.tag }}
57
+ echo "tag=${monorepo_tag#component/}" >> $GITHUB_OUTPUT
39
58
40
- validate_stable_version() {
41
- local regex_pattern_stable='^[1-9][0-9]*\.[0-9]+\.[0-9]+$'
42
- if [[ ! "$1" =~ $regex_pattern_stable ]]; then
43
- echo "Invalid stable version format for $2. Major version must be greater than 1."
44
- exit 1
45
- fi
46
- }
59
+ - name : Get next versions - beta
60
+ id : semvers-beta
61
+ uses : WyriHaximus/github-action-next-semvers@18aa9ed4152808ab99b88d71f5481e41f8d89930 # v1.2.1
62
+ with :
63
+ version : ${{ steps.current-version-core-beta.outputs.tag }}
47
64
48
- if [[ ! -z "${{ inputs.candidate-beta }}" ]]; then
49
- validate_beta_version "${{ inputs.candidate-beta }}" "candidate-beta"
50
- fi
51
- validate_beta_version "${{ inputs.current-beta }}" "current-beta"
65
+ - name : Get next versions - stable
66
+ id : semvers-stable
67
+ uses : WyriHaximus/github-action-next-semvers@18aa9ed4152808ab99b88d71f5481e41f8d89930 # v1.2.1
68
+ with :
69
+ version : ${{ steps.current-version-core-stable-trimmed.outputs.tag }}
52
70
53
- if [[ ! -z "${{ inputs.candidate-stable }}" ]]; then
54
- validate_stable_version "${{ inputs.candidate-stable }}" "candidate-stable"
71
+ - name : Select next versions
72
+ id : next-versions
73
+ run : |
74
+ # Candidate Beta
75
+ if [[ '${{ inputs.candidate-beta }}' == 'minor' ]]; then
76
+ echo "next_beta=${{ steps.semvers-beta.outputs.minor }}" >> $GITHUB_OUTPUT
77
+ elif [[ '${{ inputs.candidate-beta }}' == 'patch' ]]; then
78
+ echo "next_beta=${{ steps.semvers-beta.outputs.patch }}" >> $GITHUB_OUTPUT
79
+ elif [[ '${{ inputs.candidate-beta }}' == 'no bump' ]]; then
80
+ echo "next_beta=" >> $GITHUB_OUTPUT
81
+ else
82
+ echo "Error: unsupported semver type for Candidate Beta"
83
+ exit 1
55
84
fi
56
- validate_stable_version "${{ inputs.current-stable }}" "current-stable"
57
85
58
- if [[ -z "${{ inputs.candidate-beta }}" && -z "${{ inputs.candidate-stable }}" ]]; then
59
- echo "Candidate version is not set for beta or stable. Please set a version to proceed."
86
+ # Candidate Stable
87
+ if [[ '${{ inputs.candidate-stable }}' == 'minor' ]]; then
88
+ echo "next_stable=${{ steps.semvers-stable.outputs.minor }}" >> $GITHUB_OUTPUT
89
+ elif [[ '${{ inputs.candidate-stable }}' == 'patch' ]]; then
90
+ echo "next_stable=${{ steps.semvers-stable.outputs.patch }}" >> $GITHUB_OUTPUT
91
+ elif [[ '${{ inputs.candidate-stable }}' == 'no bump' ]]; then
92
+ echo "next_stable=" >> $GITHUB_OUTPUT
93
+ else
94
+ echo "Error: unsupported semver type Candidate Stable"
60
95
exit 1
61
96
fi
62
97
63
98
check-blockers :
64
- needs :
65
- - validate-versions-format
66
99
runs-on : ubuntu-latest
67
100
steps :
68
101
- uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
96
129
create-release-issue :
97
130
needs :
98
131
- check-blockers
132
+ - extract-versions
99
133
runs-on : ubuntu-latest
100
134
permissions :
101
135
issues : write
@@ -109,17 +143,18 @@ jobs:
109
143
- name : Create issue for tracking release
110
144
env :
111
145
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
112
- CANDIDATE_BETA : ${{ inputs.candidate -beta }}
113
- CANDIDATE_STABLE : ${{ inputs.candidate -stable }}
114
- CURRENT_BETA : ${{ inputs .current-beta }}
115
- CURRENT_STABLE : ${{ inputs .current-stable }}
146
+ CANDIDATE_BETA : ${{ needs.extract-versions.outputs.next -beta }}
147
+ CANDIDATE_STABLE : ${{ needs.extract-versions.outputs.next -stable }}
148
+ CURRENT_BETA : ${{ needs.extract-versions.outputs .current-beta }}
149
+ CURRENT_STABLE : ${{ needs.extract-versions.outputs .current-stable }}
116
150
REPO : open-telemetry/opentelemetry-collector
117
151
run : ./.github/workflows/scripts/release-create-tracking-issue.sh
118
152
119
153
# Releasing opentelemetry-collector
120
154
prepare-release :
121
155
needs :
122
156
- check-blockers
157
+ - extract-versions
123
158
runs-on : ubuntu-latest
124
159
permissions :
125
160
contents : write
@@ -139,8 +174,8 @@ jobs:
139
174
env :
140
175
GITHUB_TOKEN : ${{ secrets.OPENTELEMETRYBOT_GITHUB_TOKEN }}
141
176
REPO : open-telemetry/opentelemetry-collector
142
- CANDIDATE_BETA : ${{ inputs.candidate -beta }}
143
- CANDIDATE_STABLE : ${{ inputs.candidate -stable }}
144
- CURRENT_BETA : ${{ inputs .current-beta }}
145
- CURRENT_STABLE : ${{ inputs .current-stable }}
177
+ CANDIDATE_BETA : ${{ needs.extract-versions.outputs.next -beta }}
178
+ CANDIDATE_STABLE : ${{ needs.extract-versions.outputs.next -stable }}
179
+ CURRENT_BETA : ${{ needs.extract-versions.outputs .current-beta }}
180
+ CURRENT_STABLE : ${{ needs.extract-versions.outputs .current-stable }}
146
181
run : ./.github/workflows/scripts/release-prepare-release.sh
0 commit comments