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 鈥渙n鈥 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