Skip to content

Commit 01f5b31

Browse files
committed
feat(workflows): add dedicated release-actions workflows, add RC support
Extend the Automated Release Actions Github Workflow to support creating Release Candidate releases and Finalizing Release Candidate Releases. Add a dedicated Github Workflow for each Release Action, though each in turn simply calls the shared "Automated Release Actions" workflow with the corresponding parameters. Assisted-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent 267447e commit 01f5b31

7 files changed

Lines changed: 175 additions & 6 deletions
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: Release Action - Finalize RC
2+
run-name: Finalize RC for version ${{ github.event.inputs.version }}
3+
4+
on:
5+
workflow_dispatch:
6+
inputs:
7+
version:
8+
description: |
9+
Downstream Release Version. Eg: "1.22", "1.23"
10+
required: true
11+
type: string
12+
13+
permissions:
14+
contents: write
15+
pull-requests: write
16+
17+
jobs:
18+
finalize-rc:
19+
uses: ./.github/workflows/release-manager.yaml
20+
with:
21+
action: finalize-rc
22+
version: ${{ github.event.inputs.version }}
23+
secrets:
24+
OPENSHIFT_PIPELINES_ROBOT: ${{ secrets.OPENSHIFT_PIPELINES_ROBOT }}

.github/workflows/release-manager.yaml

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,21 @@
11
name: Automated Release Actions
2-
run-name: Execute ${{ github.event.inputs.action || 'update-upstream-versions' }} for version ${{ github.event.inputs.version || 'next' }}
2+
run-name: Execute ${{ inputs.action || 'update-upstream-versions' }} for version ${{ inputs.version || 'next' }}
33

44
on:
5-
schedule:
6-
- cron: "0 0 * * *" # At every day at 00
5+
workflow_call:
6+
inputs:
7+
action:
8+
description: 'Select Action (see README for details)'
9+
required: true
10+
type: string
11+
version:
12+
description: |
13+
Downstream Release Version. Eg: "1.22", "1.23", "next"
14+
required: true
15+
type: string
16+
secrets:
17+
OPENSHIFT_PIPELINES_ROBOT:
18+
required: true
719
workflow_dispatch:
820
inputs:
921
action:
@@ -13,22 +25,26 @@ on:
1325
options:
1426
- new-release
1527
- new-patch
28+
- new-rc
29+
- finalize-rc
1630
- update-upstream-versions
1731
version:
1832
description: |
1933
Downstream Release Version. Eg: "1.22", "1.23", "next"
2034
required: true
2135
type: string
36+
2237
permissions:
2338
contents: write
2439
pull-requests: write
40+
2541
jobs:
2642
run-release:
2743
runs-on: ubuntu-latest
2844
env:
2945
# NOTE: in case of update, the defaults here are also specified in the run-name
30-
ACTION: ${{ github.event.inputs.action || 'update-upstream-versions' }}
31-
VERSION: ${{ github.event.inputs.version || 'next' }}
46+
ACTION: ${{ inputs.action || 'update-upstream-versions' }}
47+
VERSION: ${{ inputs.version || 'next' }}
3248
steps:
3349
- name: Checkout
3450
uses: actions/checkout@v6
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: Release Action - New Patch
2+
run-name: New Patch for version ${{ github.event.inputs.version }}
3+
4+
on:
5+
workflow_dispatch:
6+
inputs:
7+
version:
8+
description: |
9+
Downstream Release Version. Eg: "1.22", "1.23"
10+
required: true
11+
type: string
12+
13+
permissions:
14+
contents: write
15+
pull-requests: write
16+
17+
jobs:
18+
new-patch:
19+
uses: ./.github/workflows/release-manager.yaml
20+
with:
21+
action: new-patch
22+
version: ${{ github.event.inputs.version }}
23+
secrets:
24+
OPENSHIFT_PIPELINES_ROBOT: ${{ secrets.OPENSHIFT_PIPELINES_ROBOT }}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: Release Action - New RC
2+
run-name: New RC for version ${{ github.event.inputs.version }}
3+
4+
on:
5+
workflow_dispatch:
6+
inputs:
7+
version:
8+
description: |
9+
Downstream Release Version. Eg: "1.22", "1.23"
10+
required: true
11+
type: string
12+
13+
permissions:
14+
contents: write
15+
pull-requests: write
16+
17+
jobs:
18+
new-rc:
19+
uses: ./.github/workflows/release-manager.yaml
20+
with:
21+
action: new-rc
22+
version: ${{ github.event.inputs.version }}
23+
secrets:
24+
OPENSHIFT_PIPELINES_ROBOT: ${{ secrets.OPENSHIFT_PIPELINES_ROBOT }}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: Release Action - New Release
2+
run-name: New Release for version ${{ github.event.inputs.version }}
3+
4+
on:
5+
workflow_dispatch:
6+
inputs:
7+
version:
8+
description: |
9+
Downstream Release Version. Eg: "1.22", "1.23"
10+
required: true
11+
type: string
12+
13+
permissions:
14+
contents: write
15+
pull-requests: write
16+
17+
jobs:
18+
new-release:
19+
uses: ./.github/workflows/release-manager.yaml
20+
with:
21+
action: new-release
22+
version: ${{ github.event.inputs.version }}
23+
secrets:
24+
OPENSHIFT_PIPELINES_ROBOT: ${{ secrets.OPENSHIFT_PIPELINES_ROBOT }}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
name: Release Action - Update Upstream Versions
2+
run-name: Update Upstream Versions for ${{ github.event.inputs.version || 'next' }}
3+
4+
on:
5+
schedule:
6+
- cron: "0 0 * * *" # At every day at 00
7+
workflow_dispatch:
8+
inputs:
9+
version:
10+
description: |
11+
Downstream Release Version. Eg: "1.22", "1.23", "next"
12+
required: false
13+
type: string
14+
default: next
15+
16+
permissions:
17+
contents: write
18+
pull-requests: write
19+
20+
jobs:
21+
update-upstream-versions:
22+
uses: ./.github/workflows/release-manager.yaml
23+
with:
24+
action: update-upstream-versions
25+
version: ${{ github.event.inputs.version || 'next' }}
26+
secrets:
27+
OPENSHIFT_PIPELINES_ROBOT: ${{ secrets.OPENSHIFT_PIPELINES_ROBOT }}

