Observação: GitHub Actions estava disponível para GitHub Enterprise Server 2.22 como um beta limitado. O beta terminou. GitHub Actions está agora geralmente disponível em GitHub Enterprise Server 3.0 ou posterior. Para obter mais informações, consulte as observações sobre a versão GitHub Enterprise Server 3.0.
- Para obter mais informações sobre a atualização para GitHub Enterprise Server 3.0 ou posterior, consulte "Atualizar GitHub Enterprise Server".
- Para obter mais informações sobre a configuração de GitHub Actions após atualizar, consulte a documentação para GitHub Enterprise Server 3.0.
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.
Sobre as instruções do arquivo Docker
Um arquivo Docker
contém instruções e argumentos que definem o conteúdo e o comportamento inicial de um contêiner Docker. Para obter mais informações sobre o suporte de instruções do Docker, consulte "Referência do arquivo Docker" na documentação do Docker.
Instruções e substituições do arquivo Docker
Algumas instruções do Docker interagem com o GitHub Actions e um arquivo de metadados pode substituir algumas instruções do Docker. Certifique-se de que você esteja familiarizado com a forma como o arquivo Docker interage com GitHub Actions para evitar comportamento inesperado.
USUÁRIO
As ações do Docker devem ser executadas pelo usuário-padrão do Docker (raiz). Não use a instrução do USUÁRIO
no seu arquivo Docker
, pois você não poderá acessar o GITHUB_WORKSPACE
. Para obter mais informações, consulte "Usando variáveis de ambiente" e referência do USUÁRIO na documentação do Docker.
DE
A primeira instrução no arquivo Docker
deve ser DE
, que seleciona uma imagem-base para o Docker. Para obter mais informações, consulte referência DE na documentação do Docker.
Essas são algumas práticas recomendadas ao definir o argumento DE
:
- Recomendamos o uso de imagens oficiais do Docker. Por exemplo,
python
ouruby
. - Use uma tag da versão, se houver, preferencialmente com uma versão principal. Por exemplo, use
nó:10
em vez denó:latest
. - Recomendamos o uso das imagens do Docker com base no sistema operacional Debian.
WORKDIR
GitHub Enterprise Server define o caminho do diretório de trabalho na variável do ambiente GITHUB_WORKSPACE
. Recomendamos não usar a instrução WORKDIR
no seu arquivo Docker
. Antes de a ação ser executada, GitHub Enterprise Server irá montar o diretório GITHUB_WORKSPACE
na parte superior de qualquer que tenha sido o local na imagem do Docker e definir GITHUB_WORKSPACE
como o diretório de trabalho. Para obter mais informações, consulte "Usando variáveis do ambiente" e a referência do WORKDIR na documentação do Docker.
ENTRYPOINT
Se você definir o entrypoint
em um arquivo de metadados de uma ação, ele irá substituir o ENTRYPOINT
definido no arquivo Docker
. Para obter mais informações, consulte "sintaxe dos metadados para GitHub Actions."
A instrução do ENTRYPOINT
do Docker tem forma de shell e forma de exec. A documentação do ENTRYPOINT
do docker recomenda o uso da forma exec da instrução do ENTRYPOINT
. Para obter mais informações sobre as formas exec e shell, consulte a referência ENTRYPOINT na documentação do Docker.
Se você configurar o seu contêiner para usar a forma exec da instrução ENTRYPOINT
, os args
configurados no arquivo de metadados da ação não serão executados em um shell do comando. Se os args
da ação contiverem uma variável do ambiente, esta não será substituída. Por exemplo, usar o formato exec a seguir não imprimirá o valor armazenado em $GITHUB_SHA
. Em vez disso, imprimirá $GITHUB_SHA
.
ENTRYPOINT ["echo $GITHUB_SHA"]
Se você desejar uma substituição de variável, use a forma shell ou execute um shell diretamente. Por exemplo, ao usar o formato exec a seguir, você poderá executar um shell para imprimir o valor armazenado na variável do ambiente GITHUB_SHA
.
ENTRYPOINT ["sh", "-c", "echo $GITHUB_SHA"]
Para fornecer os args
definidos no arquivo de metadados da ação para um contêiner Dock que usa a forma exec no ENTRYPOINT
, recomendamos criar um script do shell denominado entrypoint.sh
que você pode acessar a partir da instrução ENTRYPOINT
:
Exemplo arquivo Docker
# Container image that runs your code
FROM debian:9.5-slim
# Copies your code file from your action repository to the filesystem path `/` of the container
COPY entrypoint.sh /entrypoint.sh
# Executes `entrypoint.sh` when the Docker container starts up
ENTRYPOINT ["/entrypoint.sh"]
Exemplo: arquivo entrypoint.sh
Ao usar o arquivo Docker acima, GitHub Enterprise Server, enviará os args
configurados no arquivo de metadados da ação como argumentos para oentrypoint.sh
. Adicione #!/bin/sh
shebang na parte superior do arquivo entrypoint.sh
para usar explicitamente o shell conforme o POSIX do sistema.
#!/bin/sh
# `$*` expands the `args` supplied in an `array` individually
# or splits `args` in a string separated by whitespace.
sh -c "echo $*"
O seu código deve ser executável. Certifique-se de que o arquivo entrypoint.sh
tenha permissões de execução
antes de usá-lo em um fluxo de trabalho. Você pode modificar as permissões a partir do seu terminal usando este comando:
chmod +x entrypoint.sh
Quando o script do shell de um ENTRYPOINT
não for executável, você receberá uma mensagem de erro semelhante à mensagem a seguir:
Resposta de erro do daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"/entrypoint.sh\": permission denied": unknown
CMD
Se você definir os args
no arquivo de metadados da ação, os args
irão substituir a instrução CMD
especificada no arquivo Docker
. Para obter mais informações, consulte "Sintaxe dos metadados para GitHub Actions}".
Se você usar CMD
no seu arquivo Docker
, siga essas diretrizes:
- Documente os argumentos necessários no README das ações e omita-os da instrução
CMD
. - Use padrões que permitam o uso da ação sem especificação de
args
. - Se a ação expõe uma bandeira
--help
ou algo parecido, use isso para fazer sua ação se auto-documentar.
Recursos compatíveis com o Linux
GitHub Actions suporta os recursos-padrão compatíveis com o Linux que são compatíveis com o Docker. Não é possível adicionar ou remover recursos. Para obter mais informações sobre os recursos-padrão compatíveis com o Linux e com o Docker, consulte "Privilégio do momento de execução e recursos do Linux" na documentação do Docker. Para aprender mais sobre os recursos do Linux, consulte "Visão geral dos recursos do Linux" nas páginas do manual do Linux.