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

Cómo es la sintaxis de workflow files

5/18
Recursos

Aportes 15

Preguntas 1

Ordenar por:

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

o inicia sesión.

Recuerden respetar la indentación al momento de los pasos / steps, solamente 2 espacios, yo utilice TAB y lo marcaba como error

Comprendiendo la sintaxis del formato YAML

Vamos a indagar línea por línea el archivo hola-mundo.yml para comprender la labor de cada etiqueta.

- *name: Aprendiendo GitHub Actions* → Es el nombre del Workflow que aparecerá en la sección de Actions en Github (opcional pero recomendadisimo).
- *run-name: ¡Estoy aprendiendo GitHub Actions!* → Es el nombre específico del Workflow que aparecerá en la pestaña de Actions en Github (Opcional).
- *on: [push]* → Esta se divide en 2. El “on” será la etiqueta que determine los triggers por los que se activará el Workflow; el [push] será el trigger por el que ha sido activado. Como es una lista, puedes agregar más triggers.
- *jobs* → Agrupará todos los jobs que ocurrirán en el Workflow (no contiene valor).
- *hola-mundo* → Esta es el identificador del job, así se diferenciará del resto (no puede contener espacios).
- *runs-on: ubuntu-latest* → Especificará el tipo de Runner para este job.
- *steps* → Agrupará todos los steps del job. Existen 2 tipos de steps, los que correrán actions del Marketplace o comandos de shell.
- *name: Checkout* → Nombre del step, su identificador. (también es opcional pero es recomendado usarla).
- *uses: actions/checkout@v3* → En este caso se usa la etiqueta uses para importar un action.
- *run: python hola_mundo.py* → En este otro caso se usa la etiqueta run para correr un comando o script.

Comparto mi Script hola-mundo.yml

name: Aprendiendo Github Actions
run-name: Estoy aprendiendo Github Actions!!!
on: [push]
jobs:
  hola-mundo:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - name: Definir variable
        run: echo "USERNAME=${{ github.actor }}" >> $GITHUB_ENV
      - name: Correr script
        run: python main.py
