Observação: O suporte de GitHub Actions em GitHub Enterprise Server 2.22 é beta pública limitada. Para revisar os requisitos de armazenamento externo e solicitar acesso ao beta, consulte "Habilitar GitHub Actions e configurar o armazenamento".
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.
Introdução
Este guia mostra como criar um fluxo de trabalho que realiza uma criação do Docker e, em seguida, publica imagens do Docker no Docker Hub ou no GitHub Package Registry. Com um único fluxo de trabalho, você pode publicar imagens em um único registro ou em vários registros.
Observação: Se você desejar fazer push para outro registro do Docker de terceiros, o exemplo na seção "Publicar imagens em GitHub Package Registry" poderá servir como um bom modelo.
Pré-requisitos
Recomendamos que você tenha um entendimento básico das opções de configuração do fluxo de trabalho e de como criar um arquivo do fluxo de trabalho. Para obter mais informações, consulte "Aprenda GitHub Actions".
Você também pode achar útil ter um entendimento básico do seguinte:
- "Segredos criptografados"
- "Autenticação em um fluxo de trabalho"
- "Configurar o Docker para uso com o GitHub Package Registry"
Sobre a configuração da imagem
Este guia pressupõe que você tem uma definição completa para uma imagem Docker armazenada em um repositório GitHub. Por exemplo, seu repositório deve conter um arquivo Docker e quaisquer outros arquivos necessários para executar uma criação do Docker para criar uma imagem.
Neste guia, usaremos a ação build-push-action
do Docker para criar a imagem do Docker e enviá-la para um ou mais registros do Docker. Para obter mais informações, consulte build-push-action
.
Observação: GitHub Actions em your GitHub Enterprise Server instance pode ter acesso limitado a ações em GitHub.com ou GitHub Marketplace. Para obter mais informações, consulte "Comunicação entre os executores auto-hospedados e GitHub".
Publicar imagens no Docker Hub
Cada vez que criar uma nova versão no GitHub, você poderá acionar um fluxo de trabalho para publicar a sua imagem. O fluxo de trabalho no exemplo abaixo é executado quando o evento release
aciona com o tipo de atividade created
. Para obter mais informações sobre o evento release
, consulte "Events that trigger workflows.
No exemplo do fluxo de trabalho abaixo, usamos a ação build-push-action
do Docker para criar a imagem e, se a construção for bem-sucedida, faça o push da imagem criada para o Docker Hub.
Para fazer push para o Docker Hub, você deverá ter uma conta Docker Hub e ter criado um repositório Docker Hub. For more information, see "Pushing a Docker container image to Docker Hub" in the Docker documentation.
As opções build-push-action
necessárias para o Docker Hub são:
nome de usuário
esenha
: Este é o seu nome de usuário e senha do Docker Hub. Recomendamos armazenar seu nome de usuário e senha do Docker Hub como segredos para que não estejam expostos no seu arquivo de fluxo de trabalho. Para obter mais informações, consulte "Criando e usando segredos encriptados".repositório
: Seu repositório do Docker Hub no formatoDOCKER-HUB-NAMESPACE/DOCKER-HUB-REPOSITORY
.
nome: Publicar imagem do Docker
em:
versão:
tipos: [published]
trabalhos:
push_to_registry:
Nome: Push Docker image to Docker Hub
runs-on: ubuntu-latest
etapas:
- nome: Verificar repo
usa: actions/checkout@v2
- nome: Push to Docker Hub
usa: docker/build-push-action@v1
com:
nome de usuário: ${{ secrets.DOCKER_USERNAME }}
senha: ${{ secrets.DOCKER_PASSWORD }}
repositório: my-docker-hub-namespace/my-docker-hub-repository
tag_with_ref: true
O fluxo de trabalho acima verifica o repositório do GitHub e usa a ação build-push-action
para construir e push da imagem Docker. Ele define a opção build-push-action
opção tag_with_ref
para marcar automaticamente a imagem Docker construída com a referência Git do evento de fluxo de trabalho. Este fluxo de trabalho é acionado na publicação de uma versão do GitHub, de modo que a referência será a tag Git para a nova versão.
Publicar imagens em GitHub Package Registry
Cada vez que criar uma nova versão no GitHub, você poderá acionar um fluxo de trabalho para publicar a sua imagem. O fluxo de trabalho no exemplo abaixo é executado quando o evento release
aciona com o tipo de atividade created
. Para obter mais informações sobre o evento release
, consulte "Events that trigger workflows.
No exemplo abaixo, usamos a ação build-push-action
do Docker para criar a imagem do Docker, e se a criação for bem-sucedida, faça o push da imagem criada para GitHub Package Registry.
As opções de build-push-action
necessárias para GitHub Package Registry são:
nome de usuário
: Você pode usar o contexto${{ github.actor }}
para usar automaticamente o nome de usuário que acionou a execução do fluxo de trabalho. Para obter mais informações, consulte "Contexto e sintaxe de expressão para GitHub Actions".senha
: Você pode usar o segredoGITHUB_TOKEN
gerado automaticamente para a senha. Para obter mais informações, consulte "Permissões para o GITHUB_TOKEN".registro
: Deve ser definido comodocker.pkg.github.com
.repositório
: Deve ser definido no formatoOWNER/REPOSITORY/IMAGE_NAME
. Por exemplo, para uma imagem denominadaocto-image
armazenada no GitHub emhttp://github. Um/octo-org/octo-repo
, a opçãorepositório
deve ser definida comoocto-org/octo-repo/octo-image
.
nome: Publish Docker image
em:
versão:
tipos: [published]
trabalhos:
push_to_registry:
nome: Push Docker image to GitHub Packages
runs-on: ubuntu-latest
etapas:
- nome: Check out the repo
usa: actions/checkout@v2
- nome: Push to GitHub Packages
usa: docker/build-push-action@v1
com:
nome de usuário: ${{ github.actor }}
senha: ${{ secrets.GITHUB_TOKEN }}
registro: docker.pkg.github.com
repositório: my-org/my-repo/my-image
tag_with_ref: true
O fluxo de trabalho acima verifica o repositório do GitHub e usa a ação build-push-action
para construir e push da imagem Docker. Ele define a opção build-push-action
opção tag_with_ref
para marcar automaticamente a imagem Docker construída com a referência Git do evento de fluxo de trabalho. Este fluxo de trabalho é acionado na publicação de uma versão do GitHub, de modo que a referência será a tag Git para a nova versão.
Publicar imagens no Docker Hub e GitHub Package Registry
Em um único fluxo de trabalho, você pode publicar sua imagem do Docker em vários registros usando a ação build-push-action
para cada registro.
O exemplo do fluxo de trabalho a seguir usa as etapas build-push-action
das seções anteriores ("Publicar imagens para o Docker Hub" e "Publicar imagens em GitHub Package Registry") para criar um único fluxo de trabalho que faça push em ambos os registros.
nome: Publicar imagem do Docker
em:
versão:
tipos: [published]
trabalhos:
push_to_registries:
nome: Fazer push da imagem do Docker em múltiplos registros
runs-on: ubuntu-latest
etapas:
- nome: Verificar o repo
usa: actions/checkout@v2
- nome: Push to Docker Hub
usa: docker/build-push-action@v1
with:
nome de usuário: ${{ secrets.DOCKER_USERNAME }}
senha: ${{ secrets.DOCKER_PASSWORD }}
repositório: my-docker-hub-namespace/my-docker-hub-repository
tag_with_ref: true
- nome: Push to GitHub Packages
usa: docker/build-push-action@v1
com:
nome de usuário: ${{ github.actor }}
senha: ${{ secrets.GITHUB_TOKEN }}
registro: docker.pkg.github.com
repositório: my-org/my-repo/my-image
tag_with_ref: true
O fluxo de trabalho acima verifica o repositório GitHub e usa a ação construção-push-action
duas vezes para criar e fazer push da imagem do Docker Hub e GitHub Package Registry. Para ambas as etapas, ele define a opção construção-push-action
tag_with_ref
para marcar automaticamente a imagem do Docker criada com a referêcia do Git do evento do fluxo de trabalho. Este fluxo de trabalho é acionado na publicação de uma versão do GitHub. Portanto, a referência para ambos os registros será a tag do Git para a versão.