Create release #31
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "Create release" | |
on: | |
workflow_dispatch: | |
inputs: | |
version: | |
description: 'Release version ( e.g. "2.1.3" )' | |
default: "" | |
required: true | |
jobs: | |
verify-release-status: | |
name: Validate release | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Verify version follows x.y.z pattern | |
run: ./.github/scripts/check_version_format.sh ${{ github.event.inputs.version }} | |
- name: Verify that the current branch's name starts with 'release-' | |
run: ./.github/scripts/verify_is_on_release_branch.sh | |
- name: Validate content of sec-scanners-config.yaml | |
run: ./.github/scripts/check_sec-scanners-config.sh ${{ github.event.inputs.version }} | |
- name: Verify that the tag ${{ github.event.inputs.version }} does not exist | |
run: ./.github/scripts/check_tag_does_not_exist.sh ${{ github.event.inputs.version }} | |
create-draft: | |
name: Create a draft release | |
needs: verify-release-status | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
token: ${{ secrets.GIT_BOT_TOKEN }} # creating git tag using bot token because GITHUB_TOKEN would not trigger build workflow (https://docs.github.com/en/actions/using-workflows/triggering-a-workflow#triggering-a-workflow-from-a-workflow). | |
- name: Create changelog | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: ./.github/scripts/create_changelog.sh ${{ github.event.inputs.version }} # changelog will be stored at the CHANGELOG.md | |
- name: Create draft release | |
id: create-draft | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
RELEASE_ID=$(./.github/scripts/create_draft_release.sh ${{ github.event.inputs.version }}) # this will use the CHANGELOG.md from the step 'Create changelog' | |
echo "release_id=$RELEASE_ID" >> $GITHUB_OUTPUT | |
- name: Add lightweight tag to trigger release build job | |
env: | |
GITHUB_TOKEN: ${{ secrets.GIT_BOT_TOKEN }} # creating git tag using bot token because GITHUB_TOKEN would not trigger build workflow (https://docs.github.com/en/actions/using-workflows/triggering-a-workflow#triggering-a-workflow-from-a-workflow). | |
run: | | |
git tag ${{ github.event.inputs.version }} | |
git push origin ${{ github.event.inputs.version }} | |
- name: Create and upload nats-manager.yaml and nats-default-cr.yaml | |
env: | |
KUSTOMIZE_VERSION: "v4.5.6" | |
run: | | |
./.github/scripts/render_and_upload_manifests.sh ${{ github.event.inputs.version }} nats ${{ secrets.GITHUB_TOKEN }} | |
outputs: | |
release_id: ${{ steps.create-draft.outputs.release_id }} | |
wait-for-build-job: | |
name: Wait for build job | |
needs: [ create-draft ] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout eventing-tools | |
uses: actions/checkout@v4 | |
with: | |
repository: 'kyma-project/eventing-tools' | |
path: 'kyma-project/eventing-tools' | |
ref: main | |
sparse-checkout: 'scripts/wait-for-commit-check' | |
- name: Setup python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
cache: 'pip' | |
- name: Install requirements | |
run: | | |
pip install -r $GITHUB_WORKSPACE/kyma-project/eventing-tools/scripts/wait-for-commit-check/requirements.txt | |
- name: wait for build | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
REPOSITORY_FULL_NAME: ${{ github.repository_owner }}/nats-manager | |
GIT_REF: ${{ github.event.inputs.version }} | |
# The re-usable image-builder workflow from neighbors appends the "Build image" suffix to the check run name. | |
GIT_CHECK_RUN_NAME: "build-${{ github.event.inputs.version }} / Build image" | |
INTERVAL: 60 | |
TIMEOUT: 900 | |
run: | | |
python $GITHUB_WORKSPACE/kyma-project/eventing-tools/scripts/wait-for-commit-check/run.py | |
publish-release: | |
name: Publish release | |
needs: [verify-release-status, create-draft, wait-for-build-job] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Publish release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: ./.github/scripts/publish_release.sh ${{ needs.create-draft.outputs.release_id }} |