Principales Funciones en GitHub Actions: Guía Completa
Introducción
GitHub Actions no solo permite la automatización de flujos de trabajo sino que también proporciona un conjunto robusto de funciones que facilitan la configuración y personalización de estos workflows. En este blog, exploraremos algunas de las funciones principales que ofrece GitHub Actions, incluyendo contains
, toJSON
, fromJSON
, needs
, outputs
, secrets
, env
, matrix
, y jobs.<job_id>.if
. Acompañaremos cada función con ejemplos sencillos para ilustrar su uso.
contains
La función contains
se utiliza para comprobar si una cadena contiene una subcadena específica.
Ejemplo:
name: Contains Example
on: [push]
jobs:
example_job:
runs-on: ubuntu-latest
steps:
- name: Check for Substring
if: ${{ contains(github.ref, 'feature') }}
run: echo "La rama contiene la palabra 'feature'"
toJSON
La función toJSON
convierte un objeto en una cadena JSON.
Ejemplo:
name: toJSON Example
on: [push]
jobs:
example_job:
runs-on: ubuntu-latest
steps:
- name: Convert Object to JSON
run: echo "${{ toJSON(github) }}"
fromJSON
La función fromJSON
convierte una cadena JSON en un objeto.
Ejemplo:
name: fromJSON Example
on: [push]
jobs:
example_job:
runs-on: ubuntu-latest
steps:
- name: Convert JSON to Object
run: echo "${{ fromJSON('{"key":"value"}').key }}"
needs
La función needs
permite que un trabajo dependa de la finalización exitosa de otro trabajo.
Ejemplo:
name: Needs Example
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Build
run: echo "Building..."
test:
needs: build
runs-on: ubuntu-latest
steps:
- name: Test
run: echo "Testing after build"
outputs
La función outputs
se utiliza para definir y usar salidas de trabajos anteriores.
Ejemplo:
name: Outputs Example
on: [push]
jobs:
job1:
runs-on: ubuntu-latest
steps:
- name: Set Output
id: step1
run: echo "::set-output name=myoutput::Hello"
job2:
needs: job1
runs-on: ubuntu-latest
steps:
- name: Use Output
run: echo "${{ needs.job1.outputs.myoutput }}"
secrets
La función secrets
se usa para acceder a secretos definidos en el repositorio.
Ejemplo:
name: Secrets Example
on: [push]
jobs:
example_job:
runs-on: ubuntu-latest
steps:
- name: Use Secret
run: echo "${{ secrets.MY_SECRET }}"
env
La función env
se usa para definir y acceder a variables de entorno.
Ejemplo:
name: Env Example
on: [push]
jobs:
example_job:
runs-on: ubuntu-latest
env:
MY_ENV_VAR: Hello World
steps:
- name: Use Env Variable
run: echo "${{ env.MY_ENV_VAR }}"
matrix
La función matrix
se usa para ejecutar trabajos en múltiples configuraciones.
Ejemplo:
name: Matrix Example
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node: [10, 12, 14]
steps:
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node }}
- name: Build
run: echo "Building with Node.js ${{ matrix.node }}"
jobs.<job_id>.if
La función jobs.<job_id>.if
se usa para condicionar la ejecución de un trabajo completo.
Ejemplo:
name: Job If Example
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
deploy:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- name: Deploy
run: echo "Deploying to production"
Conclusión
Las funciones y operadores en GitHub Actions proporcionan una flexibilidad y personalización increíbles para automatizar tus flujos de trabajo. Al entender cómo usar contains
, toJSON
, fromJSON
, needs
, outputs
, secrets
, env
, matrix
, y jobs.<job_id>.if
, puedes crear workflows más eficientes y dinámicos. Estos ejemplos simples deberían ayudarte a comenzar y explorar más las capacidades de GitHub Actions.