Some checks failed
Autonomous Repo Agent / autonomous-build (push) Has been cancelled
BlackRoad AI Agents / agent-response (push) Has been cancelled
🔍 BlackRoad CodeQL Security Analysis / CodeQL Analysis (javascript) (push) Has been cancelled
🔍 BlackRoad CodeQL Security Analysis / CodeQL Analysis (python) (push) Has been cancelled
CI / Test (push) Has been cancelled
Deploy to Cloudflare Pages / Deploy to Cloudflare Pages (push) Has been cancelled
Trinity Compliance Check / check-compliance (push) Has been cancelled
Synced from BlackRoad-OS-Inc/blackroad-operator/orgs/core/blackroad-os-web BlackRoad OS — Pave Tomorrow. RoadChain-SHA2048: 13032509284e1f6c RoadChain-Identity: alexa@sovereign RoadChain-Full: 13032509284e1f6ca60f7004aa28e90fdc0fdae165e934d79f9ee91ee80caa9c42b57ad6c0ed9c400d303a39716259ad59602b6bc19ba3ea0720412c7957b64908250e99db1c5debc19331e7d473bb26d0c501cf1f02155ec53315372f62c0a36ca9d67d033e42c4d9683c2220eda4b4f4487eff9e474726e279d738e8a613870d38f5197ee4504b40c95ce73a1df4eb837b18bfce046609b29fbb4a7bdb83501806d25bfaa79be4f46f31b9616511733690a6b2a6257084c264223462161aca13e0608a59f5a0cc55f9835d640a1dde518b15c019a4ba62e8513cbbd58fd436d9e401fa12a1a8c82908b4688359b829c90e76067668e4793638a8d33fb9a77c
186 lines
6.2 KiB
YAML
186 lines
6.2 KiB
YAML
name: 🤖 BlackRoad Auto-Merge
|
||
|
||
on:
|
||
pull_request:
|
||
types: [opened, synchronize, reopened]
|
||
check_suite:
|
||
types: [completed]
|
||
workflow_run:
|
||
workflows: ["🔍 BlackRoad Compliance Check"]
|
||
types: [completed]
|
||
|
||
permissions:
|
||
contents: write
|
||
pull-requests: write
|
||
checks: read
|
||
|
||
jobs:
|
||
auto-merge:
|
||
name: Auto-Merge Compliant PRs
|
||
runs-on: ubuntu-latest
|
||
|
||
# Only run for bot-created PRs
|
||
if: |
|
||
github.event.pull_request.user.login == 'github-actions[bot]' ||
|
||
github.actor == 'github-actions[bot]'
|
||
|
||
steps:
|
||
- name: 📥 Checkout Repository
|
||
uses: actions/checkout@v4
|
||
|
||
- name: 🔍 Get PR Details
|
||
id: pr
|
||
env:
|
||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
run: |
|
||
# Get PR number
|
||
if [ -n "${{ github.event.pull_request.number }}" ]; then
|
||
PR_NUMBER="${{ github.event.pull_request.number }}"
|
||
else
|
||
# If triggered by workflow_run, find the PR
|
||
PR_NUMBER=$(gh pr list --head blackroad-auto-fix --json number --jq '.[0].number')
|
||
fi
|
||
|
||
if [ -z "$PR_NUMBER" ]; then
|
||
echo "No PR found, exiting..."
|
||
exit 0
|
||
fi
|
||
|
||
echo "number=$PR_NUMBER" >> $GITHUB_OUTPUT
|
||
|
||
# Get PR status
|
||
PR_DATA=$(gh pr view "$PR_NUMBER" --json statusCheckRollup,headRefName,mergeable,mergeStateStatus)
|
||
|
||
# Extract status
|
||
STATUS=$(echo "$PR_DATA" | jq -r '.statusCheckRollup[] | select(.conclusion != null) | .conclusion' | sort -u)
|
||
MERGEABLE=$(echo "$PR_DATA" | jq -r '.mergeable')
|
||
MERGE_STATE=$(echo "$PR_DATA" | jq -r '.mergeStateStatus')
|
||
BRANCH=$(echo "$PR_DATA" | jq -r '.headRefName')
|
||
|
||
echo "status=$STATUS" >> $GITHUB_OUTPUT
|
||
echo "mergeable=$MERGEABLE" >> $GITHUB_OUTPUT
|
||
echo "merge_state=$MERGE_STATE" >> $GITHUB_OUTPUT
|
||
echo "branch=$BRANCH" >> $GITHUB_OUTPUT
|
||
|
||
echo "PR #$PR_NUMBER status: $STATUS, mergeable: $MERGEABLE, state: $MERGE_STATE"
|
||
|
||
- name: ✅ Validate PR for Auto-Merge
|
||
id: validate
|
||
run: |
|
||
CAN_MERGE="false"
|
||
|
||
# Check 1: Is this from blackroad-auto-fix branch?
|
||
if [[ "${{ steps.pr.outputs.branch }}" == "blackroad-auto-fix" ]]; then
|
||
echo "✅ PR is from auto-fix branch"
|
||
|
||
# Check 2: Is mergeable?
|
||
if [[ "${{ steps.pr.outputs.mergeable }}" == "MERGEABLE" ]]; then
|
||
echo "✅ PR is mergeable (no conflicts)"
|
||
|
||
# Check 3: All checks passed or no checks?
|
||
if [[ -z "${{ steps.pr.outputs.status }}" ]] || [[ "${{ steps.pr.outputs.status }}" == "SUCCESS" ]]; then
|
||
echo "✅ All checks passed (or no checks required)"
|
||
CAN_MERGE="true"
|
||
else
|
||
echo "⚠️ Some checks failed or are pending: ${{ steps.pr.outputs.status }}"
|
||
fi
|
||
else
|
||
echo "⚠️ PR has merge conflicts or is not mergeable"
|
||
fi
|
||
else
|
||
echo "ℹ️ Not an auto-fix PR (branch: ${{ steps.pr.outputs.branch }}), skipping"
|
||
fi
|
||
|
||
echo "can_merge=$CAN_MERGE" >> $GITHUB_OUTPUT
|
||
|
||
- name: 🚀 Merge PR
|
||
if: steps.validate.outputs.can_merge == 'true' && steps.pr.outputs.number != ''
|
||
env:
|
||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
run: |
|
||
PR_NUMBER="${{ steps.pr.outputs.number }}"
|
||
|
||
echo "🤖 Merging PR #$PR_NUMBER..."
|
||
|
||
# Merge with squash and delete branch
|
||
gh pr merge "$PR_NUMBER" \
|
||
--squash \
|
||
--delete-branch \
|
||
--body "✅ Auto-merged by BlackRoad Auto-Merge System
|
||
|
||
This PR passed all compliance checks and was automatically merged.
|
||
|
||
🤖 Automated by BlackRoad Auto-Merge
|
||
© 2025-2026 BlackRoad OS, Inc."
|
||
|
||
echo "✅ PR #$PR_NUMBER merged successfully!"
|
||
|
||
- name: 💬 Add Success Comment
|
||
if: steps.validate.outputs.can_merge == 'true' && steps.pr.outputs.number != ''
|
||
env:
|
||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
run: |
|
||
PR_NUMBER="${{ steps.pr.outputs.number }}"
|
||
|
||
gh pr comment "$PR_NUMBER" --body "🤖 **Auto-Merge Successful**
|
||
|
||
This PR has been automatically merged because:
|
||
- ✅ Created by BlackRoad auto-fix bot
|
||
- ✅ All compliance checks passed
|
||
- ✅ No merge conflicts
|
||
- ✅ No manual review required
|
||
|
||
The changes are now live on the default branch.
|
||
|
||
---
|
||
🤖 Automated by BlackRoad Auto-Merge System
|
||
© 2025-2026 BlackRoad OS, Inc." || true
|
||
|
||
- name: 📝 Create Issue on Validation Failure
|
||
if: |
|
||
steps.validate.outputs.can_merge == 'false' &&
|
||
steps.pr.outputs.number != '' &&
|
||
steps.pr.outputs.branch == 'blackroad-auto-fix'
|
||
env:
|
||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
run: |
|
||
PR_NUMBER="${{ steps.pr.outputs.number }}"
|
||
REPO="${{ github.repository }}"
|
||
|
||
gh issue create \
|
||
--title "⚠️ Auto-Fix PR Requires Manual Review: #$PR_NUMBER" \
|
||
--body "## Auto-Fix PR Could Not Be Auto-Merged
|
||
|
||
**PR:** #$PR_NUMBER
|
||
**Status:** Manual review needed ⚠️
|
||
**Reason:** Checks failed or merge conflicts detected
|
||
|
||
### Details:
|
||
The auto-fix PR did not pass automatic validation.
|
||
|
||
**Branch:** \`${{ steps.pr.outputs.branch }}\`
|
||
**Mergeable:** \`${{ steps.pr.outputs.mergeable }}\`
|
||
**Merge State:** \`${{ steps.pr.outputs.merge_state }}\`
|
||
**Check Status:** \`${{ steps.pr.outputs.status }}\`
|
||
|
||
### Action Required:
|
||
Please review the PR manually and resolve any issues.
|
||
|
||
**PR Link:** https://github.com/$REPO/pull/$PR_NUMBER
|
||
|
||
---
|
||
🤖 Automated Alert from BlackRoad Auto-Merge System
|
||
© 2025-2026 BlackRoad OS, Inc." \
|
||
--label "auto-fix-failed,needs-review" || true
|
||
|
||
- name: 🚨 Notify on Critical Failure
|
||
if: failure()
|
||
env:
|
||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
run: |
|
||
echo "🚨 Auto-merge workflow encountered an error"
|
||
echo "This may require manual intervention"
|
||
# If Slack webhook is configured, uncomment below:
|
||
# curl -X POST "${{ secrets.SLACK_WEBHOOK }}" -H 'Content-Type: application/json' \
|
||
# -d '{"text":"🚨 Auto-merge failed in ${{ github.repository }}"}'
|