Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[PLAY-1580-2] Semver Targets Trigger Correct RCs - Update Version #3831

Merged
merged 9 commits into from
Nov 12, 2024
35 changes: 35 additions & 0 deletions .github/workflows/github-actions-check-labels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Check Labels
run-name: ${{ github.actor }} is checking labels 🚀
on:
pull_request:
types: [ labeled, unlabeled ]
jobs:
Checking-Labels:
runs-on: ubuntu-latest
steps:
- name: Check for Semver label
run: |
LABELS=$(jq -r '.pull_request.labels[].name' "$GITHUB_EVENT_PATH")
SEMVER_PATTERN="^(major|minor|patch)$"

SEMVER_LABELS=$(echo "$LABELS" | grep -iE "$SEMVER_PATTERN" || true)

# Check if SEMVER_LABELS is empty
if [ -z "$SEMVER_LABELS" ]; then
echo "Error: No Semver label found. Please add exactly one of: major, minor, patch (case-insensitive)"
exit 1
fi

SEMVER_LABEL_COUNT=$(echo "$SEMVER_LABELS" | wc -l)

if [ "$SEMVER_LABEL_COUNT" -eq 0 ]; then
echo "Error: No Semver label found. Please add exactly one of: major, minor, patch (case-insensitive)"
exit 1
elif [ "$SEMVER_LABEL_COUNT" -gt 1 ]; then
echo "Error: Multiple Semver labels found. Please ensure only one is present:"
echo "$SEMVER_LABELS"
exit 1
else
NORMALIZED_LABEL=$(echo "$SEMVER_LABELS" | tr '[:upper:]' '[:lower:]')
echo "Valid Semver label found: $NORMALIZED_LABEL"
fi
79 changes: 67 additions & 12 deletions .github/workflows/github-actions-release-candidate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,29 +30,84 @@ jobs:
with:
bundler-cache: true
- name: Python Setup
uses: actions/setup-python@v4
with:
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Set Git Config
run: |
git config --local user.name "${{ github.actor }}"
git config --local user.email "${{ github.actor }}@users.noreply.github.com"
- name: Get Semver Label
id: get-label
run: |
PR_NUMBER=$(jq --raw-output .pull_request.number "$GITHUB_EVENT_PATH" 2>/dev/null || echo "")
if [ ! -z "$PR_NUMBER" ] && [ "$PR_NUMBER" != "null" ]; then
echo "✅ Successfully found PR number: $PR_NUMBER"
else
echo "❌ Unable to find PR number"
fi

echo "Fetching labels for PR #$PR_NUMBER..."
LABELS=$(gh pr view $PR_NUMBER --json labels -q '.labels[].name' || echo "Failed to fetch labels")
echo "Found labels: $LABELS"

if [ -z "$LABELS" ]; then
echo "⛔ Error: Failed to fetch PR labels"
exit 1
fi

SEMVER_LABEL=$(echo "$LABELS" | grep -iE '^(major|minor|patch)$' || true)
echo "Found Semver labels: $SEMVER_LABEL"

if [ -z "$SEMVER_LABEL" ]; then
echo "⛔ Error: No valid Semver label (major, minor, patch) found on PR #$PR_NUMBER."
exit 1
fi

LABEL_COUNT=$(echo "$SEMVER_LABEL" | wc -l)
echo "Number of Semver labels found: $LABEL_COUNT"

if [ "$LABEL_COUNT" -ne 1 ]; then
echo "⛔ Error: Expected exactly one Semver label, found $LABEL_COUNT on PR #$PR_NUMBER."
exit 1
fi

echo "SEMVER_LABEL=$SEMVER_LABEL" >> $GITHUB_ENV
echo "✅ Successfully found Semver label: $SEMVER_LABEL"

echo "SEMVER_LABEL=$SEMVER_LABEL" >> $GITHUB_ENV
echo "Semver label found: $SEMVER_LABEL"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Grab Current Version and Set New RC Version
id: set-version
run: |
current_npm_version=$(node -pe "require('./package.json').version")

if [[ $current_npm_version == *"-rc."* ]]; then
new_npm_version=$(yarn version --prerelease --preid rc --no-git-tag-version | grep "New version:" | awk '{print $4}')
else
new_npm_version=$(yarn version --preminor --preid rc --no-git-tag-version | grep "New version:" | awk '{print $4}')
fi


case ${{ env.SEMVER_LABEL }} in
Major)
new_npm_version=$(yarn version --premajor --preid rc --no-git-tag-version | grep "New version:" | awk '{print $4}')
;;
Minor)
new_npm_version=$(yarn version --preminor --preid rc --no-git-tag-version | grep "New version:" | awk '{print $4}')
;;
Patch)
new_npm_version=$(yarn version --prepatch --preid rc --no-git-tag-version | grep "New version:" | awk '{print $4}')
;;
*)
echo "Error: Invalid Semver label: ${{ env.SEMVER_LABEL }}"
exit 1
;;
esac

new_npm_version=${new_npm_version#v}
new_ruby_version=$(echo $new_npm_version | sed 's/-rc\./.pre.rc./')

echo "new_npm_version=${new_npm_version}" >> $GITHUB_ENV
echo "new_ruby_version=${new_ruby_version}" >> $GITHUB_ENV

- name: Check if version exists and increment if necessary
run: |
max_attempts=100
Expand Down Expand Up @@ -140,10 +195,10 @@ jobs:
issue_number: pullRequestNumber,
owner: context.repo.owner,
repo: context.repo.repo,
body: `You merged this pr to master branch:
body: `You merged this pr to master branch:
- Ruby Gem: [${{env.RUBY_GEM_VERSION}}](${{env.RUBY_GEM_LINK}})
- NPM: [${{env.NPM_VERSION}}](${{env.NPM_LINK}})`
});
} else {
console.log('No pull request found for this commit');
}
}
Loading