This GitHub action updates item fields on Projects (beta).
The action is great to use in combination with project-add as you will need to obtain the item-id to update an item's field.
- Text
- Number
- Date
- Single select
- Iteration
field-names are supplied as a CSV list of names.
field-names: Status,Iteration,product,priorityfield-values are supplied as a CSV list of corresponding values.
field-values: todo,[0],back-end,highOptions and iterations are matched by the name(case-insensitive). You can also use an array index notation. For example [0] would be the first option or iteration. The first iteration is always the current one.
Create a workflow (eg: .github/workflows/on-issue-pr-open.yml). See Creating a Workflow file.
You will need a project number for input project-number. For example https://github.com/users/austenstone/projects/5 the project number is 5.
You will need to create a PAT(Personal Access Token) that has admin:org access so we can read/write to the project.
Add this PAT as a secret so we can use it as input github-token, see Creating encrypted secrets for a repository.
If your project is part of an organization that has SAML enabled you must authorize the PAT, see Authorizing a personal access token for use with SAML single sign-on.
name: "Add Issue/PR to Project"
on:
issues:
types: [opened]
pull_request:
types: [opened]
jobs:
add_to_project:
name: Add to Project
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: austenstone/project-add@main
with:
user: ${{ github.repository_owner }}
project-number: 5
github-token: "${{ secrets.MY_TOKEN }}"
id: project-add
- uses: austenstone/project-update@main
with:
user: ${{ github.repository_owner }}
project-number: 5
github-token: "${{ secrets.MY_TOKEN }}"
item-id: ${{ steps.project-add.outputs.id }}
field-names: product,priority
field-values: back-end,highFor user owned projects you must provide the user input in the workflow.
with:
user: ${{ github.repository_owner }}
github-token: "${{ secrets.MY_TOKEN }}"
project-number: 1234Various inputs are defined in action.yml:
| Name | Description | Default |
|---|---|---|
| project-number | The project number. Get this from the URL. | N/A |
| github-token | Token to use to authorize. This should be a personal access token. | ${{ github.token }} |
| organization | The organization that owns of the project. | the repository owner |
| user | The user that owns of the project. | N/A |
| item-id | The item Id of the issue or pull request. | N/A |
| field-names | CSV fields to modify. | N/A |
| field-values | CSV fields values. | N/A |
If you are using a user owned project board you must provide the user input.${{ github.repository_owner }} is fine if you're the owner of the repository.
Until GitHub supports permissions for projects (beta) we will need to create a PAT(Personal Access Token) with admin:org scope.
Once support is added you we can utilize Assigning permissions to jobs and the action will default to the token ${{ github.token }}.
permissions:
repository-projects: writeAnother option is to use something like tibdex/github-app-token to get a token during the workflow.