Einführung
In diesem Tutorial wird gezeigt, wie sich mit GitHub CLI regelmäßig ein Sachverhalt erstellen lässt. Du kannst beispielsweise für jede Woche ein Issue erstellen, das als Tagesordnung für eine Teambesprechung verwendet werden soll. Weitere Informationen zur GitHub CLI findest du unter Verwenden der GitHub CLI in Workflows.
Im Tutorial erstellen Sie zunächst eine Workflowdatei, die die GitHub CLI verwendet. Im Anschluss passt du den Workflow an deine Anforderungen an.
Erstellen des Workflows
-
Wähle ein Repository aus, in dem du diesen Projektverwaltungsworkflow anwenden möchtest. Du kannst ein vorhandenes Repository verwenden, auf das du Schreibzugriff hast, oder du kannst ein neues Repository erstellen. Weitere Informationen zum Erstellen eines Repositorys findest du unter Ein neues Repository erstellen.
-
Erstelle in deinem Repository eine Datei namens
.github/workflows/YOUR_WORKFLOW.yml
, und ersetzeYOUR_WORKFLOW
durch einen Namen deiner Wahl. Dies ist eine Workflowdatei. Weitere Informationen zum Erstellen neuer Dateien auf GitHub findest du unter Neue Dateien erstellen. -
Kopiere den folgenden YAML-Inhalt in deine Workflowdatei.
YAML 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 ### 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 ### Discussion Points Add things to discuss below - [Work this week](https://github.com/orgs/github/projects/3) PINNED: false CLOSE_PREVIOUS: false
-
Passe die Parameter in deiner Workflowdatei an:
- Ändere den Wert für
on.schedule
, um festzulegen, wann dieser Workflow ausgeführt werden soll. Im obigen Beispiel wird der Workflow jeden Montag um 7:20 Uhr UTC ausgeführt. Weitere Informationen zu geplanten Workflows findest du unter Ereignisse zum Auslösen von Workflows. - Ändere den Wert für
ASSIGNEES
in die Liste der GitHub-Benutzernamen, die du dem Issue zuweisen möchtest. - Ändere den Wert für
LABELS
in die Liste der Bezeichnungen, die du auf das Issue anwenden möchtest. - Ändere den Wert für
TITLE
in den Titel, den das Issue haben soll. - Ändere den Wert für
BODY
in den Text, der im Issuetext angezeigt werden soll. Mit dem Zeichen|
kannst du einen mehrzeiligen Wert für diesen Parameter verwenden. - Wenn du dieses Issue in deinem Repository anheften möchtest, lege
PINNED
auftrue
fest. Weitere Informationen zu angehefteten Issues findest du unter Einen Issue an Dein Repository anheften. - Wenn das von diesem Workflow generierte vorherige Issue immer geschlossen werden soll, wenn ein neues Issue erstellt wird, lege
CLOSE_PREVIOUS
auftrue
fest. Der Workflow schließt das jüngste Issue, das die im Feldlabels
definierten Bezeichnungen enthält. Um zu vermeiden, dass das falsche Issue geschlossen wird, verwende eine eindeutige Bezeichnung oder eine eindeutige Kombination aus Bezeichnungen.
- Ändere den Wert für
-
Committe deine Workflowdatei in den Standardbranch deines Repositorys. Weitere Informationen findest du unter Neue Dateien erstellen.
Erwartete Ergebnisse
Basierend auf dem Parameter schedule
(z. B. jeden Montag um 7:20 Uhr UTC) erstellt dein Workflow ein neues Issue mit den zugewiesenen Personen, Bezeichnungen, dem Titel und dem Textkörper, die bzw. den du angegeben hast. Wenn du PINNED
auf true
festgelegt hast, heftet der Workflow das Issue an dein Repository an. Wenn du CLOSE_PREVIOUS
auf TRUE festgelegt hast, schließt der Workflow das jüngste Issue mit den entsprechenden Bezeichnungen.
Note
Das Ereignis schedule
kann sich in Phasen mit einer hohen Auslastung durch GitHub Actions-Workflowausführungen verzögern. Eine hohe Last ist unter anderem zu Beginn jeder Stunde zu verzeichnen. Wenn die Auslastung ausreichend hoch ist, werden einige Aufträge in der Warteschlange möglicherweise gelöscht. Um die Wahrscheinlichkeit einer Verzögerung zu verringern, kannst du deinen Workflow so planen, dass er zu einer anderen Uhrzeit ausgeführt wird.
Du kannst den Verlauf der Workflowausführungen anzeigen, um zu ermitteln, ob dieser Workflow regelmäßig ausgeführt wird. Weitere Informationen finden Sie unter Anzeigen des Ausführungsverlaufs eines Workflows.
Nächste Schritte
- Weitere Informationen zu weiteren Aktionen, die Sie mit den GitHub CLI erledigen können, z. B. mithilfe einer Problemvorlage, finden Sie in der
gh issue create
Dokumentation. - Durchsuchen Sie GitHub Marketplace nach Aktionen im Zusammenhang mit geplanten Problemen.