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

Creando tu primer workflow file con GitHub Actions

4/18
Recursos

El primer desafío de este curso es crear un script básico que simplemente imprima "Hola mundo" en tu lenguaje de programación favorito. Por ejemplo, si te encanta Python, podrías escribir algo tan simple como un print('Hola mundo').

Si prefieres JavaScript, puede ser un console.log('Hola mundo'). Si eres usuario de Java, puedes usar System.out.println('Hola mundo');. La idea aquí es que uses el lenguaje con el que te sientas más cómodo.

¿Cómo crear un archivo de workflow en GitHub Actions?

Una vez que tienes tu script listo, el siguiente paso es crear un archivo de flujo de trabajo. Este archivo se utiliza para que GitHub Actions reconozca y ejecute su script correctamente.

Deberías crear un archivo llamado hola-mundo.yml. Luego, tu archivo de flujo de trabajo deberá simplemente ejecutar tu script de "Hola Mundo".

El archivo de workflow puede ser tan simple como asignar un nombre, crear un trabajo, asignar el tipo de runner que utilizará este trabajo y tener solo dos pasos. Primero, haz un "checkout" del repositorio para tenerlo listo en el runner, luego corre el archivo que creaste en el primer paso.

¿Cómo puede usar la plantilla pública proporcionada para iniciar tu primer GitHub Action?

El uso de la plantilla proporcionada es sencillo. Una vez que estés en el repositorio de la plantilla, puedes hacer clic derecho en el botón "Use this template" y elegir dónde quieres copiar la plantilla a tu repositorio personal.

Asegúrate de dejar el repositorio como público para que no incurras en ningún costo para usar GitHub Actions.

¿Cómo puedes comenzar a trabajar con la plantilla?

Tras copiar la plantilla, puedes comenzar a trabajar con ella. La plantilla incluye una serie de workflows y actions que puedes usar como base para crear la tuya propia. Cada una de las acciones está diseñada para ayudarte a entender las diferentes formas de utilizar GitHub Actions y para facilitar tu tarea de creación de tu primer archivo de flujo de trabajo.

Recuerda, la práctica lleva a la perfección, así que no dudes en experimentar y jugar con las diferentes configuraciones y opciones disponibles en GitHub Actions. ¡Buena suerte!

Aportes 23

Preguntas 1

Ordenar por:

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

JS

name: hola-mundo #Nombre del workflow
on: [push] #evento que lo activará
jobs: #Definición de los jobs
  hola-mundo: #Nombre del job
    runs-on: ubuntu-latest #Maquina en la que correrá
    steps: #Lista de steps del job hola-mundo
      - name: Public IP #Nombre del step
        id: ip #identificador usable dentro del job para otros steps
        uses: haythem/[email protected] #Usará el action haythem/public-ip
      - name: Hola mundo #Segundo step de nombre Hola mundo
        run: echo ¡Hola Mundo desde ${{ steps.ip.outputs.ipv4 }}! #bash
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: 18
      - name: Run index
        run: node index.js

Java

on: [push]
jobs:
  setup-java:
    runs-on: ubuntu-latest
    steps: 
      - name: Setup Java JDK
        uses: actions/[email protected]
        with: 
          distribution: oracle
          java-version: 17
          java-package: jdk
  run-java:
    runs-on: ubuntu-latest
    steps: 
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Compile and run Java Code
        run: |
          javac Entrada.java
          java Entrada
        
name: hola-mundo #Nombre del workflow
on: [push] #evento que lo activará
jobs: #Definición de los jobs
  hola-mundo: #Nombre del job
    runs-on: ubuntu-latest #Maquina en la que correrá
    steps: #Lista de steps del job hola-mundo
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: 18
      - name: Run index
        run: node index.js

para python

name: Python application

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]
jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Set up Python 3.10
      uses: actions/setup-python@v3
      with:
        python-version: "3.10"

    - name: script-runing
      run: python hello_world.py

En el branch aprendiendo-github-actions:

#hello_world.py
def hello_world():
	print("Hello World")

if __name__ == '__main__':
	hello_world()
#On /.github/workflows
#hola-mundo.yml
name: hola-mundo 
on:
  push:
    branches: [ "aprendiendo-github-actions" ]
jobs:
  hola-mundo:
    runs-on: ubuntu-latest
    steps:
      - name: Hola mundo
        run: python ../../hola_mundo.py #or just python hola_mundo.py
