Nota: GitHub Actions estuvo disponible para GitHub Enterprise Server 2.22 como un beta limitado. El beta terminó. GitHub Actions está ahora disponible habitualmente en GitHub Enterprise Server 3.0 o superior. Para obtener más información, consulta la sección de notas de lanzamiento para GitHub Enterprise Server 3.0.
- Para obtener más información acerca de cómo mejorar a GitHub Enterprise Server 3.0 o superior, consulta la sección "Mejorar a GitHub Enterprise Server".
- Para obtener más información acerca de configurar las GitHub Actions después de tu mejora, consulta la documentación de GitHub Enterprise Server 3.0.
Nota: Los ejecutores hospedados en GitHub no son compatibles con GitHub Enterprise Server actualmente. Puedes encontrar más información sobre el soporte que se tiene planeado en el futuro en el Itinerario público de GitHub.
Introducción
Esta guía te muestra los pasos mínimos necesarios para desarrollar una acción de contenedor de Docker. 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" en los registros o "Hello [who-to-greet]"si proporcionas un nombre personalizado.
Una vez que completes este proyecto, deberías comprender cómo crear tu propia acción de contenedor Docker y probarla en un flujo de trabajo.
Los ejecutores auto-hospedados deberán utilizar un sistema operativo Linux y tener Docker instalado para ejecutar las acciones de contenedores de Docker. Para obtener más información acerca de los requisitos de los ejecutores auto-hospedados, consulta la sección "Acerca de los ejecutores auto-hospedados".
Advertencia: Cuando crees flujos de trabajo y acciones siempre debes considerar si tu 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 obtener más información, consulta la sección "Entenderel riesgo de las inyecciones de scripts".
Prerrequisitos
Puede ser útil tener un entendimiento básico de variables de entorno de las GitHub Actions y del sistema de archivos de contenedor Docker:
Antes de comenzar, necesitarás crear un repositorio de GitHub.
-
Crea un repositorio nuevo en tu instancia de GitHub Enterprise Server. Puedes elegir cualquier nombre de repositorio o usar "hello-world-docker-action" como este ejemplo. Para obtener más información, consulta "Crear un repositorio nuevo".
-
Clona el repositorio en tu computadora. Para obtener más información, consulta "Clonar un repositorio".
-
Desde tu terminal, cambia los directorios en el repositorio nuevo.
Shell cd hello-world-docker-action
Crear un Dockerfile
En tu nuevo directorio hello-world-docker-action
, crea un nuevo archivo Dockerfile
. Para obtener más información, consulta al "Sporte de Dockerfile para GitHub Actions".
Dockerfile
# Imagen del contenedor que ejecuta tu código
FROM alpine:3.10
# Copias tu archivo de código de tu repositorio de acción a la ruta `/`del contenedor
COPY entrypoint.sh /entrypoint.sh
# Archivo del código a ejecutar cuando comienza el contedor del docker (`entrypoint.sh`)
ENTRYPOINT ["/entrypoint.sh"]
Crear un archivo de metadatos de una acción
Crea un archivo action.yml
nuevo en el directorio hello-world-docker
que creaste anteriormente. Para obtener más información, consulta la sección "Sintaxis de metadatos para GitHub Actions".
action.yml
# action.yml
name: 'Hello World'
description: 'Greet someone and record the time'
inputs:
who-to-greet: # id of input
description: 'Who to greet'
required: true
default: 'World'
outputs:
time: # id of output
description: 'The time we greeted you'
runs:
using: 'docker'
image: 'Dockerfile'
args:
- ${{ inputs.who-to-greet }}
Este metado define un parámetro de entrada who-to-greet
y uno de salida time
. Para pasar las entradas al contenedor de Docker, debes declarar la entrada usando inputs
y pasarla a la palabra clave args
.
GitHub creará una imagen desde tu Dockerfile
y ejecutar comandos en nuevo contenedor usando esta imagen.
Escribir el código de la acción
Puedes elegir cualquier imagen de Docker base y, por lo tanto, cualquier idioma para tu acción. El siguiente ejemplo de script del shell usa la variable de entrada who-to-greet
para imprimir "Hello [who-to-greet]" en el archivo de registro.
A continuación, el script obtiene la hora actual y la establece como una variable de salida que pueden usar las acciones que se ejecutan posteriormente en unt rabajo. Para que GitHub reconozca las variables de salida, debes usar un comando de flujo de trabajo en una sintaxis específica: echo ":: set-Output Name =<output name>::<value>"
. Para obtener más información, consulta "Comandos de flujo de trabajo para GitHub Actions".
-
Crea un archivo
entrypoint.sh
nuevo en el directoriohello-world-docker-action
. -
Agrega el siguiente código a tu archivo
entrypoint.sh
.entrypoint.sh
Shell #!/bin/sh -l echo "Hello $1" time=$(date) echo "::set-output name=time::$time"
Si
entrypoint.sh
se ejecuta sin errores, el estado de la acción se establece enexitoso
. También puedes establecer explícitamente códigos de salida en el código de tu acción para proporcionar el estado de una acción. Para obtener más información, consulta la sección "Configurar los códigos de salida para las acciones". -
Haz ejecutable tu archivo
entrypoint.sh
ejecutando el siguiente comando en tu sistema.Shell $ chmod +x entrypoint.sh
Crear un README
Puedes crear un archivo README para que las personas sepan cómo usar tu acción. Un archivo README resulta más útil cuando planificas el intercambio de tu acción públicamente, pero también es una buena manera de recordarle a tu equipo cómo usar la acción.
En tu directorio <hello-world-docker-action
, crea un archivo README.md
que especifique la siguiente información:
- Una descripción detallada de lo que hace la acción.
- Argumentos necesarios de entrada y salida.
- Argumentos opcionales de entrada y salida.
- Secretos que utiliza la acción.
- Variables de entorno que utiliza la acción.
- Un ejemplo de cómo usar tu acción en un flujo de trabajo.
README.md
# Acción de docker Hello world
Esta acción imprime "Hello World" o "Hello" + el nombre de una persona a quien saludar en el registro.
## Inputs
## `who-to-greet`
**Required** The name of the person to greet. Default `"World"`.
## Outputs
## `time`
The time we greeted you.
## Ejemplo de uso
uses: actions/hello-world-docker-action@v1
with:
who-to-greet: 'Mona the Octocat'
Confirmar, etiquetar y subir tu acción a GitHub Enterprise Server
Desde tu terminal, confirma tus archivos action.yml
, entrypoint.sh
, Dockerfile
, y README.md
.
También se recomienda agregarles una etiqueta de versión a los lanzamientos de tu acción. Para obtener más información sobre el control de versiones de tu acción, consulta la sección "Acerca de las acciones".
git add action.yml entrypoint.sh Dockerfile README.md
git commit -m "Mi primera acción está lista"
git tag -a -m "Mi primera versión de acción" v1
git push --follow-tags
Probar tu acción en un flujo de trabajo
Ahora estás listo para probar tu acción en un flujo de trabajo. Cuando una acción esté en un repositorio privado, la acción solo puede usarse en flujos de trabajo en el mismo repositorio. Las acciones públicas pueden ser usadas por flujos de trabajo en cualquier repositorio.
Nota: Las GitHub Actions en tu instancia de GitHub Enterprise Server podrían tener acceso limitado a las acciones en GitHub.com o en GitHub Marketplace. Para obtener más información, consulta "La comunicación entre ejecutores autoalojados y GitHub."
Ejemplo usando una acción pública
El siguiente código de flujo de trabajo utiliza la acción completa hello world en el repositorio público actions/hello-world-docker-action
. Copia el siguiente código de ejemplo de flujo de trabajo en un archivo .github/workflows/main.yml
, pero reemplaza actions/hello-world-docker-action
con tu nombre de repositorio y acción. También puedes reemplazar la entrada who-to-greet
con tu nombre.
.github/workflows/main.yml
on: [push]
jobs:
hello_world_job:
runs-on: ubuntu-latest
name: A job to say hello
steps:
- name: Hello world action step
id: hello
uses: actions/hello-world-docker-action@v1
with:
who-to-greet: 'Mona the Octocat'
# Use the output from the `hello` step
- name: Get the output time
run: echo "The time was ${{ steps.hello.outputs.time }}"
Ejemplo usando una acción privada
Copia el siguiente ejemplo de código de flujo de trabajo en un archivo .github/workflows/main.yml
en tu repositorio de acción. También puedes reemplazar la entrada who-to-greet
con tu nombre.
.github/workflows/main.yml
on: [push]
jobs:
hello_world_job:
runs-on: ubuntu-latest
name: A job to say hello
steps:
# To use this repository's private action,
# you must check out the repository
- name: Checkout
uses: actions/checkout@v2
- name: Hello world action step
uses: ./ # Uses an action in the root directory
id: hello
with:
who-to-greet: 'Mona the Octocat'
# Use the output from the `hello` step
- name: Get the output time
run: echo "The time was ${{ steps.hello.outputs.time }}"
Desde tu repositorio, da clic en la pestaña de Acciones y selecciona la última ejecución de flujo de trabajo. Debrás ver la frase "Hello Mona the Octocat" o el nombre que utilizaste para la entrada who-to-greet
y la marca de tiempo impresa en la bitácora.