Skip to main content
Frecuentemente publicamos actualizaciones de nuestra documentación. Es posible que la traducción de esta página esté en curso. Para conocer la información más actual, visita la documentación en inglés. Si existe un problema con las traducciones en esta página, por favor infórmanos.

Esta versión de GitHub Enterprise se discontinuó el 2022-06-03. No se realizarán lanzamientos de patch, ni siquiera para problemas de seguridad críticos. Para obtener un mejor desempeño, más seguridad y nuevas características, actualiza a la última versión de GitHub Enterprise. Para obtener ayuda con la actualización, contacta al soporte de GitHub Enterprise.

Ejecutar trabajos en un contenedor

Utiliza un contenedor para ejecutar los pasos de un job.

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.

Resumen

Utiliza jobs.<job_id>.container para crear un contenedor para ejecutar cualquier paso en un job que aún no especifique un contenedor. Si tienes pasos que usan tanto acciones de script como de contenedor, las acciones de contenedor se ejecutarán como contenedores hermanos en la misma red con los mismos montajes de volumen.

Si no configuras un container, todos los pasos se ejecutan directamente en el host especificado por runs-on a menos que un paso se refiera a una acción configurada para ejecutarse en un contenedor.

Ejemplo: Ejecutar un job dentro de un contenedor

YAML
name: CI
on:
  push:
    branches: [ main ]
jobs:
  container-test-job:
    runs-on: ubuntu-latest
    container:
      image: node:14.16
      env:
        NODE_ENV: development
      ports:
        - 80
      volumes:
        - my_docker_volume:/volume_mount
      options: --cpus 1
    steps:
      - name: Check for dockerenv file
        run: (ls /.dockerenv && echo Found dockerenv) || (echo No dockerenv)

Cuando solo especificas una imagen de contenedor, puedes omitir la palabra clave image.

jobs:
  container-test-job:
    runs-on: ubuntu-latest
    container: node:14.16

Definir la imagen de contenedor

Utiliza jobs.<job_id>.container.image para definir la imagen de Docker a utilizar como el contenedor para ejecutar la acción. El valor puede ser el nombre de imagen de Docker Hub o un nombre de registro.

Definir las credenciales para un registro de contenedores

Si el registro del contenedor de la imagen requiere autenticación para extraerla, puedes utilizar jobs.<job_id>.container.credentials para configurar un map del username y password. Las credenciales son los mismos valores que proporcionarías al comando de docker login.

Ejemplo: definir las credenciales para un registro de contenedores

container:
  image: ghcr.io/owner/image
  credentials:
     username: ${{ github.actor }}
     password: ${{ secrets.github_token }}

Utilziar variables de ambiente con un contenedor

Utiliza jobs.<job_id>.container.env para configurar un map de variables ambientales en el contenedor.

Exponer puertos de red en un contenedor

Utiliza jobs.<job_id>.container.ports para configurar un array de puertos para exponer en el contenedor.

Montar volúmenes en un contenedor

Utiliza jobs.<job_id>.container.volumes para configurar un array de volúmenes para que lo utilice el contenedor. Puedes usar volúmenes para compartir datos entre servicios u otros pasos en un trabajo. Puedes especificar volúmenes Docker con nombre, volúmenes Docker anónimos o montajes de enlace en el host.

Para especificar un volumen, especifica la ruta de origen y destino:

<source>:<destinationPath>.

<source> es un nombre de volumen o una ruta absoluta en la máquina host, y <destinationPath> es una ruta absoluta en el contenedor.

Ejemplo: Montar volúmenes en un contenedor

volumes:
  - my_docker_volume:/volume_mount
  - /data/my_data
  - /source/directory:/destination/directory

Configurar las opciones de recursos de contenedor

Utiliza jobs.<job_id>.container.options para configurar opciones adicionales de recursos para los contenedores de Docker. Para obtener una lista de opciones, consulta las opciones "crear docker".

Advertencia: La opción --network no es compatible.