はじめに
このチュートリアルでは、GitHub CLIを使用して定期的にissueを作成する方法を示します。 たとえば、Issue を毎週作成して Team 会議のアジェンダとして使用できます。 GitHub CLI について詳しくは、「ワークフローで GitHub CLI を使用する」をご覧ください。
このチュートリアルでは、まず GitHub CLI を使用するワークフロー ファイルを作成します。 次に、ニーズに合わせてワークフローをカスタマイズします。
ワークフローの作成
-
このプロジェクト管理ワークフローを適用したいリポジトリを選択してください。 書き込みアクセス権を持つ既存のリポジトリを利用することも、新しいリポジトリを作成することもできます。 リポジトリの作成について詳しくは、「新しいリポジトリの作成」をご覧ください。
-
リポジトリに
.github/workflows/YOUR_WORKFLOW.yml
というファイルを作成します (YOUR_WORKFLOW
は任意の名前に置き換えます)。 これがワークフローファイルです。 GitHub で新しいファイルを作成する方法について詳しくは、「新しいファイルの作成」を参照してください。 -
次の YAML コンテンツをワークフローファイルにコピーします。
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
-
ワークフローファイルのパラメータをカスタマイズします。
on.schedule
の値を変更して、このワークフローを実行する日時を指定します。 上記の例では、ワークフローは毎週月曜日の 7:20 UTC に実行されます。 スケジュールされたワークフローについて詳しくは、「ワークフローをトリガーするイベント」を参照してください。ASSIGNEES
の値を、Issue に割り当てる GitHub のユーザー名のリストに変更します。LABELS
の値を、Issue に適用するラベルのリストに変更します。TITLE
の値を、Issue のタイトルに変更します。BODY
の値を、Issue の本文のテキストに変更します。|
文字を使用すると、このパラメーターに複数行の値を使用できます。- この Issue をリポジトリにピン止めする場合は、
PINNED
をtrue
に設定します。 ピン留めされたイシューについて詳しくは、「Issue をリポジトリにピン止めする」を参照してください。 - 新しい Issue が作成されるたびにこのワークフローで生成された以前の Issue をクローズする場合は、
CLOSE_PREVIOUS
をtrue
に設定します。 ワークフローにより、labels
フィールドで定義されているラベルを持つ最新の Issue が閉じられます。 間違った Issue をクローズしないようにするには、一意のラベルまたはラベルの組み合わせを使用します。
-
ワークフローファイルを、リポジトリのデフォルトブランチにコミットしてください。 詳しくは、「新しいファイルの作成」を参照してください。
予想される結果
schedule
パラメーター (たとえば、毎週月曜日の 7:20 UTC) に基づき、ワークフローにより、指定した担当者、ラベル、タイトル、本文を使用して新しい Issue が作成されます。 PINNED
を true
に設定すると、ワークフローによって Issue がリポジトリにピン留めされます。 CLOSE_PREVIOUS
を true に設定すると、ワークフローによりラベルが一致する最新の Issue がクローズされます。
Note
GitHub Actions のワークフローの実行によって高い負荷がかかっている間、schedule
イベントが遅延する可能性があります。 高負荷の時間帯には、毎時の開始時点が含まれます。 負荷が十分に高い場合、キューに登録されたジョブの一部が削除される可能性があります。 遅延の可能性を減らすために、Ⅰ時間の中の別の時間帯に実行されるようワークフローをスケジューリングしてください。
ワークフローの実行履歴を表示して、このワークフローが定期的に実行されているかどうかを確認できます。 詳しくは、「ワークフロー実行の履歴を表示する」を参照してください。
次のステップ
- 問題テンプレートの使用など、GitHub CLI で実行できるその他の操作の詳細については、
gh issue create
ドキュメントを参照してください。 - GitHub Marketplace で 、スケジュールされた問題に関連するアクションを検索します。