feat(ci): add auto-PR workflow for dev/* branches to develop

This commit is contained in:
quotentiroler
2026-02-06 15:30:41 -08:00
parent 6035bbcd2c
commit 0003cd969e

92
.github/workflows/feature-pr.yml vendored Normal file
View File

@@ -0,0 +1,92 @@
name: Feature PR
# Auto-create PR from dev/* branches to develop
# This is the entry point for new features into the staging pipeline
on:
push:
branches:
- 'dev/**'
- 'feature/**'
- 'fix/**'
permissions:
contents: read
pull-requests: write
jobs:
create-pr:
name: Create PR to develop
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check if develop exists
id: check-develop
run: |
if git ls-remote --heads origin develop | grep -q develop; then
echo "exists=true" >> $GITHUB_OUTPUT
else
echo "exists=false" >> $GITHUB_OUTPUT
echo "::warning::develop branch does not exist yet. PR will target main."
fi
- name: Determine target branch
id: target
run: |
if [ "${{ steps.check-develop.outputs.exists }}" = "true" ]; then
echo "branch=develop" >> $GITHUB_OUTPUT
else
echo "branch=main" >> $GITHUB_OUTPUT
fi
- name: Check for existing PR
id: check-pr
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
BRANCH="${{ github.ref_name }}"
TARGET="${{ steps.target.outputs.branch }}"
# Check if PR already exists
EXISTING=$(gh pr list --head "$BRANCH" --base "$TARGET" --json number --jq '.[0].number // empty')
if [ -n "$EXISTING" ]; then
echo "exists=true" >> $GITHUB_OUTPUT
echo "pr_number=$EXISTING" >> $GITHUB_OUTPUT
echo "PR #$EXISTING already exists for $BRANCH → $TARGET"
else
echo "exists=false" >> $GITHUB_OUTPUT
fi
- name: Create PR
if: steps.check-pr.outputs.exists != 'true'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
BRANCH="${{ github.ref_name }}"
TARGET="${{ steps.target.outputs.branch }}"
# Extract title from branch name (dev/foo-bar → foo bar)
TITLE=$(echo "$BRANCH" | sed 's|^dev/||; s|^feature/||; s|^fix/||; s|-| |g; s|_| |g')
# Capitalize first letter
TITLE="$(echo "${TITLE:0:1}" | tr '[:lower:]' '[:upper:]')${TITLE:1}"
gh pr create \
--base "$TARGET" \
--head "$BRANCH" \
--title "$TITLE" \
--body "Auto-created PR from \`$BRANCH\` to \`$TARGET\`.
## Changes
<!-- Describe your changes here -->
---
*This PR was auto-created by the feature-pr workflow.*"
echo "Created PR: $BRANCH → $TARGET"