Skip to content

Commit

Permalink
Adjust release flows to use those with the new branch model (parityte…
Browse files Browse the repository at this point in the history
…ch#5015)

This PR contains adjustments of the node release pipelines so that it
will be possible to use those to trigger release actions based on the
`stable` branch.

Previously the whole pipeline of the flows from [creation of the
`rc-tag`](https://github.com/paritytech/polkadot-sdk/blob/master/.github/workflows/release-10_rc-automation.yml)
(v1.15.0-rc1, v1.15.0-rc2, etc) till [the release draft
creation](https://github.com/paritytech/polkadot-sdk/blob/master/.github/workflows/release-30_publish_release_draft.yml)
was triggered on push to the node release branch. As we had the node
release branch and the crates release branch separately, it worked fine.

From now on, as we are switching to the one branch approach, for the
first iteration I would like to keep things simple to see how the new
release process will work with both parts (crates and node) made from
one branch.

Changes made: 

- The first step in the pipeline (rc-tag creation) will be triggered
manually instead of the push to the branch
- The tag version will be set manually from the input instead of to be
taken from the branch name
- Docker image will be additionally tagged as `stable`



Closes: https://github.com/paritytech/release-engineering/issues/214
  • Loading branch information
EgorPopelyaev authored and TarekkMA committed Aug 2, 2024
1 parent d14ca6d commit ac4f832
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 62 deletions.
13 changes: 13 additions & 0 deletions .github/scripts/common/lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -444,3 +444,16 @@ get_latest_release_tag() {
latest_release_tag=$(curl -s -H "$TOKEN" $api_base/paritytech/polkadot-sdk/releases/latest | jq -r '.tag_name')
printf $latest_release_tag
}

function get_polkadot_node_version_from_code() {
# list all the files with node version
git grep -e "\(NODE_VERSION[^=]*= \)\".*\"" |
# fetch only the one we need
grep "primitives/src/lib.rs:" |
# Print only the version
awk '{ print $7 }' |
# Remove the quotes
sed 's/"//g' |
# Remove the semicolon
sed 's/;//g'
}
78 changes: 21 additions & 57 deletions .github/workflows/release-10_rc-automation.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
name: Release - RC automation
on:
push:
branches:
# Catches release-polkadot-v1.2.3, release-v1.2.3-rc1, etc
- release-v[0-9]+.[0-9]+.[0-9]+*
- release-cumulus-v[0-9]+*
- release-polkadot-v[0-9]+*
# TODO: Activate it and delete old branches patterns, when the release process from stable is setteled
#push:
# branches:
# # Catches release-polkadot-v1.2.3, release-v1.2.3-rc1, etc
# - release-v[0-9]+.[0-9]+.[0-9]+*
# - release-cumulus-v[0-9]+*
# - release-polkadot-v[0-9]+*
# - stable

workflow_dispatch:
inputs:
version:
description: Current release/rc version in format vX.X.X

jobs:
tag_rc:
Expand All @@ -25,28 +30,19 @@ jobs:
with:
fetch-depth: 0

- name: Get release product
id: get_rel_product
shell: bash
run: |
current_branch=$(git branch --show-current)
echo "Current branch: $current_branch"
if [[ "$current_branch" =~ "release-polkadot" ]]; then
echo "product=polkadot" >> $GITHUB_OUTPUT
elif [[ "$current_branch" =~ "release-cumulus" ]]; then
echo "product=polkadot-parachain" >> $GITHUB_OUTPUT
fi
- name: Compute next rc tag for polkadot
if: ${{ steps.get_rel_product.outputs.product == 'polkadot' }}
id: compute_tag_polkadot
- name: Compute next rc tag
# if: ${{ steps.get_rel_product.outputs.product == 'polkadot' }}
id: compute_tag
shell: bash
run: |
. ./.github/scripts/common/lib.sh
# Get last rc tag if exists, else set it to {version}-rc1
version=$(get_version_from_ghref ${GITHUB_REF})
if [[ -z "${{ inputs.version }}" ]]; then
version=v$(get_polkadot_node_version_from_code)
else
version=$(filter_version_from_input ${{ inputs.version }})
fi
echo "$version"
echo "version=$version" >> $GITHUB_OUTPUT
Expand All @@ -61,46 +57,14 @@ jobs:
echo "first_rc=true" >> $GITHUB_OUTPUT
fi
- name: Compute next rc tag for polkadot-parachain
if: ${{ steps.get_rel_product.outputs.product == 'polkadot-parachain' }}
id: compute_tag_cumulus
shell: bash
run: |
. ./.github/scripts/common/lib.sh
# Get last rc tag if exists, else set it to polkadot-parachains-{version}-rc1
version=$(get_version_from_ghref ${GITHUB_REF})
echo "$version"
echo "version=$version" >> $GITHUB_OUTPUT
last_rc=$(get_latest_rc_tag $version polkadot-parachain)
if [ -n "$last_rc" ]; then
suffix=$(increment_rc_tag $last_rc)
echo "new_tag=polkadot-parachains-$version-rc$suffix" >> $GITHUB_OUTPUT
echo "first_rc=false" >> $GITHUB_OUTPUT
else
echo "new_tag=polkadot-parachain-$version-rc1" >> $GITHUB_OUTPUT
echo "first_rc=true" >> $GITHUB_OUTPUT
fi
- name: Apply new tag
uses: tvdias/github-tagger@ed7350546e3e503b5e942dffd65bc8751a95e49d # v0.0.2
with:
# We can't use the normal GITHUB_TOKEN for the following reason:
# https://docs.github.com/en/actions/reference/events-that-trigger-workflows#triggering-new-workflows-using-a-personal-access-token
# RELEASE_BRANCH_TOKEN requires public_repo OAuth scope
repo-token: "${{ secrets.RELEASE_BRANCH_TOKEN }}"
tag: ${{ steps.compute_tag_polkadot.outputs.new_tag || steps.compute_tag_cumulus.outputs.new_tag }}

# - id: create-issue
# uses: JasonEtco/create-an-issue@e27dddc79c92bc6e4562f268fffa5ed752639abd # v2.9.1
# # Only create the issue if it's the first release candidate
# if: steps.compute_tag.outputs.first_rc == 'true'
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# VERSION: ${{ steps.compute_tag.outputs.version }}
# with:
# filename: .github/ISSUE_TEMPLATE/release.md
tag: ${{ steps.compute_tag.outputs.new_tag }}

- name: Send Matrix message to ${{ matrix.channel.name }}
uses: s3krit/matrix-message-action@70ad3fb812ee0e45ff8999d6af11cafad11a6ecf # v0.0.3
Expand All @@ -110,4 +74,4 @@ jobs:
access_token: ${{ secrets.RELEASENOTES_MATRIX_V2_ACCESS_TOKEN }}
server: m.parity.io
message: |
Release process for polkadot ${{ steps.compute_tag_polkadot.outputs.new_tag || steps.compute_tag_cumulus.outputs.new_tag }} has been started.<br/>
Release process for polkadot ${{ steps.compute_tag.outputs.new_tag }} has been started.<br/>
2 changes: 2 additions & 0 deletions .github/workflows/release-50_publish-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ jobs:
release=$( echo $VERSION | cut -f1 -d- )
echo "tag=latest" >> $GITHUB_OUTPUT
echo "release=${release}" >> $GITHUB_OUTPUT
echo "stable=stable" >> $GITHUB_OUTPUT
- name: Build Injected Container image for polkadot rc or chain-spec-builder
if: ${{ env.BINARY == 'polkadot' || env.BINARY == 'chain-spec-builder' }}
Expand Down Expand Up @@ -294,6 +295,7 @@ jobs:
# TODO: The owner should be used below but buildx does not resolve the VARs
# TODO: It would be good to get rid of this GHA that we don't really need.
tags: |
parity/polkadot:stable
parity/polkadot:latest
parity/polkadot:${{ needs.fetch-latest-debian-package-version.outputs.polkadot_container_tag }}
build-args: |
Expand Down
5 changes: 0 additions & 5 deletions .github/workflows/release-srtool.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,6 @@ env:
TOML_CLI_VERSION: 0.2.4

on:
push:
branches:
- release-v[0-9]+.[0-9]+.[0-9]+*
- release-cumulus-v[0-9]+*
- release-polkadot-v[0-9]+*
workflow_call:
inputs:
excluded_runtimes:
Expand Down

0 comments on commit ac4f832

Please sign in to comment.