From c42467fe32b02246d0ae445ef947ebb5f82d45f0 Mon Sep 17 00:00:00 2001 From: SylvainJuge <763082+SylvainJuge@users.noreply.github.com> Date: Wed, 5 Jun 2024 14:33:18 +0200 Subject: [PATCH] [release] improve release steps naming (#279) * rename step 1 * add PR title and body arguments * rename step 3 * clarify project version check * update readme about the release process --- .github/workflows/README.md | 14 +++++++++++--- .github/workflows/pre-post-release.yml | 12 ++++++++++-- .../{pre-release.yml => release-step-1.yml} | 4 +++- .../workflows/{release.yml => release-step-3.yml} | 6 ++++-- 4 files changed, 28 insertions(+), 8 deletions(-) rename .github/workflows/{pre-release.yml => release-step-1.yml} (75%) rename .github/workflows/{release.yml => release-step-3.yml} (97%) diff --git a/.github/workflows/README.md b/.github/workflows/README.md index ebe013ba..8fcb905e 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -28,12 +28,20 @@ Whenever a merge to the main or branches, the whole workflow will be compiled an ### Release process -This process has been fully automated, and it gets triggered manually when the [release](https://github.com/elastic/elastic-otel-java/actions/workflows/release.yml) workflow is being run. It runs a Buildkite pipeline in charge of generating and publishing the artifacts; for further details, please go to [the Buildkite folder](../../.buildkite/README.md). +To release a new version of elastic-otel-java, you must use two GitHub Workflows. + +- Trigger the `release-step-1` GH workflow + - parameters: version to release + - will open `release-step-2` PR +- Review and merge the `release-step-2` PR to `main` (version bump to release) +- Trigger the `release-step-3` GH workflow + - parameters: version to release and the `main` branch (or merge commit/ref of `release-step-2` PR merge). + - will generate and publish release artifact through [buildkite](../../.buildkite/release.yml). + - will open `release-step-4` PR +- Review and merge the `release-step-4` PR to `main` (version bump from release to next snapshot version) The tag release follows the naming convention: `v...`, where ``, `` and ``. -The release automation raises a Pull Request with the next version. - ### OpenTelemetry A GitHub workflow is responsible for populating the workflows regarding jobs and steps. Those details can be seen [here](https://ela.st/oblt-ci-cd-stats) (**NOTE**: only available for Elasticians). diff --git a/.github/workflows/pre-post-release.yml b/.github/workflows/pre-post-release.yml index 764bfd47..dfe43fa7 100644 --- a/.github/workflows/pre-post-release.yml +++ b/.github/workflows/pre-post-release.yml @@ -18,6 +18,14 @@ on: description: 'Pre or post release phase' type: string # valid values are 'pre' or 'post' required: true + pr_title: + description: 'pull-request title' + type: string + required: true + pr_body: + description: : 'pull-request body' + type: string + required: true env: RELEASE_VERSION: ${{ inputs.version }} @@ -90,8 +98,8 @@ jobs: git add --all git commit -m "${{ inputs.phase }} release: elastic-otel-java v${{ env.RELEASE_VERSION }}" git push origin ${{ env.BRANCH_NAME }} - + - name: Create the ${{ inputs.phase }} release PR - run: gh pr create --title="${{ inputs.phase }} release v${{ env.RELEASE_VERSION }}" --base main --head ${{ env.BRANCH_NAME }} -b "${{ inputs.phase }} release v${{ env.RELEASE_VERSION }}" + run: gh pr create --title="${{ inputs.pr_title }}" --base main --head ${{ env.BRANCH_NAME }} -b "${{ inputs.pr_body }}" env: GH_TOKEN: ${{ env.GITHUB_TOKEN }} diff --git a/.github/workflows/pre-release.yml b/.github/workflows/release-step-1.yml similarity index 75% rename from .github/workflows/pre-release.yml rename to .github/workflows/release-step-1.yml index 4d97c1ff..05d444a5 100644 --- a/.github/workflows/pre-release.yml +++ b/.github/workflows/release-step-1.yml @@ -1,6 +1,6 @@ --- -name: Pre release +name: release-step-1 on: workflow_dispatch: @@ -29,4 +29,6 @@ jobs: ref: ${{ inputs.ref }} version: ${{ inputs.version }} phase: 'pre' + pr_title: "[release] release-step-2 ${{ inputs.version }}" + pr_body: "Step 2 of the release process for version ${{ inputs.version }}: review & merge, then execute 'release-step-3' GH workflow" secrets: inherit diff --git a/.github/workflows/release.yml b/.github/workflows/release-step-3.yml similarity index 97% rename from .github/workflows/release.yml rename to .github/workflows/release-step-3.yml index 4b75b590..6fb5e28f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release-step-3.yml @@ -1,6 +1,6 @@ --- -name: Release +name: release-step-3 on: workflow_dispatch: @@ -52,7 +52,7 @@ jobs: uses: ./.github/workflows/validate-tag with: tag: ${{ env.RELEASE_VERSION_TAG }} - - name: Validate tag match current version + - name: Validate tag match current gradle project version run: | if [ "$(./gradlew -q currentVersion)" != "${{ env.RELEASE_VERSION }}" ]; then echo "Tag should match version set in 'version.properties'" @@ -210,6 +210,8 @@ jobs: ref: ${{ inputs.ref }} version: ${{ inputs.version }} phase: 'post' + pr_title: "[release] release-step-4 ${{ inputs.version }}" + pr_body: "Step 4 of the release process for version ${{ inputs.version }}: review & merge" secrets: inherit create-github-release: