No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

11 Días
12 Hrs
31 Min
35 Seg
Curso de GitHub Actions

Curso de GitHub Actions

Juan José Torres

Juan José Torres

Uso de contexto para acceder a información sobre un workflow

8/18
Recursos

A continuación, profundizaremos en cómo usar expresiones y los diferentes contextos a los que nos da acceso GitHub para optimizar nuestros workflow files.

¿Qué son las expresiones en GitHub Actions y cómo se usan?

Vamos a trabajar con el archivo expresiones.yml que vienen del reto de la clase anterior.

La sección de ayuda nos muestra que este archivo tiene un workflow dispatch como trigger, y dentro de este, se definen dos inputs: edad (un número) y nombre (un string).

El job "mayor" verifica si edad >= número establecido. Si es cierto, se muestra "mayoría de edad" en la terminal.
El segundo job verifica si edad < número designado. Si es cierto, muestra "minoría de edad".

¿Por qué son importantes los contextos en GitHub Actions?

Ahora que dominamos las expresiones, es tiempo de enfocarnos en los contextos. Un contexto en GitHub Actions es una forma de acceder a información relevante sobre ejecuciones de workflows, variables, entorno de runners, jobs y steps.

Exploraremos los diferentes tipos de contextos que GitHub Actions nos ofrece y lo que podemos obtener de cada uno de ellos.

¿Cuáles son los principales contextos que nos ofrece GitHub Actions?

GitHub Actions ofrece una variedad de contextos, los más destacados son:

  • GitHub Context: Detalles ejecución workflow. Ejemplo: github.actor obtiene nombre usuario actual.

  • ENV Context: Acceso variables en flujo, job o pasos. Más detalles próx. clase.

  • Contexto Vars: Acceso vars guardadas a nivel de ambiente, repo u org.

  • Contexto Job: Info job actual. Acceso por nombre o identificador.

  • Contexto Steps: Info steps actuales.

  • Contexto Runner: Acceso info runner job.

  • Contexto Secrets: Acceso a nombres y valores secretos en repo u org.

  • Contexto Inputs: Usar entradas info en ciertos triggers.

¿Cómo se usa un contexto en un workflow file?,,,

Un ejemplo de uso de contexto es un workflow file llamado "contexto" que se ejecuta en cada push a cualquier rama. Dentro de este file, hay un job llamado "checkMain" que verifica si estamos en la rama main usando el contexto GitHub y el atributo github.ref. Si estamos en la rama main, este job imprimirá "Desplegando en la rama main" en la terminal.

Los contextos nos permiten acceder a información relevante de GitHub Actions, abriendo puertas para una configuración más innovadora y eficiente de nuestros jobs. Te animo a crear un nuevo archivo de workflow llamado contextos.yml empleando al menos un contexto, ¡un concurso de scripting te espera en los comentarios!

Aportes 9

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

name: contexto
on: push
jobs:
	check-main:
		if: ${{ github.ref == 'refs/heads/main' }}
		runs-on: ubuntu-latest
		steps:
			- run : echo "Desplegando en la rama $GITHUB_REF"

Reto 4 - Aprende a usar los distintos Contextos

name: Reto 4 - Aprende a usar los distintos Contextos
on: [push, pull_request]
env:
  var1: Aprendiendo
  var2: Github-Actions
  var3: Contextos
jobs:
  Contexto-env:
    runs-on: ubuntu-latest
    steps:
      - name: echo env
        run: echo "${{ env.var1 }} ${{ env.var2}} ${{ env.var3}}"
  Contexto-github:
    if: ${{ github.ref == 'refs/heads/main' }}
    runs-on: ubuntu-latest
    steps:
      - name: echo $GITHUB_REF"
        run: echo "Desplegando en la rama $GITHUB_REF"
