Compare commits
1 Commits
mempool
...
knorrium/u
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9ad877db38 |
57
.github/workflows/project-review-status.yml
vendored
57
.github/workflows/project-review-status.yml
vendored
@ -1,21 +1,68 @@
|
|||||||
# Workflow: Automatically set project status to "Review Needed" when a reviewer is requested
|
# Workflow: Automate project board management
|
||||||
name: Set Project Status on Review Request
|
# - Add newly created issues to project #8
|
||||||
|
# - Set status to "Review Needed" when a reviewer is requested on a non-draft PR
|
||||||
|
name: Project Board Automation
|
||||||
|
|
||||||
# Trigger: Runs whenever a reviewer is requested on a pull request
|
# Triggers: Review requested on PRs, or new issues opened
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
types: [review_requested]
|
types: [review_requested]
|
||||||
|
issues:
|
||||||
|
types: [opened]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
update-project-status:
|
manage-project-board:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Update Project Status to Review Needed
|
- name: Update Project Board
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
with:
|
with:
|
||||||
# Use the PAT stored in repository secrets (has project write access)
|
# Use the PAT stored in repository secrets (has project write access)
|
||||||
github-token: ${{ secrets.PROJECT_TOKEN }}
|
github-token: ${{ secrets.PROJECT_TOKEN }}
|
||||||
script: |
|
script: |
|
||||||
|
// Skip draft PRs
|
||||||
|
if (context.eventName === 'pull_request' && context.payload.pull_request.draft) {
|
||||||
|
console.log('PR is a draft, skipping Review Needed status...');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle new issues - add to project
|
||||||
|
if (context.eventName === 'issues') {
|
||||||
|
const addMutation = `
|
||||||
|
mutation($projectId: ID!, $contentId: ID!) {
|
||||||
|
addProjectV2ItemById(input: {projectId: $projectId, contentId: $contentId}) {
|
||||||
|
item { id }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
try {
|
||||||
|
await github.graphql(addMutation, {
|
||||||
|
projectId: "${{ secrets.PROJECT_ID }}",
|
||||||
|
contentId: context.payload.issue.node_id
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log('Successfully added issue to project #8');
|
||||||
|
} catch (error) {
|
||||||
|
// Handle case where the issue is already in the project, or log other failures
|
||||||
|
const errors = error && error.errors ? error.errors : [];
|
||||||
|
const alreadyInProject = errors.some(e =>
|
||||||
|
typeof e.message === 'string' &&
|
||||||
|
e.message.toLowerCase().includes('already') &&
|
||||||
|
e.message.toLowerCase().includes('project')
|
||||||
|
);
|
||||||
|
|
||||||
|
if (alreadyInProject) {
|
||||||
|
console.log('Issue is already in project #8, skipping add.');
|
||||||
|
} else {
|
||||||
|
console.error('Failed to add issue to project #8:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle PR review_requested - update status to "Review Needed"
|
||||||
// GraphQL query to find the PR's project items
|
// GraphQL query to find the PR's project items
|
||||||
// This fetches all projects the PR is linked to
|
// This fetches all projects the PR is linked to
|
||||||
const query = `
|
const query = `
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user