You can use GitHub Actions to create an issue on a regular basis for things like daily meetings or quarterly reviews.
IntroductionThis tutorial demonstrates how to use the GitHub CLI to create an issue on a regular basis. For example, you can create an issue each week to use as the agenda for a team meeting. For more information about GitHub CLI, see Using GitHub CLI in workflows.
In the tutorial, you will first make a workflow file that uses the GitHub CLI. Then, you will customize the workflow to suit your needs.
Creating the workflowChoose a repository where you want to apply this project management workflow. You can use an existing repository that you have write access to, or you can create a new repository. For more information about creating a repository, see Creating a new repository.
In your repository, create a file called .github/workflows/YOUR_WORKFLOW.yml
, replacing YOUR_WORKFLOW
with a name of your choice. This is a workflow file. For more information about creating new files on GitHub, see Creating new files.
Copy the following YAML contents into your workflow file.
YAMLname: Weekly Team Sync on: schedule: - cron: 20 07 * * 1 jobs: create_issue: name: Create team sync issue runs-on: ubuntu-latest permissions: issues: write steps: - name: Create team sync issue run: | if [[ $CLOSE_PREVIOUS == true ]]; then previous_issue_number=$(gh issue list \ --label "$LABELS" \ --json number \ --jq '.[0].number') if [[ -n $previous_issue_number ]]; then gh issue close "$previous_issue_number" gh issue unpin "$previous_issue_number" fi fi new_issue_url=$(gh issue create \ --title "$TITLE" \ --assignee "$ASSIGNEES" \ --label "$LABELS" \ --body "$BODY") if [[ $PINNED == true ]]; then gh issue pin "$new_issue_url" fi env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_REPO: ${{ github.repository }} TITLE: Team sync ASSIGNEES: monalisa,doctocat,hubot LABELS: weekly sync,docs-team BODY: | ### Agenda - [ ] Start the recording - [ ] Check-ins - [ ] Discussion points - [ ] Post the recording ### Discussion Points Add things to discuss below - [Work this week](https://github.com/orgs/github/projects/3) PINNED: false CLOSE_PREVIOUS: false
name: Weekly Team Sync
on:
schedule:
- cron: 20 07 * * 1
jobs:
create_issue:
name: Create team sync issue
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- name: Create team sync issue
run: |
if [[ $CLOSE_PREVIOUS == true ]]; then
previous_issue_number=$(gh issue list \
--label "$LABELS" \
--json number \
--jq '.[0].number')
if [[ -n $previous_issue_number ]]; then
gh issue close "$previous_issue_number"
gh issue unpin "$previous_issue_number"
fi
fi
new_issue_url=$(gh issue create \
--title "$TITLE" \
--assignee "$ASSIGNEES" \
--label "$LABELS" \
--body "$BODY")
if [[ $PINNED == true ]]; then
gh issue pin "$new_issue_url"
fi
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}
TITLE: Team sync
ASSIGNEES: monalisa,doctocat,hubot
LABELS: weekly sync,docs-team
BODY: |
### Agenda
- [ ] Start the recording
- [ ] Check-ins
- [ ] Discussion points
- [ ] Post the recording
Add things to discuss below
- [Work this week](https://github.com/orgs/github/projects/3)
PINNED: false
CLOSE_PREVIOUS: false
Customize the parameters in your workflow file:
on.schedule
to dictate when you want this workflow to run. In the example above, the workflow will run every Monday at 7:20 UTC. For more information about scheduled workflows, see Events that trigger workflows.ASSIGNEES
to the list of GitHub usernames that you want to assign to the issue.LABELS
to the list of labels that you want to apply to the issue.TITLE
to the title that you want the issue to have.BODY
to the text that you want in the issue body. The |
character allows you to use a multi-line value for this parameter.PINNED
to true
. For more information about pinned issues, see Pinning an issue to your repository.CLOSE_PREVIOUS
to true
. The workflow will close the most recent issue that has the labels defined in the labels
field. To avoid closing the wrong issue, use a unique label or combination of labels.Commit your workflow file to the default branch of your repository. For more information, see Creating new files.
Based on the schedule
parameter (for example, every Monday at 7:20 UTC), your workflow will create a new issue with the assignees, labels, title, and body that you specified. If you set PINNED
to true
, the workflow will pin the issue to your repository. If you set CLOSE_PREVIOUS
to true, the workflow will close the most recent issue with matching labels.
Note
The schedule
event can be delayed during periods of high loads of GitHub Actions workflow runs. High load times include the start of every hour. If the load is sufficiently high enough, some queued jobs may be dropped. To decrease the chance of delay, schedule your workflow to run at a different time of the hour.
You can view the history of your workflow runs to see this workflow run periodically. For more information, see Viewing workflow run history.
Next stepsgh issue create
documentation.RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4