When using GitHub Projects, it’s convenient to have issues or pull requests (items) added to the project automatically. There are a few different ways to do it.
Project auto-add
Projects can be configured to auto-add items. You create a workflow, and configure the types of items you’d like added.
https://github.blog/changelog/2023-03-09-github-issues-projects-march-9th-update/
Pro: built-in, no code for us to maintain.
Con: You can only choose one source repo for items.
OSPR bot adding pull requests to repos
The OSPR bot can add pull requests to repos. External non-draft pull requests will be added to projects listed in the catalog.yaml file.
In a repo’s catalog.yaml file, you create an annotation. For example, this will add to the https://github.com/orgs/openedx/projects/23 project:
annotations: # This can be multiple comma-separated projects. openedx.org/add-to-projects: "openedx:23"
More information is in the bot docs: https://github.com/openedx/openedx-webhooks/blob/master/docs/details.rst
Pro: many repos can auto-add to many projects.
Con: only operates on external pull requests; we maintain the code.
Open edX shared workflow
An Open edX shared workflow can add issues to projects: https://github.com/openedx/.github/blob/master/.github/workflows/add-issue-to-a-project.yml
This is almost obsolete: a project workflow does this, but only for one repo. This action can be used in multiple repos to funnel issues from all of them into a project.
You make an action in the source repo to use the workflow, like this:
name: Add new issues to the Security project
on:
issues:
types: [opened]
jobs:
Add_an_issue_to_project:
uses: openedx/.github/.github/workflows/add-issue-to-a-project.yml@master
secrets:
GITHUB_APP_ID: ${{ secrets.GRAPHQL_AUTH_APP_ID }}
GITHUB_APP_PRIVATE_KEY: ${{ secrets.GRAPHQL_AUTH_APP_PEM }}
with:
PROJECT_NUMBER: 45
Although the action says “issue”, I think it can add pull requests also.
Pro: many repos can auto-add to many projects.
Con: needs secrets management.