```js name: hello-world run-name: "Hello, World! from TS script" on: push: branches: - "01-hello-world" jobs: hello-world: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup nodejs uses: actions/setup-node@v4 - name: Setup variable run: echo "USERNAME=${{ github.actor }}" >> $GITHUB_ENV - name: Install dependencies and build run: | yarn install yarn start - name: Run main.js run: npm run build && node dist/main.js ```name: hello-worldrun-name: "Hello, World! from TS script"on:  push:    branches:      - "01-hello-world"jobs:  hello-world:    runs-on: ubuntu-latest    steps:      - name: Checkout        uses: actions/checkout@v4       - name: Setup nodejs        uses: actions/setup-node@v4       - name: Setup variable        run: echo "USERNAME=${{ github.actor }}" >> $GITHUB\_ENV       - name: Install dependencies and build        run: |          yarn install          yarn start      - name: Run main.js        run: npm run build && node dist/main.js
` ```yml ` name: hello-worldon:  push:    branches:      - "01-hello-world"jobs:  hello-world:    runs-on: ubuntu-latest    steps:      - name: Checkout        uses: actions/checkout@v4       - name: Setup nodejs        uses: actions/setup-node@v4       - name: Setup variable        run: echo "USERNAME=${{ github.actor }}" >> $GITHUB\_ENV       - name: Install dependencies and build        run: |          yarn install          yarn run build      - name: Run main.js        run: node dist/main.js ` ``` `
Si bien estoy siguiendo los vídeos. El repositorio que se muestra no lo clone, estoy escribiendo todo y haciendo pruebas. En esas me di cuenta que si tengo dos actions, en cada uno ejecuto un archivo de python diferente, de todas formas así cambie solo uno de ellos, ambos actions se ejecutan ya que el evento reconoce un push sobre main. Entonces agregue una configuración adicional que se llama "paths" y ahí defino el archivo que activa ese evento. ```python name: Mi segundo GitHub Actions on: push: branches: - 'main' paths: - 'hello-world2.py' #Especifico sobre que archivo se va a ejecutar el actions jobs: build-python: runs-on: ubuntu-latest steps: - name: checkout-repo uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v4 with: python-version: '3.10' - name: Definir Variable run: echo "USERNAME=${{ github.actor}}" >> $GITHUB_ENV - name: Print Username de GitHub run: python hello-world2.py ```
```js name: Aprendiendo GitHub Actions run-name: ¡Estoy aprendiendo GitHub Actions! on: workflow_dispatch: jobs: hola-mundo: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: definir variables run: echo "USERNAME=${{ github.actor }}" >> $GITHUB_ENV - name: Correr script run: java Main.java ```
comparto mi SCRIPT en JAVA `name: Aprendiendo GitHub Actionsrun-name: ¡Estoy aprendiendo GitHub Actions!on:workflow_dispatch:jobs:hola-mundo:runs-on: ubuntu-lateststeps:- name: Checkoutuses: actions/checkout@v3- name: definir variablesrun: echo "USERNAME=${{ github.actor }}" >> $GITHUB_ENV- name: Correr scriptrun: java Main.java`
Recuerden, los `jobs` se ejecutan en paralelo por defecto y pueden o no ejecutarse en el mismo runner.
name: Print hola mundo on: \[push] jobs: \# Get the current step from .github/script/STEP so we can \# limit running the main job when the learner is on the same step. print: name: Print Hello runs-on: ubuntu-latest steps: \- uses: actions/checkout@v3 \- name: Setup Node uses: actions/setup-node@v3 with: node-version: 18 \- name: print data run: node lol.js \- name: print final run: echo "lol"
Para usar un archivo Javascript con Node: `name: Aprendiendo Github Acions` `run-name: ¡Estoy aprendiendo Github-Actions!` `on: [push]` `jobs:` ` hola-mundo:` ` runs-on: ubuntu-latest` ` steps:` ` - name: Checkout` ` uses: actions/checkout@v3` ` - name: echo` ` run: echo "hello world" ` ` - uses: actions/setup-node@v3` ` with:` ` node-version: 18` ` - run: node hola_mundo.js`
`name: Aprendiendo GitHub Actionsrun-name: ¡Estoy aprendiendo GitHub Actions!on: [push]jobs:  hola-mundo:    runs-on: ubuntu-latest    steps:      - name: Checkout        uses: actions/checkout@v3      - name: Definir variable        run: echo "USERNAME=${{ github.actor }}" >> $GITHUB_ENV      - name: Correr script        run: python hola_mundo.py`

Este es mi workflow file para un proyecto en el que estoy trabajando.

name: Test on Pull Request

on:
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 18

      - name: Install dependencies
        run: yarn install

      - name: Run linting
        run: yarn lint

      - name: Run tests
        run: yarn test

      - name: Check test coverage
        run: yarn test:coverage

Reto 1 en Python

YML:

name: hola-mundo #Nombre del workflow
on: [push] #evento que lo activará
jobs:
  hola-mundo: #Nombre del job
    runs-on: ubuntu-latest #Imagen en la que correrá
    steps: #Lista de steps del job hola-mundo
      - name: CheckoutV3  #Nombre del 1er step
        uses: actions/checkout@v3 # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it

      - name: Correr Script #Nombre del 2er step
        run: python hola-mundo.py #Comando que se va ejecutar

PY:

TITULO_CURSO = 'Curso Github Actions'

print("¡Hola, estoy aprendiendo GitHub Actions!")
print(TITULO_CURSO)
name: learning GitHub Actions
run-name: I am learing GitHub Actions!
on: [push]
jobs:
  hola-mundo:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - name: Definir variable
        run: echo "USERNAME=${{ github.actor }}" >> $GITHUB_ENV
      - name: Run hola-mundo.js
        run: node hola-mundo.js