Skip to main content

Crear una acción compuesta

En esta guía, aprenderás cómo crear una acción compuesta.

Introducción

En esta guía, aprenderás acerca de los componentes básicos necesarios para crear y usar una acción compuesta empaquetada. Para centrar esta guía en los componentes necesarios para empaquetar la acción, la funcionalidad del código de la acción es mínima. La acción imprime "Hello World" y después "Goodbye", o si proporcionas un nombre personalizado, imprime "Hello [who-to-greet]" y luego "Goodbye". La acción también asigna un número aleatorio a la variable de salida random-number y ejecuta un script denominado goodbye.sh.

Una vez que completes este proyecto, deberías comprender cómo crear tu propia acción compuesta y probarla en un flujo de trabajo.

Advertencia: Cuando cree flujos de trabajo y acciones, siempre debe considerar si el código podría ejecutar entradas no confiables de atacantes potenciales. Se tratará a algunos contextos como una entrada no confiable, ya que un atacante podrían insertar su propio contenido malintencionado. Para más información, vea "Descripción del riesgo de las inyecciones de scripts".

Prerrequisitos

Antes de comenzar, deberás crear un repositorio en GitHub.com.

  1. Crea un repositorio público nuevo en GitHub.com. Puede elegir cualquier nombre de repositorio o usar el ejemplo hello-world-composite-action siguiente. Puedes agregar estos archivos después de que tu proyecto se haya subido a GitHub. Para más información, vea "Creación de un repositorio".

  2. Clona tu repositorio en tu computadora. Para más información, vea "Clonación de un repositorio".

  3. Desde tu terminal, cambia los directorios en tu repositorio nuevo.

    cd hello-world-composite-action
  4. En el repositorio hello-world-composite-action, cree un archivo denominado goodbye.shy agregue el código de ejemplo siguiente:

    echo "Goodbye"
    
  5. Desde el terminal, convierta goodbye.sh en ejecutable.

    chmod +x goodbye.sh
  6. Desde el terminal, registre el archivo goodbye.sh.

    git add goodbye.sh
    git commit -m "Add goodbye script"
    git push

Crear un archivo de metadatos de una acción

  1. En el repositorio hello-world-composite-action, cree un archivo denominado action.yml y agregue el código de ejemplo siguiente. Para más información sobre esta sintaxis, vea "runs para obtener una acción compuesta".

    **action.yml**
    
    name: 'Hello World'
    description: 'Greet someone'
    inputs:
      who-to-greet:  # id of input
        description: 'Who to greet'
        required: true
        default: 'World'
    outputs:
      random-number:
        description: "Random number"
        value: ${{ steps.random-number-generator.outputs.random-number }}
    runs:
      using: "composite"
      steps:
        - run: echo Hello ${{ inputs.who-to-greet }}.
          shell: bash
        - id: random-number-generator
          run: echo "::set-output name=random-number::$(echo $RANDOM)"
          shell: bash
        - run: echo "${{ github.action_path }}" >> $GITHUB_PATH
          shell: bash          
        - run: goodbye.sh
          shell: bash
    

    Este archivo define la entrada who-to-greet, asigna el número generado aleatoriamente a la variable de salida random-number y ejecuta el script goodbye.sh. También le dice al ejecutor cómo ejecutar la acción compuesta.

    Para más información sobre cómo administrar salidas, vea "outputs para obtener una acción compuesta".

    Para más información sobre cómo usar github.action_path, vea "github context".

  2. Desde el terminal, registre el archivo action.yml.

    git add action.yml
    git commit -m "Add action"
    git push
  3. Desde tu terminal, agrega una etiqueta. En este ejemplo se usa una etiqueta denominada v1. Para más información, vea "Acerca de las acciones".

    git tag -a -m "Description of this release" v1
    git push --follow-tags

Probar tu acción en un flujo de trabajo

En el siguiente código de flujo de trabajo se usa la acción "Hola mundo" completada que ha creado en "Creación de un archivo de metadatos de acción".

Copie el código de flujo de trabajo en un archivo .github/workflows/main.yml de otro repositorio, pero reemplace actions/hello-world-composite-action@v1 por el repositorio y la etiqueta que ha creado. También puede reemplazar la entrada who-to-greet por su nombre.

.github/workflows/main.yml

on: [push]

jobs:
  hello_world_job:
    runs-on: ubuntu-latest
    name: A job to say hello
    steps:
      - uses: actions/checkout@v3
      - id: foo
        uses: actions/hello-world-composite-action@v1
        with:
          who-to-greet: 'Mona the Octocat'
      - run: echo random-number ${{ steps.foo.outputs.random-number }}
        shell: bash

En el repositorio, haga clic en la pestaña Actions y seleccione la última ejecución de flujo de trabajo. La salida deberá incluir "Hello Mona the Octocat", el resultado del script de "Goodbye" y un número aleatorio.