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 20

Preguntas 1

Ordenar por:

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

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.

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

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
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`
Soy el único que utiliza BashScripts aquí XD ![](https://static.platzi.com/media/user_upload/image-7b4ec232-f3df-47c4-925c-113f10ab53be.jpg)
Este es mi archivo para Kotlin: ```java # This is a basic workflow to help you get started with Actions name: Hello-World run-name: I'm learning how to write Github Actions! # Controls when the workflow will run on: # Triggers the workflow on push or pull request events but only for the "main" branch push: branches: [ "main" ] pull_request: branches: [ "main" ] # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" build: # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v4 # Setup Kotlin for the Environment - name: Setup Kotlin uses: fwilhe2/[email protected] with: version: 1.9.23 # Runs a set of commands using the runners shell - name: Run a multi-line script run: | kotlinc main.kt -include-runtime -d main.jar kotlin main.jar ```
Decidi realizarlo en Javascript...les dejo mi codigo `hola-mundo.js` ```js var nombre var flow function holaMundo() { const nombre = process.env.USERNAME; const flow = process.env.WORKFLOW; console.log(`¡Hola, ${nombre} desde GitHub Actions!`); console.log(`Estoy corriendo ${flow}`); } holaMundo(); ````hola-mundo.yml` ```js name: Hola Mundo con GitHub Actions run-name: ¡Estoy usando GitHub Actions! on: [push] jobs: hola-mundo: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Nombre de Usuario run: echo "USERNAME=${{ github.actor }}" >> $GITHUB_ENV - name: Nombre del Workflow run: echo "WORKFLOW=${{ github.workflow }}" >> $GITHUB_ENV - name: Script Corriendo run: node hola-mundo.js ```Espero les sirva
Pregunta: por qué en este caso particular no se agrego un step para instalar python? como set-up python
Se pueden crear github-templates, son repositorios template para reusar, si estás haciendo muchos repos, microservicios, scs's, o un monolito, podrías tener un template de un repositorio con la tecnologia que usas. pero ahora con github actions, podrías tener no sólo el template del repo, si no también de la forma en que construyes tus artifacts.
```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"
`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