Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: Add some additional GH project automation #13629

Merged
merged 16 commits into from
Sep 10, 2024
98 changes: 98 additions & 0 deletions .github/workflows/project-automation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
name: "Automation: Update GH Project"
on:
pull_request:
types:
- closed
- opened
- reopened
- ready_for_review
- converted_to_draft

jobs:
# Check if PR is in project
check_project:
name: Check if PR is in project
runs-on: ubuntu-latest
steps:
- name: Check if PR is in project
continue-on-error: true
id: check_project
uses: github/update-project-action@f980378bc179626af5b4e20ec05ec39c7f7a6f6d
with:
github_token: ${{ secrets.GH_PROJECT_AUTOMATION }}
organization: getsentry
project_number: 31
content_id: ${{ github.event.pull_request.node_id }}
field: Status
operation: read

- name: If project field is read, set is_in_project to 1
if: steps.check_project.outputs.field_read_value
id: is_in_project
run: echo "is_in_project=1" >> "$GITHUB_OUTPUT"

outputs:
is_in_project: ${{ steps.is_in_project.outputs.is_in_project || '0' }}

# When a PR is a draft, it should go into "In Progress"
mark_as_in_progress:
name: "Mark as In Progress"
needs: check_project
if: |
needs.check_project.outputs.is_in_project == '1'
&& (github.event.action == 'opened' || github.event.action == 'reopened' || github.event.action == 'converted_to_draft')
&& github.event.pull_request.draft == true
runs-on: ubuntu-latest
steps:
- name: Update status to in_progress
uses: github/update-project-action@f980378bc179626af5b4e20ec05ec39c7f7a6f6d
with:
github_token: ${{ secrets.GH_PROJECT_AUTOMATION }}
organization: getsentry
project_number: 31
content_id: ${{ github.event.pull_request.node_id }}
field: Status
value: "🏗 In Progress"

# When a PR is not a draft, it should go into "In Review"
mark_as_in_review:
name: "Mark as In Review"
needs: check_project
if: |
needs.check_project.outputs.is_in_project == '1'
&& (github.event.action == 'opened' || github.event.action == 'reopened' || github.event.action == 'ready_for_review')
&& github.event.pull_request.draft == false
runs-on: ubuntu-latest
steps:
- name: Update status to in_review
id: update_status
uses: github/update-project-action@f980378bc179626af5b4e20ec05ec39c7f7a6f6d
with:
github_token: ${{ secrets.GH_PROJECT_AUTOMATION }}
organization: getsentry
project_number: 31
content_id: ${{ github.event.pull_request.node_id }}
field: Status
value: "👀 In Review"

# By default, closed PRs go into "Ready for Release"
# But if they are closed without merging, they should go into "Done"
mark_as_done:
name: "Mark as Done"
needs: check_project
if: |
needs.check_project.outputs.is_in_project == '1'
&& github.event.action == 'closed' && github.event.pull_request.merged == false
runs-on: ubuntu-latest
steps:
- name: Update status to done
id: update_status
uses: github/update-project-action@f980378bc179626af5b4e20ec05ec39c7f7a6f6d
with:
github_token: ${{ secrets.GH_PROJECT_AUTOMATION }}
organization: getsentry
project_number: 31
content_id: ${{ github.event.pull_request.node_id }}
field: Status
value: "✅ Done"

Loading