Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release process enhancement #1185

Open
wants to merge 39 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
dfd3b7e
UPDATE: Release Document
Boomatang Jan 22, 2025
8357a84
UPDATE: Release Process
Boomatang Feb 5, 2025
985d410
UPDATE: Release doc
Boomatang Feb 18, 2025
5e0750b
UPDATE: RELEASE SCRIPT
Boomatang Feb 4, 2025
e49d63d
UPDATE: Release.toml format
Boomatang Feb 5, 2025
6c739a2
UPDATE: release workflow
Boomatang Feb 5, 2025
1beee7a
ADD: verify-prepare-release
Boomatang Feb 5, 2025
b0a573a
UPDATE: Format release.toml
Boomatang Feb 5, 2025
2f74839
[ci] Automated release operator workflow
didierofrivia Feb 20, 2025
e35af00
[docs] Updating RELEASE.md including automated release
didierofrivia Feb 27, 2025
f15705f
[ci] Setting upstream origin for new release base branch
didierofrivia Mar 6, 2025
87afd8f
[ci] Changed GH token
didierofrivia Mar 6, 2025
05147ad
UPDATE: GitHub workflows
Boomatang Mar 3, 2025
7f7e8a5
UPDATE: Latest tag
Boomatang Mar 5, 2025
fc73c9b
[refactor] DRYing release script
didierofrivia Mar 5, 2025
24f3786
[script] Checking if operator tag is already released
didierofrivia Mar 5, 2025
9c7a3c8
[script] `post-validation` phase removed from main execution
didierofrivia Mar 6, 2025
04a4a4a
[refactor] Renaming verify tag script
didierofrivia Mar 7, 2025
6d806cd
[refactor] Using authenticated request and json verification
didierofrivia Mar 7, 2025
e6a11f6
[ci] Verifying if dependencies have been already released
didierofrivia Mar 7, 2025
2ae0a67
[ci] Calling `make prepare-release` with a GITHUB_TOKEN
didierofrivia Mar 7, 2025
facf451
[docs] Updated release docs mentioning rate limiting and GITHUB_TOKEN
didierofrivia Mar 7, 2025
44c15f3
[script] Conditionally adding auth header
didierofrivia Mar 10, 2025
763f29b
[script] Adding semver validation and `0.0.0` check
didierofrivia Mar 10, 2025
9241456
[ci] Fix create release by creating tag before
didierofrivia Mar 12, 2025
ca5ffa6
FIX: Workflow steps
Boomatang Mar 13, 2025
d985f86
FIX: commitish-taraget
Boomatang Mar 14, 2025
423518a
[ci] Adding workflow_dispatch event trigger
didierofrivia Mar 17, 2025
acdce88
[ci] Checkout code with kuadrant PAT
didierofrivia Mar 17, 2025
140b5ce
[make] Restore original verification targets
didierofrivia Mar 10, 2025
9ce6e67
[ci] Conditionally triggering verification of release manifests
didierofrivia Mar 10, 2025
84f35fc
Makefile: Release section
eguzki Mar 19, 2025
ad59558
Merge pull request #1216 from Kuadrant/improve-makefile
eguzki Mar 19, 2025
04e933f
UPDATE: Release Doc
Boomatang Mar 20, 2025
e44d899
prepare-release: make default-channel optional
eguzki Mar 19, 2025
9067fca
release: post-validation of the OLM default channel
eguzki Mar 20, 2025
f514fec
Merge pull request #1217 from Kuadrant/make-default-channel-optional
eguzki Mar 20, 2025
2c633ac
workflows/build-images-for-tag-release.yaml: fix operator image build
eguzki Mar 19, 2025
521e80e
Merge pull request #1223 from Kuadrant/fix-build-images-workflow
eguzki Mar 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
138 changes: 138 additions & 0 deletions .github/workflows/automated-release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
name: Automated Release Operator

on:
workflow_dispatch:
inputs:
gitRef:
description: Commit SHA, tag or branch name (usually main branch)
required: true
default: "main"
type: string
kuadrantOperatorVersion:
description: Kuadrant Operator version (semver)
default: 0.0.0
type: string
authorinoOperatorVersion:
description: Authorino Operator bundle version (semver)
default: 0.0.0
type: string
limitadorOperatorVersion:
description: Limitador Operator bundle version (semver)
default: 0.0.0
type: string
dnsOperatorVersion:
description: DNS Operator bundle version (semver)
default: 0.0.0
type: string
wasmShimVersion:
description: WASM Shim version (semver)
default: 0.0.0
type: string
consolePluginVersion:
description: ConsolePlugin version (semver)
default: 0.0.0
type: string
olmChannel:
description: OLM channel
required: false
type: string
default: "stable"

jobs:
auto-release:
name: Release operator
runs-on: ubuntu-latest
steps:
- name: Set up Go 1.22.x
uses: actions/setup-go@v4
with:
go-version: 1.22.x
id: go
- name: Checkout code at git ref
uses: actions/checkout@v4
with:
ref: ${{ github.event.inputs.gitRef }}
token: ${{ secrets.KUADRANT_WORKFLOWS_PAT }}

- name: Install gettext-base
run: |
sudo apt-get update
sudo apt-get install -y gettext-base

- name: Install yq tool
run: |
make yq

- name: Create release branch(es)
id: create-release-branch
shell: bash
run: |
base_branch=release-v$(echo "${{ github.event.inputs.kuadrantOperatorVersion }}" | sed 's/[+-].*//; s/\.[0-9]*$//')
echo BASE_BRANCH=$base_branch >> $GITHUB_ENV

