Fix: Conversion banner layout spacing in WP admin [TMZ-1083] #567
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Cherry Pick Merged PR | |
| on: | |
| pull_request_target: | |
| types: | |
| - closed | |
| - labeled | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| actions: write | |
| jobs: | |
| cherry-pick: | |
| if: ${{ github.event.pull_request.merged == true && github.event.pull_request.head.repo.full_name == github.repository && (github.event.action == 'closed' || (github.event.action == 'labeled' && startsWith(github.event.label.name, 'cp_'))) }} | |
| runs-on: ubuntu-latest | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| ref: ${{ github.event.pull_request.base.ref }} | |
| fetch-depth: 0 | |
| persist-credentials: true | |
| - name: Get branch labels | |
| id: get_labels | |
| run: | | |
| LABELS=$(jq -r '.[].name' <<< '${{ toJSON(github.event.pull_request.labels) }}' | grep '^cp_' | paste -sd ',' || echo "") | |
| echo "filtered_labels_csv=$LABELS" >> "$GITHUB_OUTPUT" | |
| shell: bash | |
| - name: Fetch all branches | |
| run: git fetch --all | |
| shell: bash | |
| - name: Cherry-Pick and Create PRs | |
| if: ${{ steps.get_labels.outputs.filtered_labels_csv != '' }} | |
| env: | |
| PR_TITLE: ${{ github.event.pull_request.title }} | |
| PR_USER_LOGIN: ${{ github.event.pull_request.user.login }} | |
| LABEL_NAME: ${{ github.event.label.name }} | |
| SOURCE_REPO: ${{ github.event.pull_request.head.repo.full_name }} | |
| run: | | |
| PR_NUMBER="${{ github.event.pull_request.number }}" | |
| MERGE_SHA="${{ github.event.pull_request.merge_commit_sha }}" | |
| ORIG_URL="${{ github.event.pull_request.html_url }}" | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| IFS=',' read -ra BRANCHES <<< "${{ steps.get_labels.outputs.filtered_labels_csv }}" | |
| for lbl in "${BRANCHES[@]}"; do | |
| TARGET=${lbl#cp_} | |
| ORIGINAL_BRANCH="${{ github.event.pull_request.head.ref }}" | |
| BRANCH=$(bash "${GITHUB_WORKSPACE}/.github/scripts/cherry-picking/generate-branch-name.sh" "$PR_NUMBER" "$TARGET" "$ORIGINAL_BRANCH") | |
| CONFLICT_BRANCH="${BRANCH}_conflicts" | |
| echo "Processing cherry-pick for branch: $TARGET" | |
| if ! git checkout -b "$BRANCH" "origin/$TARGET"; then | |
| echo "::warning:: Branch $TARGET does not exist - skipping" | |
| continue | |
| fi | |
| if ! git cherry-pick -m 1 "$MERGE_SHA"; then | |
| echo "::error:: Cherry-pick conflicts detected for PR #${PR_NUMBER} on branch ${TARGET}" | |
| git add . | |
| git commit -m "Cherry-pick PR #${PR_NUMBER} with conflicts - manual resolution needed" | |
| if git push --force-with-lease origin "$BRANCH:$CONFLICT_BRANCH"; then | |
| if ! gh pr list --head "$CONFLICT_BRANCH" --base "$TARGET" --state open | grep -q .; then | |
| CONFLICT_TITLE=$(bash "${GITHUB_WORKSPACE}/.github/scripts/cherry-picking/generate-pr-title.sh" "$PR_TITLE" "$PR_NUMBER" "$TARGET") | |
| CONFLICT_TITLE="${CONFLICT_TITLE} with conflicts" | |
| CONFLICT_TRIGGER_INFO="" | |
| if [ "${{ github.event.action }}" = "labeled" ]; then | |
| CONFLICT_TRIGGER_INFO=" | |
| **Trigger:** Label \`${LABEL_NAME}\` added to closed PR" | |
| fi | |
| gh pr create \ | |
| --base "$TARGET" \ | |
| --head "$CONFLICT_BRANCH" \ | |
| --title "$CONFLICT_TITLE" \ | |
| --body "**Manual Resolution Required** | |
| This cherry-pick of [#${PR_NUMBER}](${ORIG_URL}) to \`${TARGET}\` branch has conflicts that need manual resolution. | |
| **Theme-Specific Conflict Resolution:** | |
| - **Version Conflicts**: Check \`style.css\` header for version mismatches | |
| - **Schema Conflicts**: Validate \`theme.json\` structure changes | |
| - **Function Conflicts**: Resolve \`functions.php\` function name collisions | |
| **Resolution Steps:** | |
| 1. Check out this branch: \`git checkout $CONFLICT_BRANCH\` | |
| 2. Resolve conflicts in the marked files | |
| 3. Stage resolved files: \`git add <resolved-files>\` | |
| 4. Amend the commit: \`git commit --amend\` | |
| 5. Push changes: \`git push --force-with-lease\` | |
| 6. Mark this PR as ready for review | |
| **Automatic Validation:** | |
| Once you push resolved changes, the following workflows will run automatically: | |
| - Build validation (\`build.yml\`) | |
| - JavaScript linting (\`lint.yml\`) | |
| - Cherry-pick validation (\`cherry-pick-validation.yml\`) | |
| - Additional CI workflows as configured | |
| **Original PR:** [#${PR_NUMBER}](${ORIG_URL})${CONFLICT_TRIGGER_INFO}" \ | |
| --draft | |
| fi | |
| else | |
| git cherry-pick --abort | |
| fi | |
| continue | |
| fi | |
| if ! git push --force-with-lease origin "$BRANCH"; then | |
| echo "::error:: Failed to push branch $BRANCH" | |
| exit 1 | |
| fi | |
| if gh pr list --head "$BRANCH" --base "$TARGET" --state open | grep -q .; then | |
| echo "PR already exists for branch $BRANCH -> $TARGET, skipping creation" | |
| else | |
| PR_TITLE_GENERATED=$(bash "${GITHUB_WORKSPACE}/.github/scripts/cherry-picking/generate-pr-title.sh" "$PR_TITLE" "$PR_NUMBER" "$TARGET") | |
| TRIGGER_INFO="" | |
| if [ "${{ github.event.action }}" = "labeled" ]; then | |
| TRIGGER_INFO=" | |
| **Trigger:** Label \`${LABEL_NAME}\` added to closed PR" | |
| fi | |
| gh pr create \ | |
| --base "$TARGET" \ | |
| --head "$BRANCH" \ | |
| --title "$PR_TITLE_GENERATED" \ | |
| --body "Automatic cherry-pick of [#${PR_NUMBER}](${ORIG_URL}) to \`${TARGET}\` branch. | |
| **Source:** ${SOURCE_REPO} | |
| **Original Author:** @${PR_USER_LOGIN}${TRIGGER_INFO}" | |
| fi | |
| done | |
| shell: bash |