Observação: Executores hospedados em GitHub não são atualmente compatíveis com GitHub Enterprise Server. Você pode ver mais informações sobre suporte futuro planejado no Itinerário público do GitHub.
Visão Geral
Use jobs.<job_id>.container
para criar um contêiner para executar todas as etapas de um trabalho que já não especificam um contêiner. Se você tiver etapas que usam ações de script e de contêiner, as ações de contêiner serão executadas como contêineres irmãos na mesma rede e com as mesmas montagens de volume.
Se você não definir um container
, todas as etapas serão executadas diretamente no host especificado por runs-on
, a menos que uma etapa se refira a uma ação configurada para execução em um contêiner.
Exemplo: Executar um trabalho dentro de um contêiner
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)
Ao especificar somente uma imagem de contêiner, você pode omitir a palavra-chave image
.
jobs:
container-test-job:
runs-on: ubuntu-latest
container: node:14.16
Definindo a imagem do contêiner
Use jobs.<job_id>.container.image
para definir a imagem do Docker para usar como o contêiner para executar a ação. O valor pode ser o nome da imagem do Docker Hub ou um nome de registro.
Definindo credenciais para o registro de um contêiner
Se o registro de contêiner da imagem exigir autenticação para extrair a imagem, você pode usar as funções de .<job_id>.container.credentials
para definir um mapa
do nome de usuário
e senha
. As credenciais são os mesmos valores que você forneceria para o comando login do docker
.
Exemplo: Definindo credenciais para o registro de um contêiner
container:
image: ghcr.io/owner/image
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
Usando variáveis de ambiente com um contêiner
Usar jobs.<job_id>.container.env
para definir um mapa
de variáveis de ambiente no contêiner.
Expondo portas de rede em um contêiner
Use jobs.<job_id>.container.ports
para definir uma matriz
de portas para ser exposta no contêiner.
Montando volumes em um contêiner
Use jobs.<job_id>.container.volumes
para definir uma matriz
de volumes para o contêiner usar. É possível usar volumes para compartilhar dados entre serviços ou outras etapas em um trabalho. Você pode especificar volumes de nome Docker, volumes Docker anônimos ou vincular montagens no host.
Para especificar um volume, especifique o caminho de origem e destino:
<source>:<destinationPath>
.
<source>
é um nome de volume ou caminho absoluto na máquina host, e <destinationPath>
é um caminho absoluto no contêiner.
Exemplo: Montando volumes em um contêiner
volumes:
- my_docker_volume:/volume_mount
- /data/my_data
- /source/directory:/destination/directory
Definindo opções de recurso de contêiner
Use jobs.<job_id>.container.options
para configurar opções adicionais de recurso de contêiner do Docker. Para obter uma lista de opções, consulte "opções docker create
".
Aviso: A opção --network
não é compatível.