Note
No momento, não há suporte para executores hospedados no GitHub no GitHub Enterprise Server. Você pode ver mais informações sobre o suporte futuro planejado no GitHub public roadmap.
Introdução
Este tutorial demonstra como usar o GitHub CLI para criar um problema regularmente. Por exemplo, você pode criar um problema toda semana para usar como agenda para uma reunião de equipe. Para obter mais informações sobre o GitHub CLI, confira Usar o GitHub CLI em fluxos de trabalho.
No tutorial, primeiro você criará um arquivo de fluxo de trabalho que usa o GitHub CLI. Então, você personalizará o fluxo de trabalho para atender às suas necessidades.
Criar o fluxo de trabalho
-
Escolha um repositório onde você deseja aplicar este fluxo de trabalho de gerenciamento de projetos. Você pode usar um repositório existente ao qual você tem acesso de gravação ou criar um novo repositório. Para obter mais informações sobre como criar um repositório, confira "Criar um repositório".
-
No repositório, crie um arquivo chamado
.github/workflows/YOUR_WORKFLOW.yml
, substituindoYOUR_WORKFLOW
por um nome de sua escolha. Este é um arquivo do fluxo de trabaho. Para obter mais informações sobre como criar arquivos no GitHub, confira "Criar arquivos". -
Copie o seguinte conteúdo YAML para o arquivo do fluxo de trabalho.
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
-
Personalize os parâmetros no seu arquivo do fluxo de trabalho:
- Altere o valor de
on.schedule
para determinar quando deseja executar esse fluxo de trabalho. No exemplo acima, o fluxo de trabalho será executado todas as segundas às 7h20 UTC. Para saber mais sobre os fluxos de trabalho agendados, confira Eventos que disparam fluxos de trabalho. - Altere o valor de
ASSIGNEES
para a lista de nomes de usuário do GitHub que você deseja atribuir ao problema. - Altere o valor de
LABELS
para a lista de rótulos que você deseja aplicar ao problema. - Altere o valor de
TITLE
para o título que você deseja que o problema tenha. - Altere o valor de
BODY
para o texto desejado no corpo do problema. O caractere|
permite que você use um valor de várias linhas para esse parâmetro. - Caso deseje fixar esse problema no seu repositório, defina
PINNED
comotrue
. Para saber mais sobre os problemas fixados, confira Fixar um problema no repositório. - Caso deseje fechar o problema anterior gerado por esse fluxo de trabalho sempre que um problema é criado, defina
CLOSE_PREVIOUS
comotrue
. O fluxo de trabalho fechará o problema mais recente que tem os rótulos definidos no campolabels
. Para evitar o fechamento do problema errado, use uma etiqueta exclusiva ou uma combinação de etiquetas.
- Altere o valor de
-
Faça o commit do arquivo de fluxo de trabalho para o branch padrão do seu repositório. Para obter mais informações, confira "Criar arquivos".
Resultados esperados
Com base no parâmetro schedule
(por exemplo, todas as segundas-feiras às 7h20 UTC), o fluxo de trabalho criará um problema com os destinatários, os rótulos, o título e o corpo especificados. Se você definir PINNED
como true
, o fluxo de trabalho fixará o problema no seu repositório. Se você definir CLOSE_PREVIOUS
como true, o fluxo de trabalho fechará o problema mais recente com os rótulos correspondentes.
Note
O evento schedule
pode ser atrasado durante períodos de cargas altas de execuções de fluxo de trabalho do GitHub Actions. Os tempos de carregamento altos incluem o início de cada hora. Se a carga for suficientemente alta o suficiente, alguns trabalhos enfileirados talvez sejam descartados. Para diminuir a probabilidade de atraso, agende o fluxo de trabalho para ser executado em uma parte diferente da hora.
Você pode visualizar o histórico de execução do fluxo de trabalho para ver a execução deste fluxo de trabalho periodicamente. Para saber mais, confira Visualizar o histórico de execução do fluxo de trabalho.
Próximas etapas
- Para saber que ações adicionais você pode executar com o GitHub CLI, como, por exemplo, usar um modelo de problema, consulte a
gh issue create
documentação. - Pesquise GitHub Marketplace para obter ações relacionadas a problemas agendados.