From 8c703e3ab83d249599ef4ac1bebfc58ae1789b67 Mon Sep 17 00:00:00 2001 From: Steve Boyd Date: Wed, 21 Feb 2024 10:02:18 +1300 Subject: [PATCH] ENH Handle CMS 6 branches --- action.yml | 64 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/action.yml b/action.yml index f446f17..0945cd3 100644 --- a/action.yml +++ b/action.yml @@ -21,8 +21,8 @@ runs: date_part=$(date +%H) fi if (( $date_part % 2 == 1 )); then - # latest major, next-minor e.g. "5" - type=latest,next-minor + # current major, next-minor e.g. "5" + type=current,next-minor else # previous major, next-patch e.g. "4.13" type=previous,next-patch @@ -34,13 +34,21 @@ runs: shell: bash env: TYPE: ${{ steps.gettype.outputs.type }} + GITHUB_REPOSITORY: ${{ github.repository }} run: | major_type=$(echo $TYPE | cut -d "," -f 1) minor_type=$(echo $TYPE | cut -d "," -f 2) + has_cms6_major="true" + if [[ $GITHUB_REPOSITORY == "silverstripe/recipe-plugin" ]] || \ + [[ $GITHUB_REPOSITORY == "silverstripe/vendor-plugin" ]] || \ + [[ $GITHUB_REPOSITORY == "silverstripe/silverstripe-graphql-devtools" ]] + then + has_cms6_major="false" + fi # https://docs.github.com/en/rest/branches/branches#list-branches RESP_CODE=$(curl -w %{http_code} -s -L -o __branches.json \ -H "Accept: application/vnd.github+json" \ - -H "Authorization: Bearer ${{ github.token }}"\ + -H "Authorization: Bearer ${{ github.token }}" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/repos/$GITHUB_REPOSITORY/branches \ ) @@ -53,32 +61,42 @@ runs: major_branches=$(jq -r '.[] | select(.name | test("^[0-9]+$")) | .name' __branches.json | sort -V -r) # "major_branches" needs to be quoted to preserve line-breaks major_branches_count=$(echo "$major_branches" | wc -l) - if [[ $major_type == "latest" ]]; then - if (( $major_branches_count < 1 )); then - echo "No major branches found" - exit 1 - fi - major_branch=$(echo "$major_branches" | head -1) - elif [[ $major_type == "previous" ]]; then - if (( $major_branches_count < 2 )); then - echo "Only one major branch found, not running CI on this cycle - will run on next cycle" - exit 0 - fi + if [[ $major_type == "current" ]]; then + if (( $major_branches_count < 1 )); then + echo "No major branches found" + exit 1 + fi + major_branch=$(echo "$major_branches" | head -1) + if (( $major_branches_count >= 2 )) && [[ $has_cms6_major == "true" ]]; then + # There are CMS 6 major dev branches though no CMS 6 tagged releases yet + # Assume that the 2nd major branch is the current major branch major_branch=$(echo "$major_branches" | head -2 | tail -1) + fi + elif [[ $major_type == "previous" ]]; then + if (( $major_branches_count < 2 )); then + echo "Only one major branch found, not running CI on this cycle - will run on next cycle" + exit 0 + fi + major_branch=$(echo "$major_branches" | head -2 | tail -1) + if (( $major_branches_count >= 2 )) && [[ $has_cms6_major == "true" ]]; then + # There are CMS 6 major dev branches though no CMS 6 tagged releases yet + # Assume that the 3rd major branch is the previous major branch + major_branch=$(echo "$major_branches" | head -3 | tail -1) + fi fi if [[ $minor_type == "next-patch" ]]; then - # not escaping rx . as \. because jq will say it is a compile error - minor_branches=$(jq -r ".[] | select(.name | test(\"^$major_branch.[0-9]+$\")) | .name" __branches.json | sort -V -r) - minor_branches_count=$(echo "$minor_branches" | wc -l) - if (( $minor_branches_count < 1 )); then - echo "No minor branches found" - exit 1 - fi - minor_branch=$(echo "$minor_branches" | head -1) + # not escaping rx . as \. because jq will say it is a compile error + minor_branches=$(jq -r ".[] | select(.name | test(\"^$major_branch.[0-9]+$\")) | .name" __branches.json | sort -V -r) + minor_branches_count=$(echo "$minor_branches" | wc -l) + if (( $minor_branches_count < 1 )); then + echo "No minor branches found" + exit 1 + fi + minor_branch=$(echo "$minor_branches" | head -1) fi branch=$major_branch if [[ $minor_branch != "" ]]; then - branch="$minor_branch" + branch="$minor_branch" fi rm __branches.json echo "branch is $branch"