issue-lifecycle.yml 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. name: Issue lifecycle
  2. on:
  3. issues:
  4. types:
  5. - opened
  6. - edited
  7. - assigned
  8. - unassigned
  9. - labeled
  10. - unlabeled
  11. - closed
  12. - reopened
  13. - field_added
  14. - field_removed
  15. pull_request:
  16. types:
  17. - opened
  18. - edited
  19. - synchronize
  20. - reopened
  21. - labeled
  22. - unlabeled
  23. - review_requested
  24. pull_request_review:
  25. types:
  26. - submitted
  27. permissions:
  28. contents: read
  29. concurrency:
  30. group: issue-lifecycle-${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}
  31. cancel-in-progress: false
  32. jobs:
  33. lifecycle:
  34. name: Issue lifecycle
  35. # Runs on every pull_request_review event so the check reports success rather
  36. # than a gray "skipped" segment. The token-creating and board-mutating steps
  37. # are gated at step level (a skipped step does not gray the job): only a
  38. # changes_requested review drives the Project board; approved/commented
  39. # reviews never mint a write-capable App token.
  40. runs-on: ubuntu-latest
  41. steps:
  42. - name: Check out trusted policy
  43. uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
  44. with:
  45. ref: ${{ github.event.repository.default_branch }}
  46. persist-credentials: false
  47. - name: Create project token
  48. id: app-token
  49. if: ${{ github.event_name != 'pull_request_review' || github.event.review.state == 'changes_requested' }}
  50. uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1
  51. with:
  52. client-id: ${{ vars.DSH_ISSUE_APP_CLIENT_ID }}
  53. private-key: ${{ secrets.DSH_ISSUE_APP_PRIVATE_KEY }}
  54. owner: deepseek-harness
  55. repositories: deepseek-harness
  56. - name: Handle repository event
  57. if: ${{ github.event_name != 'pull_request_review' || github.event.review.state == 'changes_requested' }}
  58. env:
  59. GH_TOKEN: ${{ steps.app-token.outputs.token }}
  60. run: node .github/issue-management/policy.mjs lifecycle