Skip to content

Merge pull request #309 from wpengine/release/hwp-previews-20250702-0… #19

Merge pull request #309 from wpengine/release/hwp-previews-20250702-0…

Merge pull request #309 from wpengine/release/hwp-previews-20250702-0… #19

# This creates a release branch for a plugin when changes are pushed to the main branch.
# We cannot commit to a protected branch directly, so we create a new branch to make these changes.
name: Create Release Branch
on:
push:
branches:
- main
paths:
- "plugins/**"
permissions:
contents: write # Allow actions to read and write repository contents
pull-requests: write # Allow actions to create and manage pull requests
actions: read # Allow actions to read repository metadata but not write to it
jobs:
create-release-branch:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2' # Note all plugins are compatible with PHP 8.2
extensions: mbstring, json, zip
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 18.x # Min version required by the repo
- name: Setup pnpm
uses: pnpm/action-setup@v3
with:
version: 10 # Min version required by the repo
- name: Get changed plugin directory
id: plugin
run: |
bash .github/scripts/get-plugin-slug.sh release
- name: Validate plugin detection
continue-on-error: false
run: |
if [ ! -d "plugins/${{ steps.plugin.outputs.slug }}" ]; then
echo "Plugin directory does not exist"
exit 1
fi
- name: Install dependencies
run: pnpm install
- name: Create release branch and apply changesets
run: |
# Create a unique branch name with timestamp
BRANCH_NAME="release/${{ steps.plugin.outputs.slug }}-$(date +%Y%m%d-%H%M%S)"
echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV
# Create and switch to release branch
git checkout -b "$BRANCH_NAME"
# Apply version bumps from changesets
pnpm changeset version
# Configure git
git config user.name "github-actions"
git config user.email "github-actions@github.com"
# Commit changes
git add .
if git diff --staged --quiet; then
echo "No changes to commit"
else
git commit -m "chore: apply version bump from changesets for ${{ steps.plugin.outputs.slug }}"
git push origin "$BRANCH_NAME"
# Create PR
gh pr create \
--title "Release: ${{ steps.plugin.outputs.slug }} version bump" \
--body "Automated release PR for ${{ steps.plugin.outputs.slug }} plugin.
This PR applies version bumps from changesets. Once merged, it will trigger the pre-release creation workflow.
Plugin: ${{ steps.plugin.outputs.slug }}" \
--base main \
--head "$BRANCH_NAME"
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}