No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Curso de GitHub Actions

Curso de GitHub Actions

Juan Jos茅 Torres

Juan Jos茅 Torres

Triggers: eventos que inician workflows en GitHub Actions

6/18
Recursos

GitHub Actions nos ofrece una amplia lista de 'triggers' que pueden lanzar nuestros 'workflows'. Algunos de los m谩s comunes incluyen 'push', 'pull request', 'issue', 'issue comment', 'workflow dispatch', y 'schedule'.

驴C贸mo funciona el 'trigger' de 'push'?

Cuando haces 'push' de un nuevo 'commit' en alguna rama que t煤 definas, puedes activar un 'workflow'.

Esta acci贸n tambi茅n se puede configurar para todas las ramas y puede especificar a qu茅 ramas afectar谩 mediante la opci贸n 'branches'. Y con la opci贸n 'paths' puedes especificar qu茅 archivos deben modificarse para que el 'workflow' se active.

驴C贸mo se utiliza el 'trigger' de 'pull request'?

El 'trigger' 'pull request' ofrece caracter铆sticas muy similares al de 'push'. Esto incluye 'branches' y 'paths', y tambi茅n incluye 'types', que te permite especificar sobre qu茅 acciones sobre 'pull request' quieres que se active.

驴C贸mo manejar la opci贸n 'issues' y 'issue comment'?

El 'trigger' 'issues' funciona de manera similar al 'pull request', y tiene los mismos 'types'. Sin embargo, 'issue comment' funciona cuando se hacen comentarios nuevos sobre un 'issue' o 'pull request', y tambi茅n puedes especificar si la acci贸n se ejecuta solo en los comentarios de un 'pull request'.

驴C贸mo lanzar 'workflows' de forma manual con 'workflow dispatch'?

El 'workflow dispatch' te permite lanzar un 'workflow' de forma manual y agregar los par谩metros que desees. Puedes crear 'inputs', y estos pueden ser de diferentes tipos, como una elecci贸n, un boolean, o un string.

驴C贸mo programar eventos con el 'schedule'?

Finalmente, el 'trigger' 'schedule' te permite programar eventos que ocurran a intervalos regulares. Puedes especificar los minutos, la hora, el d铆a del mes, el mes, y el d铆a de la semana.

驴C贸mo puedes practicar la creaci贸n de 'workflows' basados en 'triggers'?

Para practicar la creaci贸n de 'workflows', te recomiendo que crees un nuevo archivo 'workflow' que use al menos tres de los 'triggers' que acabamos de explicar.

Comparte tus soluciones en la secci贸n de comentarios y comp谩ralas con las de otros. En la pr贸xima entrega veremos m谩s sobre c贸mo usar las expresiones en GitHub Actions. 隆Esperamos verte all铆!

Aportes 3

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Push

Push se entiende cuando mandamos al repositorio remoto las actualizaciones del repositorio local.

