Observação: no momento, não há suporte para os executores hospedados no GitHub no GitHub Enterprise Server. Você pode ver mais informações sobre o suporte futuro planejado no GitHub public roadmap.
Visão geral
Use jobs.<job_id>.container
to create a container to run any steps in a job that don't already specify a container. If you have steps that use both script and container actions, the container actions will run as sibling containers on the same network with the same volume mounts.
If you do not set a container
, all steps will run directly on the host specified by runs-on
unless a step refers to an action configured to run in a container.
Note: The default shell for run
steps inside a container is sh
instead of bash
. This can be overridden with jobs.<job_id>.defaults.run
or jobs.<job_id>.steps[*].shell
.
Example: Running a job within a container
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)
When you only specify a container image, you can omit the image
keyword.
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 a ser usada 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 efetuar pull da imagem, use jobs.<job_id>.container.credentials
para definir um map
do username
e da password
. As credenciais são os mesmos valores que você fornecerá ao comando docker login
.
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
Use jobs.<job_id>.container.env
para definir um map
das variáveis de ambiente no contêiner.
Expondo portas de rede em um contêiner
Use jobs.<job_id>.container.ports
para definir uma array
das portas a serem expostas no contêiner.
Montando volumes em um contêiner
Use jobs.<job_id>.container.volumes
para definir uma array
de volumes para uso do contêiner. É 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 um caminho absoluto no computador 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, confira "Opções de docker create
".
Aviso: não há suporte para a opção --network
.