Introducción
En este tutorial se muestra cómo usar la GitHub CLI para crear un asunto periódicamente. Por ejemplo, puedes crear una propuesta semanalmente o utilizarla como el itinerario de una junta de equipo. Para más información sobre GitHub CLI, consulte «Utilizar el CLI de GitHub en los flujos de trabajo».
En el tutorial, primero creará un archivo de flujo de trabajo que usa la GitHub CLI. Después, personalizarás el flujo de trabajo de acuerdo con tus necesidades.
Crear un flujo de trabajo
-
Elige un repoisitorio en donde quieras aplicar este fluljo de trabajo de administración de proyectos. Puedes utilizar un repositorio existente al cual tengas acceso de escritura o puedes crear un repositorio nuevo. Para más información sobre cómo crear un repositorio, consulta "Crear un repositorio nuevo".
-
En el repositorio, cree un archivo denominado
.github/workflows/YOUR_WORKFLOW.yml
, y reemplaceYOUR_WORKFLOW
por el nombre que prefiera. Este es un archivo de flujo de trabajo. Para obtener más información sobre cómo crear nuevos archivos en GitHub, consulte "Crear nuevos archivos". -
Copia el siguiente contenido de YAML en tu archivo de flujo de trabajo.
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
-
Personaliza los parámetros en tu archivo de flujo de trabajo:
- Cambie el valor de
on.schedule
para determinar cuándo quiere que se ejecute este flujo de trabajo. En el ejemplo anterior, el flujo de trabajo se ejecutará cada lunes a las 7:20 UTC. Para más información sobre los flujos de trabajo programados, consulta "Eventos que desencadenan flujos de trabajo". - Cambie el valor de
ASSIGNEES
a la lista de nombres de usuario de GitHub que quiera asignar a la incidencia. - Cambie el valor de
LABELS
a la lista de etiquetas que quiera aplicar a la incidencia. - Cambie el valor de
TITLE
por el título que quiera que tenga la incidencia. - Cambie el valor de
BODY
por el texto que quiera que aparezca en el cuerpo de la incidencia. El carácter|
permite usar un valor de varias líneas para este parámetro. - Si quiere anclar esta incidencia en el repositorio, establezca
PINNED
entrue
. Para más información sobre las incidencias ancladas, consulta "Anclar una propuesta a tu repositorio". - Si quiere cerrar la incidencia anterior generada por este flujo de trabajo cada vez que se crea una nueva incidencia, establezca
CLOSE_PREVIOUS
entrue
. El flujo de trabajo cerrará la incidencia más reciente que tenga las etiquetas definidas en el campolabels
. Para evitar que se cierre la propuesta equivocada, utiliza una etiqueta única o una combinación de etiquetas.
- Cambie el valor de
-
Confirma tu archivo de flujo de trabajo en la rama predeterminada de tu repositorio. Para obtener más información, vea «Crear nuevos archivos».
Resultados esperados
En función del parámetro schedule
(por ejemplo, cada lunes a las 7:20 UTC), el flujo de trabajo creará una nueva incidencia con los usuarios asignados, las etiquetas, el título y el cuerpo que especificó. Si establece PINNED
en true
, el flujo de trabajo anclará la incidencia en el repositorio. Si establece CLOSE_PREVIOUS
en true, el flujo de trabajo cerrará la incidencia más reciente con las etiquetas coincidentes.
Note
El evento schedule
se puede retrasar durante periodos de cargas altas de ejecuciones de flujo de trabajo de GitHub Actions. Los tiempos de carga alta incluyen el inicio de cada hora. Si la carga es lo suficientemente alta, es posible que se quiten algunos trabajos en cola. Para aminorar la posibilidad de los retrasos, programa tu flujo de trabajo para que se ejecute en una porción diferente de la hora.
Puedes ver el historial de tus ejecuciones de flujo de trabajo para ver que este flujo de trabajo se ejecute regularmente. Para obtener más información, vea «Visualizar el historial de ejecución del flujo de trabajo».
Pasos siguientes
- Para obtener más información sobre las cosas adicionales que puede hacer con la GitHub CLI, como el uso de una plantilla de asunto, consulte la documentación de
gh issue create
. - Busque en GitHub Marketplace para ver las acciones relacionadas con los asuntos programados.