Este script acaparar谩 el trigger push mientras suceda en los branches main o releases/** (cualquier rama con nombre release o que nazca a partir de este nombre) y solo se tendr谩 en cuenta si se han modificado archivos de formato .js.

on: #Acaparar谩 los triggers de este workflow
	push: #El tipo de trigger: push
		branches: #Las ramas en las que se activar谩 el workflow
			- 'main' #Se activar谩 si se hace push en la rama main
			- 'releases/**' #O en la rama releases y derivados
		paths: #Ser谩n las rutas que se tendr谩n en cuenta para activar el workflow
			- '**.js' #Todos los archivos .js en el repositorio

Pull Request

El Pull Request ser谩 la petici贸n de mergear una rama aislada con otra rama (generalmente principal).

Este script se activar谩 por un PR, espec铆ficamente en el momento de abrirlo y etiquetarlo (opened y labeled), seguir谩 el resto de reglas que el push.

on: #Acaparar谩 los triggers de este workflow
	pull_request: #El tipo de trigger: pr
		types: #Los estados que activar谩n el trigger
			- [opened, labeled] #Tomar谩 los estados del PR
		branches: #Las ramas en las que se activar谩 el workflow
			- 'releases/**' #En la rama releases y derivados
		paths: #Ser谩n las rutas que se tendr谩n en cuenta para activar el workflow
			- '**.js' #Todos los archivos .js en el repositorio

Issues

Los issues son foros donde se anuncian difuncionalidades del c贸digo por parte de la comunidad o los propios developers.

Tiene la misma l贸gica de los PR, sin embargo, los types cambiar谩n.

on: #Acaparar谩 los triggers de este workflow
	issues: #El tipo de trigger: issues
		types: #Los estados que activar谩n el trigger
			- [opened, edited, closed]

Issue Comment

Cuando se generen comentarios en un Issue o un PR se activar谩 este trigger.

Tendremos 2 casos, el primero donde se ejecutar谩 un issue comment, y el segundo donde se ejecutar谩 en un PR comment.

En este caso cada que se cree o elimine un comentario de un Issue se activar谩 y correr谩 el workflow.

on:
	issue_comment: 
		types:  [created, deleted]

En este segundo ejemplo tambi茅n trabajaremos por issue_comment, sin embargo, a帽adiremos un job que verificar谩 que estamos sobre un pull request con el condicional dado, si es verdad, podr谩 continuar.

on: issue_comment
jobs:
	pr_commented:
		name : PR comment
		if : ${{ github.event.issue.pull_request }}

Workflow dispatch

Los Workflow dispatch son Workflows de activaci贸n manual, estos poseen la caracter铆stica de poder setear inputs, los configuraremos dentro del archivo YAML.

Este Workflow contendr谩 3 variables a ingresar las cuales ser谩n alerta, tags y enviroment, ser谩n contenidas por la etiqueta inputs y en cada una especificaremos sus caracter铆sticas. La primera tendr谩 una descripci贸n, ser谩 obligatoria, tendr谩 medio como valor por defecto y ser谩 de tipo choice (las opciones ser谩n alto, medio o bajo). Los otros 2 casos son parecidos, donde tags ser谩 un boolean opcional y enviroments un string obligatorio.

on: 
	workflow_dispatch:
		inputs:
			alerta:
				description : 'Nivel'
				required : true
				default : medio
				type : choice
				option :
				- bajo
				- medio
				- alto

			tags:
				description : 'Opcional'
				required : false
				****type : boolean

			enviroment:
				description : 'Objetivo'
				required : true
				type : string

Schedule

Los schedules son un tipo de trigger que se activar谩 autom谩ticamente por una regla de tiempo.

on:
	schedule:
		- cron : '30 5,17 * * *'

Puedes notar que hay 2 valores puestos (30 - 5,17) y 3 asteriscos, esta es una notaci贸n de cronograma que indicar谩 valores a nivel de tiempo.

[Minuto, Hora, Dia del mes, Mes, D铆a de la semana]

Minuto (0 - 59)
Hora (0 - 23) 
D铆a del mes (1 - 31) 
Mes (1 - 12 o JAN - DEC)
D铆a de la semana ( 0 - 6 o SUN - SAT)

Si el valor tiene un asterisco significa que ser谩 c铆clico, si tiene coma significa que agrupar谩 2 valores

Por lo que nuestro 鈥30 5,17 * * *鈥 significa a las 5:30AM y 5:30PM todos los d铆as todos los meses del a帽o.

name: clase triggers
on: [push, status, create]
jobs: 
  run-java:
    runs-on: ubuntu-latest
    steps: 
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Compile and run Java Code
        run: |
          javac Entrada.java
          java Entrada 
name: hello-world # Nombre del workflow
run-name: mi primer workflow!
on: [push] # Trigger (evento) que lo activara (cuando se corra git push ... correra este trigger)
jobs: # Definici贸n de los jobs
  hello-world: # Nombre del job
    runs-on: ubuntu-latest # Servidor en la que correra
    steps: # Lista de steps del job hello-world
      - uses: actions/checkout@v3
      - uses: denoland/setup-deno@v1
        with:
          deno-version: v1.x
      - name: Setup variable
        run: echo "USERNAME=${{github.actor}}" >> $GITHUB_ENV
      - name: Run main.ts
        run: deno run -A main.ts