Add Open Source project workflow (#16653)
Add Open Source project workflow This will help us triage open source issues into our various internal project boards. I tested this on a separate repo, and it seems to work.
This commit is contained in:
parent
c367f883a0
commit
18d336b16c
|
@ -0,0 +1,126 @@
|
|||
# Open Source Community Workflows
|
||||
|
||||
name: Project triage
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, reopened]
|
||||
# Runs on PRs to main
|
||||
branches:
|
||||
- main
|
||||
|
||||
issues:
|
||||
types: [opened, reopened]
|
||||
|
||||
jobs:
|
||||
add-to-projects:
|
||||
# exclude internal PRs
|
||||
if: github.event.pull_request.head.repo.owner.login != 'hashicorp' && ((github.event.action == 'reopened') || (github.event.action == 'opened'))
|
||||
name: Add issue or PR to projects
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: dorny/paths-filter@v2
|
||||
id: changes
|
||||
with:
|
||||
# derived from CODEOWNERS
|
||||
filters: |
|
||||
cryptosec:
|
||||
- 'builtin/logical/pki/**'
|
||||
- 'builtin/logical/ssh/**'
|
||||
- 'builtin/logical/totp/**'
|
||||
- 'builtin/logical/transit/**'
|
||||
ecosystem:
|
||||
- 'builtin/credential/aws/**'
|
||||
- 'builtin/credential/github/**'
|
||||
- 'builtin/credential/ldap/**'
|
||||
- 'builtin/credential/okta/**'
|
||||
- 'builtin/logical/aws/**'
|
||||
- 'builtin/logical/cassandra/**'
|
||||
- 'builtin/logical/consul/**'
|
||||
- 'builtin/logical/database/**'
|
||||
- 'builtin/logical/mongodb/**'
|
||||
- 'builtin/logical/mssql/**'
|
||||
- 'builtin/logical/mysql/**'
|
||||
- 'builtin/logical/nomad/**'
|
||||
- 'builtin/logical/postgresql/**'
|
||||
- 'builtin/logical/rabbitmq/**'
|
||||
- 'command/agent/**'
|
||||
- 'plugins/**'
|
||||
- 'vault/plugin_catalog.go'
|
||||
- 'ui/app/components/auth-jwt.js'
|
||||
- 'ui/app/routes/vault/cluster/oidc-*.js'
|
||||
devex:
|
||||
- 'api/**'
|
||||
- 'command/**'
|
||||
ui:
|
||||
- 'ui/**'
|
||||
|
||||
- name: "Default to core board"
|
||||
run: echo "PROJECT=170" >> $GITHUB_ENV
|
||||
- if: steps.changes.outputs.cryptosec == 'true'
|
||||
run: echo "PROJECT=172" >> $GITHUB_ENV
|
||||
- if: steps.changes.outputs.ecosystem == 'true'
|
||||
run: echo "PROJECT=169" >> $GITHUB_ENV
|
||||
- if: steps.changes.outputs.devex == 'true'
|
||||
run: echo "PROJECT=176" >> $GITHUB_ENV
|
||||
- if: steps.changes.outputs.ui == 'true'
|
||||
run: echo "PROJECT=171" >> $GITHUB_ENV
|
||||
|
||||
- uses: actions/add-to-project@v0.3.0
|
||||
with:
|
||||
project-url: https://github.com/orgs/hashicorp/projects/${{ env.PROJECT }}
|
||||
github-token: ${{ secrets.ELEVATED_GITHUB_TOKEN }}
|
||||
|
||||
# example of something more complicated: deleting an issue or PR automatically (though this is done in the project workflows already)
|
||||
# we have to use the GraphQL API for anything involving projects.
|
||||
#
|
||||
# get-project:
|
||||
# name: Get project data
|
||||
# runs-on: ubuntu-latest
|
||||
# if: github.event.action == 'closed' || github.event.action == 'deleted'
|
||||
# outputs:
|
||||
# project_id: ${{ steps.get-project.outputs.project_id }}
|
||||
# steps:
|
||||
# - id: get-project
|
||||
# name: Get project data
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.ELEVATED_GITHUB_TOKEN }}
|
||||
# ORGANIZATION: hashicorp
|
||||
# PROJECT_NUMBER: 169
|
||||
# run: |
|
||||
# gh api graphql -f query='
|
||||
# query($org: String!, $number: Int!) {
|
||||
# organization(login: $org){
|
||||
# projectV2(number: $number) {
|
||||
# id
|
||||
# }
|
||||
# }
|
||||
# }' -f org=$ORGANIZATION -F number=$PROJECT_NUMBER > project_data.json
|
||||
# echo "::set-output name=project_id::$(jq '.data.organization.projectV2.id' project_data.json)"
|
||||
|
||||
# delete-from-project:
|
||||
# name: Remove issue or PR from project
|
||||
# needs: [get-project]
|
||||
# if: github.event.action == 'closed' || github.event.action == 'deleted'
|
||||
# runs-on: ubuntu-latest
|
||||
# steps:
|
||||
# - name: Remove issue or PR
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.ELEVATED_GITHUB_TOKEN }}
|
||||
# run: |
|
||||
# PROJECT_ID=${{ needs.get-project.outputs.project_id }}
|
||||
# item_id=${{ github.event.issue.node_id }}
|
||||
# if [ -z "$item_id" ]; then
|
||||
# item_id=${{ github.event.pull_request.node_id }}
|
||||
# fi
|
||||
# gh api graphql -f query='
|
||||
# mutation($project_id: ID!, $item_id: ID!) {
|
||||
# deleteProjectV2Item(
|
||||
# input: {
|
||||
# projectId: $project_id
|
||||
# itemId: $item_id
|
||||
# }
|
||||
# ) {
|
||||
# deletedItemId
|
||||
# }
|
||||
# }' -f project_id=$PROJECT_ID -f item_id=$item_id || true
|
Loading…
Reference in New Issue