Skip to content

chore: changelog for v1.3.0-rc.2 (#358) #188

chore: changelog for v1.3.0-rc.2 (#358)

chore: changelog for v1.3.0-rc.2 (#358) #188

Workflow file for this run

# This job is not inteneded to be run manually. Instead it assumes that proper
# release commit is pushed to the repository. It will then create a new release
# on GitHub.
name: release-bot
on:
push:
branches:
- 'main'
- 'release/*'
jobs:
look_for_release:
outputs:
release_found: ${{ steps.commit_parser.outputs.release_found }}
release_type: ${{ steps.commit_parser.outputs.release_type }}
release_latest: ${{ steps.commit_parser.outputs.release_latest }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: search for release command in commit message
id: commit_parser
uses: actions/github-script@v7
with:
script: |
const commitMessage = context.payload.head_commit.message
if (commitMessage.includes('chore(release): [bot]')) {
core.setOutput('release_found', 'true')
core.setOutput('release_type', 'release')
if (commitMessage.includes('[latest]')) {
core.setOutput('release_latest', 'true')
}
} else if (commitMessage.includes('chore(prerelease): [bot]')) {
core.setOutput('release_found', 'true')
core.setOutput('release_type', 'prerelease')
if (commitMessage.includes('[latest]')) {
core.setOutput('release_latest', 'true')
}
} else {
core.setOutput('release_found', 'false')
}
semver:
needs:
- look_for_release
if: ${{ needs.look_for_release.outputs.release_found == 'true' }}
outputs:
version: ${{ steps.semver_parser.outputs.fullversion }}
major: ${{ steps.semver_parser.outputs.major }}
minor: ${{ steps.semver_parser.outputs.minor }}
patch: ${{ steps.semver_parser.outputs.patch }}
prerelease: ${{ steps.semver_parser.outputs.prerelease }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Read version from VERSION file
run: |
VERSION=$(cat VERSION)
echo "VERSION=$VERSION" >> $GITHUB_ENV
- name: Parse semver string
id: semver_parser
uses: booxmedialtd/ws-action-parse-semver@v1.4.7
with:
input_string: ${{ env.VERSION }}
version_extractor_regex: '(.*)$'
- name: check if tag already exists
uses: mukunku/tag-exists-action@v1.6.0
id: tag_exists
with:
tag: ${{ steps.commit_parser.outputs.release_version }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: fail if tag already exists
if: ${{ steps.tag_exists.outputs.exists == 'true' }}
run: exit 1
publish-release:
needs:
- look_for_release
- semver
if: ${{ needs.look_for_release.outputs.release_found == 'true' }}
runs-on: ubuntu-latest
steps:
- uses: ncipollo/release-action@v1
with:
body: |
#### Download Kong Gateway Operator ${{ needs.semver.outputs.version }}:
- [Docker Image](https://hub.docker.com/r/${{ vars.DOCKERHUB_IMAGE_NAME }}/tags?name=${{ needs.semver.outputs.version }})
- [Get started](https://github.com/Kong/gateway-operator/blob/main/README.md)
#### Links:
- [Changelog](https://github.com/Kong/gateway-operator/blob/main/CHANGELOG.md#v${{ needs.semver.outputs.major }}${{ needs.semver.outputs.minor }}${{ needs.semver.outputs.patch }}${{ needs.semver.outputs.prerelease }})
token: ${{ secrets.GITHUB_TOKEN }}
tag: v${{ needs.semver.outputs.version }}
commit: ${{ github.sha }}
prerelease: ${{ needs.look_for_release.outputs.release_type == 'prerelease' }}
create-release-branch:
needs:
- look_for_release
- publish-release
- semver
# NOTE: only create a release branch if the release is not a patch release
# or a prerelease.
# For patch releases, the release branch should already be in place.
# For prereleases, we do not want to create a release branch.
if: ${{ needs.look_for_release.outputs.release_found == 'true' && needs.semver.outputs.patch == '0' && needs.semver.outputs.prerelease == '' }}
runs-on: ubuntu-latest
steps:
- uses: peterjgrainger/action-create-branch@v2.2.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
# NOTE: using the full ref name because
# https://github.com/peterjgrainger/action-create-branch?tab=readme-ov-file#branch
branch: 'refs/heads/release/v${{ needs.semver.outputs.major }}.{{ needs.semver.outputs.minor }}.x'
sha: '${{ github.sha }}'
create-cherry-pick-branch-to-main:
needs:
- look_for_release
- publish-release
- semver
if: ${{ needs.look_for_release.outputs.release_found == 'true' && needs.semver.outputs.patch != '0' && needs.semver.outputs.prerelease == '' && needs.look_for_release.outputs.release_latest == 'true' && github.ref_name != 'main' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: carloscastrojumo/github-cherry-pick-action@v1.0.1
with:
branch: main
title: '[cherry-pick] ${{ needs.semver.outputs.version }} - ${{ github.sha }}'
body: 'Cherry picking ${{ needs.semver.outputs.version }} commit (${{ github.sha }}) onto main'