Note
GitHub ホステッド ランナーは、現在 GitHub Enterprise Server ではサポートされていません。 GitHub public roadmap で、今後の計画的なサポートの詳細を確認できます。
はじめに
このチュートリアルでは、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 が作成されるたびにこのワークフローで生成された以前の 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 で 、スケジュールされた問題に関連するアクションを検索します。