[DO NOT MERGE] This is for testing the Dependabot success test case #13
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: Dependabot Upgrade Monitor | |
| on: | |
| pull_request: | |
| types: [opened, synchronize] | |
| permissions: | |
| issues: write | |
| pull-requests: write | |
| jobs: | |
| monitor-dependabot: | |
| # Assume this job is triggered by Dependabot PRs | |
| # if: github.event.pull_request.user.login == 'dependabot[bot]' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Wait for checks to complete | |
| uses: WyriHaximus/github-action-wait-for-status@v1.8.0 | |
| with: | |
| ignoreActions: monitor-dependabot | |
| checkInterval: 60 | |
| env: | |
| GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" | |
| - name: Check if PR is failing | |
| id: check | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const sha = context.payload.pull_request.head.sha; | |
| const owner = context.repo.owner; | |
| const repo = context.repo.repo; | |
| const { data: checkRunsData } = await github.rest.checks.listForRef({ | |
| owner, | |
| repo, | |
| ref: sha, | |
| }); | |
| const checkRuns = checkRunsData.check_runs; | |
| if (checkRuns.length === 0) { | |
| core.setFailed("No status checks found for this PR."); | |
| return; | |
| } | |
| const failedChecks = checkRuns.filter( | |
| check => check.status === 'completed' && check.conclusion !== 'success' | |
| ); | |
| if (failedChecks.length > 0) { | |
| console.log("Some checks failed:"); | |
| failedChecks.forEach(check => { | |
| console.log(`- ${check.name}: ${check.conclusion}`); | |
| }); | |
| core.setFailed("Some required checks did not pass."); | |
| } else { | |
| console.log("All checks passed."); | |
| } | |
| - name: Create issue on failure | |
| if: failure() && github.event.action == 'opened' | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| await github.rest.issues.create({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| title: `Dependabot upgrade failed: #${context.issue.number} - ${context.payload.pull_request.title}`, | |
| body: ` | |
| 🚨 **Dependabot Upgrade Failed** | |
| The following Dependabot pull request could not be merged automatically due to failed or incomplete status checks: | |
| - **PR:** [#${context.issue.number}](${context.payload.pull_request.html_url}) | |
| - **Status:** Not mergeable | |
| Please review the PR and resolve any conflicts or CI issues to proceed with the upgrade.`, | |
| labels: ["dependencies", "enhancement", "go"], | |
| }); | |
| - name: Assign maintainers on success | |
| if: success() | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const maintainers = ["dentiny", "CheyuWu"]; | |
| await github.rest.issues.addAssignees({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: context.issue.number, | |
| assignees: maintainers, | |
| }); |