diff --git a/.github/update-release-branch.py b/.github/update-release-branch.py index ff65abe84d..b17cafc7a7 100644 --- a/.github/update-release-branch.py +++ b/.github/update-release-branch.py @@ -255,10 +255,13 @@ def main(): print(f'No commits to merge from {source_branch} to {target_branch}.') return + # define distinct prefix in order to support specific pr checks on backports + branch_prefix = 'update' if is_primary_release else 'backport' + # The branch name is based off of the name of branch being merged into # and the SHA of the branch being merged from. Thus if the branch already # exists we can assume we don't need to recreate it. - new_branch_name = f'update-v{version}-{source_branch_short_sha}' + new_branch_name = f'{branch_prefix}-v{version}-{source_branch_short_sha}' print(f'Branch name is {new_branch_name}.') # Check if the branch already exists. If so we can abort as this script diff --git a/.github/workflows/pr-checks.yml b/.github/workflows/pr-checks.yml index ab2c6a0c63..2cbad44a73 100644 --- a/.github/workflows/pr-checks.yml +++ b/.github/workflows/pr-checks.yml @@ -114,3 +114,44 @@ jobs: # we won't be able to find them on Windows. npm config set script-shell bash npm test + + check-node-version: + if: ${{ github.event.pull_request }} + name: Check node version consistency + runs-on: ubuntu-latest + timeout-minutes: 45 + env: + BASE_REF: ${{ github.base_ref }} + + steps: + - uses: actions/checkout@v4 + - id: head-version + name: check HEAD node version + run: | + NODE_VERSION=$(find . -name "action.yml" -exec yq -e '.runs.using' {} \; | grep node | sort | uniq) + echo "NODE_VERSION: ${NODE_VERSION}" + if [[ $(echo "$NODE_VERSION" | wc -l) -gt 1 ]]; then + echo "Error: More than one node version used in actions." + exit 1 + fi + echo "node_version=${NODE_VERSION}" >> $GITHUB_OUTPUT + + - id: checkout-base + name: check out base ref for backport check + if: ${{ startsWith(github.head_ref, 'backport-') }} + uses: actions/checkout@v4 + with: + ref: ${{ env.BASE_REF }} + + - name: compare with node version on base ref for backport check + if: steps.checkout-base.outcome == 'success' + env: + HEAD_VERSION: ${{ steps.head-version.outputs.node_version }} + run: | + BASE_VERSION=$(find . -name "action.yml" -exec yq -e '.runs.using' {} \; | grep node | sort | uniq) + echo "HEAD_VERSION: ${HEAD_VERSION}" + echo "BASE_VERSION: ${BASE_VERSION}" + if [[ "$BASE_VERSION" != "$HEAD_VERSION" ]]; then + echo "Error: Cannot change node version in a backport PR." + exit 1 + fi