Para evitar errores a partir del paso 6, recomiendo NO subir los archivos manuales, sino desde una terminal de comandos como puede ser GIT clonando un repositorio. Es decir, recomiendo crear los archivos hola\_mundo.py y hola-mundo.yml en la maquina local, organizarlos y hacer el respectivo push al repositorio (después de haber verificado con un pull request puesto que del modo tradicional genera un conflicto con el readme)
En mi repo <https://github.com/jarvars/GitHubActionsCourse> Mi workflow: ```js name: Hello-World on: [push] jobs: Hello-World: runs-on: ubuntu-22.04 defaults: run: working-directory: ./src steps: - uses: actions/checkout@v3 - name: Setup dotnet uses: actions/setup-dotnet@v3 with: dotnet-version: 6.0.x - name: Restore dependencies run: dotnet restore - name: Build run: dotnet build --no-restore - name: Test run: dotnet test --no-build --verbosity normal ```

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)
Un ejemplo usando python: ```python on: push: branches: - 'main' 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: Print Hello World run: python hello-world.py ```![](https://drive.google.com/file/d/1RPGeYfz5G7gfCGVE3ApQnOg9S6oH0hXE/view?usp=drivesdk)

Mi workflow hecho con golang 😃

name: hello-world
on: [push]
jobs:
  hello-world:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2
      - name: setup golang
        uses: actions/setup-go@v2
        with:
          go-version: '1.20.0'
      - name: hello-world
        run: go run main.go
![](https://static.platzi.com/media/user_upload/image-c031ff2f-6959-46ce-9a4b-df4fa09f4a83.jpg)
Workflow con JS ![](https://static.platzi.com/media/user_upload/image-c08e742c-d033-4392-a864-9d4c87449a4e.jpg)![]()
la mas simple de todas con javascript y nodename: hellow world on:  push:    branches:  \[reto-1] jobs:  deploy:    runs-on: ubuntu-latest        steps:       - uses: actions/checkout@v4            - uses: actions/setup-node@v4         with:           node-version: 19       - name: hellow         run: node index.js ```js name: hellow world on: push: branches: [reto-1] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 19 - name: hellow run: node index.js ```
``` name: hola-mundoon: push: branches: \[ "main" ] pull\_request: branches: \[ "main" ]jobs: setup-go: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: '1.16.1' *# The Go version to download (if necessary) and use.* - name: execute-hello-world run: go run hello.go ```
a alguien mas le aparece la seccion de recursos vacia?
El flujo básico de un archivo de GitHub Actions, contiene lo siguiente \- name: nombre del workflow. \- on: nombre del evento, encerrado en una lista. \- jobs: los pasos que tendrá el workflow. \- nombre\_del\_job: abajo de jobs, vendría el nombre del mismo para mostrarlo en la interfaz de GitHub. \- runs-on: nombre de la máquina en la que correrá el job, suele ser por excelencia "ubuntu-latest". \- steps: las tareas o acciones que tendrá el job, seguido de todas ellas name: my-wf on: \[pull\_request] jobs: my-wf-jobs: runs-on: ubuntu-latest steps: \- name: First step run: echo "First step" id: first\_step \- name: Reusing output run: echo 'Reusing step ${{steps.first\_step.outputs}}' \- name: Clone repository uses: actions/checkout@v2 \- name: Setup Node uses: actions/setup-node@v1 \- name: Clean dependencies run: rm -rf node\_modules package-lock.json yarn-lock.json \- name: npm install run: npm install \- name: test run: npm run test \- name: build run: npm run build
![](https://static.platzi.com/media/user_upload/image-056e3e5a-2000-4edf-b426-a6616f96affa.jpg)
<https://github.com/soymegh>
This is my hello world: name: Rust on: push: branches: \[ "main" ] pull\_request: branches: \[ "main" ] env: CARGO\_TERM\_COLOR: always jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Move to directory run: cd hello\_github\_actions - name: Build run: cargo build --verbose - name: Run tests run: cargo test --verbose - name: run run: cargo run
![](<Descargas/Captura de pantalla 2023-09-25 181642.png>)

Al momento de crear el pull request no me parecieron de forma automática los cambios (aquellos hechos mediante la action) (minuto 7:52). No sé si a alguien más le pasó lo mismo.

```txt name: C# .NET Core Hello World on: push: branches: - aprendiendo-github-actions jobs: build: runs-on: ubuntu-latest defaults: run: working-directory: ./HelloWorldApp steps: - name: Checkout repository uses: actions/checkout@v3 - name: Setup .NET Core uses: actions/setup-dotnet@v3 with: dotnet-version: '7.x' # Specify the .NET version - name: Restore dependencies run: dotnet restore - name: Build the app run: dotnet build --configuration Release - name: Run the C# application run: dotnet run --project HelloWorldApp.csproj ```

Hola Juan

La clase se ve muy interesante, sin embargo no es claro cual es el proposito y el resultado de crear WF en cualquiera de los branches, creería que puede tener mas valor realizar estos commits desde un entorno de desarrollo como vs-code, ademas no es tan buena practica agregar código de forma “manual/directa” a los repositorios.

saludos
AM