-
Notifications
You must be signed in to change notification settings - Fork 519
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ci(release): automate release steps for the minor (#12233)
* ci(release): automate release steps * refactor a bit * report non supported versions * rename make goals and add some docs * cosmetic changes in the slack messages * support slack threads * fix * chore * chore * refactor: patch * refactor: minor * fix * use slack channel env * use output slack-thread * avoid concurrency * support full checkout and validaitons * notify what's the error if any failure * fix * chore * initial * exclude * chore * enable mergify and yq * update mergify if required * Revert "update mergify if required" This reverts commit 299e6d8. * update mergify if required * use RELEASE_BRANCH add create make goal * fix * support prs * run only if things were created correctly * fix * force branch * refactor * refactor * github warn * enable * set makefile and use variable * fix * fix * create head * update changelog * replace compare * modify * partial * fix * fix * refactor * docs * test * action: grant permissions * notify if failrues * use base branch * fix hardcoded value * remove leaving directory * cannot user github bot to create PRs * chore * enable * chore * fix * production * use release version * support for #12251 --------- Co-authored-by: Silvia Mitter <[email protected]> Co-authored-by: Carson Ip <[email protected]>
- Loading branch information
1 parent
1741e03
commit 7f98e30
Showing
6 changed files
with
540 additions
and
4 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
--- | ||
name: prepare-release | ||
description: Common tasks for preparing minor and patch releases | ||
|
||
inputs: | ||
type: | ||
description: 'Release type (minor or patch)' | ||
required: true | ||
version: | ||
description: 'The version' | ||
required: true | ||
vault-url: | ||
description: 'Vault URL' | ||
required: true | ||
vault-role-id: | ||
description: 'Vault role ID' | ||
required: true | ||
vault-secret-id: | ||
description: 'Vault secret ID' | ||
required: true | ||
|
||
outputs: | ||
release-branch: | ||
description: "Release branch (relevant for minor releases)" | ||
value: ${{ steps.generate.outputs.release-branch }} | ||
release-version: | ||
description: "Release version" | ||
value: ${{ steps.generate.outputs.release-version }} | ||
slack-thread: | ||
description: "Slack thread id" | ||
value: ${{ steps.slack-thread.outputs.threadTimestamp }} | ||
|
||
runs: | ||
using: "composite" | ||
steps: | ||
- name: Send slack message when started | ||
id: slack-thread | ||
uses: elastic/apm-pipeline-library/.github/actions/slack-message@current | ||
with: | ||
url: ${{ inputs.vault-url }} | ||
roleId: ${{ inputs.vault-role-id }} | ||
secretId: ${{ inputs.vault-secret-id }} | ||
channel: ${{ env.SLACK_CHANNEL }} | ||
message: ":wave: This is the thread for the ${{ inputs.type }} release `${{ github.repository }}@${{ env.VERSION }}`. (<${{ env.JOB_URL }}|workflow run>)" | ||
env: | ||
VERSION: ${{ inputs.version }} | ||
JOB_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} | ||
|
||
- id: generate | ||
run: |- | ||
echo "release-branch=${VERSION%.*}" >> "${GITHUB_OUTPUT}" | ||
echo "release-version=${VERSION}" >> "${GITHUB_OUTPUT}" | ||
env: | ||
VERSION: ${{ inputs.version }} | ||
shell: 'bash' | ||
|
||
- name: validate version format (minor only) | ||
if: ${{ inputs.type == 'minor' && ! endsWith(inputs.version, '0') }} | ||
run: |- | ||
FAILURE_MESSAGE='version is not a minor one but a patch (only support for <major>.<minor>.0)' | ||
echo "FAILURE_MESSAGE=${FAILURE_MESSAGE}" >> "$GITHUB_ENV" | ||
echo "::error::${FAILURE_MESSAGE}" ; exit 1 | ||
shell: 'bash' | ||
|
||
- name: validate version format (patch only) | ||
if: ${{ inputs.type == 'patch' && endsWith(inputs.version, '0') }} | ||
run: |- | ||
FAILURE_MESSAGE='version is not a patch one but a minor (only support for <major>.<minor>.[1-9]+[0-9]*)' | ||
echo "FAILURE_MESSAGE=${FAILURE_MESSAGE}" >> "$GITHUB_ENV" | ||
echo "::error::${FAILURE_MESSAGE}" ; exit 1 | ||
shell: 'bash' | ||
|
||
- name: validate if branch already exists (minor only) | ||
if: ${{ inputs.type == 'minor' }} | ||
run: |- | ||
if git ls-remote --exit-code --heads https://github.com/${{ github.repository }}.git "$BRANCH" > /dev/null ; then | ||
FAILURE_MESSAGE='Branch already exists. This is not a minor release.' | ||
echo "FAILURE_MESSAGE=${FAILURE_MESSAGE}" >> "$GITHUB_ENV" | ||
echo "::error::${FAILURE_MESSAGE}" ; exit 1 | ||
fi | ||
shell: 'bash' | ||
env: | ||
BRANCH: ${{ steps.generate.outputs.release-branch }} | ||
|
||
- name: validate if tag already exists | ||
run: |- | ||
if git ls-remote --exit-code https://github.com/${{ github.repository }}.git "$TAG" > /dev/null ; then | ||
FAILURE_MESSAGE='Tag already exists.' | ||
echo "FAILURE_MESSAGE=${FAILURE_MESSAGE}" >> "$GITHUB_ENV" | ||
echo "::error::${FAILURE_MESSAGE}" ; exit 1 | ||
fi | ||
shell: 'bash' | ||
env: | ||
TAG: 'refs/tags/v${{ steps.generate.outputs.release-version }}' | ||
|
||
- uses: elastic/apm-pipeline-library/.github/actions/slack-message@current | ||
if: failure() | ||
with: | ||
url: ${{ inputs.vault-url }} | ||
roleId: ${{ inputs.vault-role-id }} | ||
secretId: ${{ inputs.vault-secret-id }} | ||
channel: ${{ env.SLACK_CHANNEL }} | ||
threadTimestamp: ${{ steps.slack-thread.outputs.threadTimestamp || '' }} | ||
message: |- | ||
:fire: Something went wrong with the ${{ inputs.type }} release preparation. It failed with the below error message: | ||
`${{ env.FAILURE_MESSAGE }}`. | ||
See <${{ env.JOB_URL }}|logs>. | ||
env: | ||
JOB_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} |
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
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
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
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
Oops, something went wrong.