if git ls-remote --exit-code --heads origin $base_branch ; then
echo "Base branch $base_branch already exists"
else
echo Creating branch "$base_branch"
git checkout -b "$base_branch"
git push --set-upstream origin "$base_branch"
fi

- name: Prepare release
id: prepare-release
run: |
echo "Updating release.yaml with desired versions"

VERSION=${{ github.event.inputs.kuadrantOperatorVersion }} \
AUTHORINO_OPERATOR_VERSION=${{ github.event.inputs.authorinoOperatorVersion }} \
DNS_OPERATOR_VERSION=${{ github.event.inputs.dnsOperatorVersion }} \
LIMITADOR_OPERATOR_VERSION=${{ github.event.inputs.limitadorOperatorVersion }} \
CONSOLE_PLUGIN_VERSION=${{ github.event.inputs.consolePluginVersion }} \
WASM_SHIM_VERSION=${{ github.event.inputs.wasmShimVersion }} \
OLM_CHANNEL=${{ github.event.inputs.olmChannel }} \
yq eval '(.kuadrant-operator.version = strenv(VERSION)) |
(.dependencies.authorino-operator = strenv(AUTHORINO_OPERATOR_VERSION)) |
(.dependencies.dns-operator = strenv(DNS_OPERATOR_VERSION)) |
(.dependencies.limitador-operator = strenv(LIMITADOR_OPERATOR_VERSION)) |
(.dependencies.console-plugin = strenv(CONSOLE_PLUGIN_VERSION)) |
(.dependencies.wasm-shim = strenv(WASM_SHIM_VERSION)) |
(.olm.default-channel = strenv(OLM_CHANNEL)) |
(.olm.channels[0] = strenv(OLM_CHANNEL))' --inplace ./release.yaml

echo "release.yaml file updated as follows:"

cat ./release.yaml

echo "Running prepare-release script"

GITHUB_TOKEN=${{ secrets.KUADRANT_WORKFLOWS_PAT }} make prepare-release

- name: Create Pull Request
id: cpr
if: ${{ !env.ACT }}
uses: peter-evans/create-pull-request@v7
with:
token: ${{ secrets.KUADRANT_DEV_PAT }}
commit-message: Prepare release ${{ github.event.inputs.kuadrantOperatorVersion }}
committer: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
author: ${{ github.actor }} <${{ github.actor_id }}+${{ github.actor }}@users.noreply.github.com>
signoff: true
base: ${{ env.BASE_BRANCH }}
branch: release-v${{ github.event.inputs.kuadrantOperatorVersion }}
delete-branch: true
title: '[Release] Kuadrant Operator v${{ github.event.inputs.kuadrantOperatorVersion }}'
body: |
The following PR for the release candidate of Kuadrant Operator version ${{ github.event.inputs.kuadrantOperatorVersion }} includes:
- Authorino Operator version ${{ github.event.inputs.authorinoOperatorVersion }}
- DNS Operator version ${{ github.event.inputs.dnsOperatorVersion }}
- Limitador Operator version ${{ github.event.inputs.limitadorOperatorVersion }}
- Console Plugin version ${{ github.event.inputs.consolePluginVersion }}
- WASM Shim version ${{ github.event.inputs.wasmShimVersion }}

Auto-generated by [create-pull-request][1]

[1]: https://github.com/peter-evans/create-pull-request
team-reviewers: |
Kuadrant/developers
Kuadrant/qe
draft: false
16 changes: 7 additions & 9 deletions .github/workflows/build-images-for-tag-release.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
name: Build and Publish Images For Tag Release

on:
workflow_dispatch:
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+-?**"
Expand All @@ -19,17 +20,14 @@ jobs:
steps:
- name: Check out code
uses: actions/checkout@v4

- name: Read release string version
id: release
- name: Set environment variables
id: set_env_variables
run: |
version=`make read-release-version`
echo version=$version >> $GITHUB_OUTPUT

bash ./utils/release/load_github_envvar.sh
- name: Print tags
run: echo "Git reference name = ${{ github.ref_name }}, release version = ${{ steps.release.outputs.version }}"
- name: Verify git reference name matches the release version
if: ${{ github.ref_name != steps.release.outputs.version }}
run: echo "Git reference name = ${{ github.ref_name }}, kuadrant operator tag = ${{ env.kuadrantOperatorTag }}"
- name: Verify git reference name matches the kuadrant operator tag
if: ${{ github.ref_name != env.kuadrantOperatorTag }}
run: exit 1

- name: Install qemu dependency
Expand Down
40 changes: 40 additions & 0 deletions .github/workflows/release-operator.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Release Operator

on:
pull_request:
types:
- closed
branches:
- 'release-v[0-9]+.[0-9]+'
workflow_dispatch: {}

jobs:
release-operator:
if: github.event.pull_request.merged == true
name: Release operator
runs-on: ubuntu-latest
steps:
- name: Checkout code at git ref
uses: actions/checkout@v4
with:
token: '${{ secrets.KUADRANT_DEV_PAT }}'
- name: Set environment variables
id: set_env_variables
run: |
bash ./utils/release/load_github_envvar.sh
- name: Create tag
id: create_tag
run: |
tag_name="${{ env.kuadrantOperatorTag }}"
git tag $tag_name
git push origin $tag_name
- name: Create release
id: create_release
uses: softprops/action-gh-release@v2
with:
name: ${{ env.kuadrantOperatorTag }}
tag_name: ${{ env.kuadrantOperatorTag }}
body: "${{ env.releaseBody }}"
generate_release_notes: true
target_commitish: ${{ env.releaseBranch }}
prerelease: ${{ env.prerelease }}
88 changes: 0 additions & 88 deletions .github/workflows/release.yaml

This file was deleted.

Loading
Loading