Skip to content

Commit

Permalink
ENH Handle CMS 6 branches
Browse files Browse the repository at this point in the history
  • Loading branch information
emteknetnz committed Feb 20, 2024
1 parent 467a12c commit 8c703e3
Showing 1 changed file with 41 additions and 23 deletions.
64 changes: 41 additions & 23 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 \
)
Expand All @@ -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"
Expand Down

0 comments on commit 8c703e3

Please sign in to comment.