```js name: Contexto run-name: ¡Estoy aprendiendo a usar Contextos! on: push jobs: check-main: if: ${{ github.ref == 'refs/heads/main' }} runs-on: ubuntu-latest steps: - run: echo "Desplegando en la rama $GITHUB_REF" - run: echo "Se está ejecutando la rama: ${{ github.ref }}" - run: echo "El nombre del workflow es: ${{ github.workflow }}" - run: echo "El workflow fue activado por: ${{ github.actor }}" - run: echo "El resultado del paso anterior fue: ${{ steps.previous_step.outputs.resultado }}" ```name: Contexto run-name: ¡Estoy aprendiendo a usar Contextos! on: push jobs: check-main: if: ${{ github.ref == 'refs/heads/main' }} runs-on: ubuntu-latest steps: \- run: echo "Desplegando en la rama $GITHUB\_REF" \- run: echo "Se está ejecutando la rama: ${{ github.ref }}" \- run: echo "El nombre del workflow es: ${{ github.workflow }}" \- run: echo "El workflow fue activado por: ${{ github.actor }}" \- run: echo "El resultado del paso anterior fue: ${{ steps.previous\_step.outputs.resultado }}"
El type de el input *edad* ahora se debe poner como `number`
Hola, no consigo activar el workflow\_dispatch desde la pestaña Actions. Tampoco pilla el default: Python. Esta es la respuesta que obtengo siempre sin forma de que me aparezcan los inputs para rellenar: ¡Hola , tu lenguaje de programación favorito es !"
```js name: Context testing on: push env: mascot: Luna super_duper_var: beautiful env_var: ${{ vars.LENGUAJE_FAVORITO }} jobs: dump_contexts_to_log: runs-on: ubuntu-latest steps: - name: Dump GitHub context env: GITHUB_CONTEXT: ${{ toJson(github) }} run: echo "$GITHUB_CONTEXT" - name: Dump job context env: JOB_CONTEXT: ${{ toJson(job) }} run: echo "$JOB_CONTEXT" - name: Dump steps context env: STEPS_CONTEXT: ${{ toJson(steps) }} run: echo "$STEPS_CONTEXT" - name: Dump runner context env: RUNNER_CONTEXT: ${{ toJson(runner) }} run: echo "$RUNNER_CONTEXT" - name: Dump strategy context env: STRATEGY_CONTEXT: ${{ toJson(strategy) }} run: echo "$STRATEGY_CONTEXT" - name: Dump matrix context env: MATRIX_CONTEXT: ${{ toJson(matrix) }} run: echo "$MATRIX_CONTEXT" normal_ci: runs-on: ubuntu-latest steps: - name: Run normal CI run: echo "Running normal CI" pull_request_ci: runs-on: ubuntu-latest if: ${{ github.event_name == 'pull_request' }} steps: - name: Run PR CI run: echo "Running PR only CI" describe_my_dog: runs-on: ubuntu-latest steps: - name: Describe my dog run: echo "My dog is ${{ env.mascot }} and is ${{ env.super_duper_var }}" describe_new_dog: runs-on: ubuntu-latest env: mascot: Luna Maria super_duper_var: amazing steps: - name: Describe new dog run: echo "My dog is ${{ env.mascot }} and is ${{ env.super_duper_var }}" favorite_language: runs-on: ubuntu-latest steps: - name: Describe favorite language run: echo "My favorite language is ${{ env.env_var }}" ```
Siempre dice que en Recursos nos dejara enlaces, pero los recursos estan vacios!
Dejo un ejercicio simple donde accedo a diferente contextos: name: Contextoson: push jobs:    Obteniendo\_Contextos:        runs-on: ubuntu-latest        steps:            - name: contexto Github              env:                  GITHUB\_CONTEXT: ${{ toJson(github) }}              run: echo "$GITHUB\_CONTEXT"            - name: contexto del Job              env:                JOB\_CONTEXT: ${{ toJson(job) }}              run: echo "$JOB\_CONTEXT"            - name: Contexto del step              env:                STEPS\_CONTEXT: ${{ toJson(steps) }}              run: echo "$STEPS\_CONTEXT"            - name: Contexto runner              env:                RUNNER\_CONTEXT: ${{ toJson(runner) }}              run: echo "$RUNNER\_CONTEXT"            - name: contexto Github directo              run: echo "$GITHUB\_REF"
Con la nueva interfaz no veo ya la opción de tomar notas.