README.md

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,36 @@ When planning a new patch release for a specific minor verson then it is essent
3434

3535
After PR is merged then new workflow will be triggered which will generate release configuration in all the Repos.
3636

37+
---
38+
## Release Candidate (RC) Builds
39+
RC builds follow the format `x.y.z-RC-α` where α starts at 1 and increments.
40+
41+
### RC Workflow
42+
1. **Start RC**: Use `new-rc` action to create first RC build (e.g., `1.24.0-RC-1`)
43+
2. **Increment RC**: Continue using `new-rc` to increment the RC number
44+
3. **Auto-finalize**: After RC-2, `new-rc` automatically switches to full build
45+
4. **Manual finalize**: Use `finalize-rc` to manually drop RC suffix when ready
46+
47+
### RC Options in GitHub Actions
48+
- From Action Menu on github select action "Automated Release Actions"
49+
- Run Workflow
50+
- Select appropriate Branch
51+
- Action : `new-rc` or `finalize-rc`
52+
- Version: Provide the downstream minor version e.g "1.24"
53+
- Run Workflow
54+
55+
### RC Configuration (in release yaml)
56+
```yaml
57+
version: 1.24
58+
patch-version: 1.24.0-RC-1
59+
is-rc: true
60+
rc-number: 1
61+
```
62+
63+
### Important Notes
64+
- **During RC mode**: Upstream component versions automatically update when higher versions are released upstream
65+
- **After x.y.0 release**: Minor versions of upstream components do NOT auto-update
66+
3767
---
3868
## Refreshing Upstream Branches
3969
Upstream branches for next release are syned daily. if there is any update in upstream branch name the you will see a
@@ -55,7 +85,7 @@ versions for unreleased versions which you can do by this workflow.
5585
After PR is merged then new workflow will be triggered which will generate release configuration in all the Repos.
5686
5787
---
58-
88+
5989
6090
TODO for automation:
6191
(waveywaves)

0 commit comments

Comments
 (0)