triage_pr.yml 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. name: Add PR to Board
  2. on:
  3. pull_request_target:
  4. types: [opened, synchronize, ready_for_review, review_requested]
  5. jobs:
  6. track_pr:
  7. runs-on: ubuntu-latest
  8. steps:
  9. - name: Get project data
  10. env:
  11. GITHUB_TOKEN: ${{ secrets.PAT }}
  12. run: |
  13. gh api graphql -f query='
  14. query {
  15. organization(login: "revoltchat"){
  16. projectV2(number: 5) {
  17. id
  18. fields(first:20) {
  19. nodes {
  20. ... on ProjectV2SingleSelectField {
  21. id
  22. name
  23. options {
  24. id
  25. name
  26. }
  27. }
  28. }
  29. }
  30. }
  31. }
  32. }' > project_data.json
  33. echo 'PROJECT_ID='$(jq '.data.organization.projectV2.id' project_data.json) >> $GITHUB_ENV
  34. echo 'STATUS_FIELD_ID='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Status") | .id' project_data.json) >> $GITHUB_ENV
  35. echo 'INCOMING_OPTION_ID='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Status") | .options[] | select(.name=="🆕 Untriaged") |.id' project_data.json) >> $GITHUB_ENV
  36. - name: Add PR to project
  37. env:
  38. GITHUB_TOKEN: ${{ secrets.PAT }}
  39. PR_ID: ${{ github.event.pull_request.node_id }}
  40. run: |
  41. item_id="$( gh api graphql -f query='
  42. mutation($project:ID!, $pr:ID!) {
  43. addProjectV2ItemById(input: {projectId: $project, contentId: $pr}) {
  44. item {
  45. id
  46. }
  47. }
  48. }' -f project=$PROJECT_ID -f pr=$PR_ID --jq '.data.addProjectV2ItemById.item.id')"
  49. echo 'ITEM_ID='$item_id >> $GITHUB_ENV
  50. - name: Set fields
  51. env:
  52. GITHUB_TOKEN: ${{ secrets.PAT }}
  53. run: |
  54. gh api graphql -f query='
  55. mutation (
  56. $project: ID!
  57. $item: ID!
  58. $status_field: ID!
  59. $status_value: String!
  60. ) {
  61. set_status: updateProjectV2ItemFieldValue(input: {
  62. projectId: $project
  63. itemId: $item
  64. fieldId: $status_field
  65. value: {
  66. singleSelectOptionId: $status_value
  67. }
  68. }) {
  69. projectV2Item {
  70. id
  71. }
  72. }
  73. }' -f project=$PROJECT_ID -f item=$ITEM_ID -f status_field=$STATUS_FIELD_ID -f status_value=${{ env.INCOMING_OPTION_ID }} --silent