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
GitHub Actions oferece funcionalidades que permitem que você controle implantações. Você pode:
- Acionar fluxos de trabalho com uma série de eventos.
- Configurar ambientes para definir regras antes que um trabalho possa prosseguir e limitar o acesso a segredos.
- Usar a simultaneidade para controlar o número de implantações em execução por vês.
Para obter mais informações sobre a implantação contínua, consulte "Sobre a implantação contínua".
Pré-requisitos
Você deve estar familiarizado com a sintaxe de GitHub Actions. Para obter mais informações, consulte "Aprenda GitHub Actions".
Acionando a sua implantação
Você pode usar uma série de eventos para acionar seu fluxo de trabalho de implantação. Alguns dos mais comuns são: pull_request
, push
e workflow_despatch
.
Por exemplo, um fluxo de trabalho com os seguintes gatilhos é executado sempre que:
- Há um push para o branch
principal
. - Um pull request direcionado ao branch
principal
está aberto, sincronizado ou reaberto. - Alguém a aciona manualmente.
on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:
Para obter mais informações, consulte "Eventos que acionam fluxos de trabalho".
Usar ambientes
Os ambientes são usados para descrever um alvo geral de implantação como produção
, preparo
ou desenvolvimento
. Quando um fluxo de trabalho de GitHub Actions é implantado em um ambiente, o ambiente é exibido na página principal do repositório. Você pode usar ambientes para exigir aprovação para um trabalho para prosseguir, restringir quais branches podem acionar um fluxo de trabalho ou limitar o acesso a segredos. Para obter mais informações sobre criar ambientes, consulte "Usando ambientes para implantação".
Usando simultaneidade
A moeda garante que apenas um único trabalho ou fluxo de trabalho que usa o mesmo grupo de concorrência seja executado de cada vez. Você pode usar a concorrência para que um ambiente tenha, no máximo, uma implantação em andamento e uma implantação pendente por vez.
Observação: simultaneidade
e ambiente
não estão conectados. O valor da simultaneidade pode ser qualquer regra; não precisa ser o nome de um ambiente. Além disso, se outro fluxo de trabalho usar o mesmo ambiente, mas não especificar a equivalência, esse fluxo de trabalho não estará sujeito a nenhuma regra de simultaneidade.
Por exemplo, quando o fluxo de trabalho a seguir é executado, ele será pausado com o status pendente
se algum trabalho ou fluxo de trabalho que usa a simultaneidade de produção
estiver em andamento. Ele também cancelará qualquer trabalho ou fluxo de trabalho que usar o grupo de simultaneidade de produção
e tiver o status pendente
. Isto significa que haverá o máximo de uma execução e um trabalho pendente ou fluxo de trabalho no qual usa o grupo de concorrência de produção
.
name: Deployment
concurrency: production
on:
push:
branches:
- main
jobs:
deployment:
runs-on: ubuntu-latest
environment: production
steps:
- name: deploy
# ...deployment-specific steps
Você também pode especificar simultaneidade no nível do trabalho. Isso permitirá que outras tarefas no fluxo de trabalho prossigam mesmo se o trabalho simultâneo estará pendente
.
name: Deployment
on:
push:
branches:
- main
jobs:
deployment:
runs-on: ubuntu-latest
environment: production
concurrency: production
steps:
- name: deploy
# ...deployment-specific steps
Você também pode usar o cancel-in-progress
para cancelar qualquer trabalho ou fluxo de trabalho atualmente em execução no mesmo grupo de concorrência.
name: Deployment
concurrency:
group: production
cancel-in-progress: true
on:
push:
branches:
- main
jobs:
deployment:
runs-on: ubuntu-latest
environment: production
steps:
- name: deploy
# ...deployment-specific steps
Para orientação sobre a escrita de etapas específicas de implantação, consulte "Encontrando exemplos de implantação".
Visualizar histórico de implantação
Quando um fluxo de trabalho de GitHub Actions é implantado em um ambiente, o ambiente é exibido na página principal do repositório. Para obter mais informações sobre a visualização de implantações em ambientes, consulte "Visualizando histórico de implantação".
Monitoramento de fluxo de trabalho
Cada execução de fluxo de trabalho gera um gráfico em tempo real que ilustra o progresso da execução. Você pode usar este gráfico para monitorar e depurar implantações. Para obter mais informações, "Usando o gráfico de visualização".
Você também pode visualizar os registros de cada execução do fluxo de trabalho e o histórico de execuções do fluxo de trabalho. Para obter mais informações, consulte "Visualizar histórico de execução de fluxo de trabalho".
Rastreando implantações por meio de aplicativos
Você também pode criar um aplicativo que usa webhooks de status de implantação e implantação para rastrear implantações. Quando um trabalho de fluxo de trabalho faz referência a execuções de um ambiente, ele cria um objeto de implantação com a propriedade ambiente
definida para o nome do seu ambiente. À medida que o fluxo de trabalho avança, ele também cria objetos de estado de implantação com a propriedade ambiente
definida para o nome do seu ambiente. A propriedade environment_url
definida como URL para o ambiente (se especificado no fluxo de trabalho), e a propriedade estado
definida como estado do trabalho. Para obter mais informações, consulte "Apps" e "Eventos e cargas do Webhook."
Escolhendo um corredor
Você pode executar seu fluxo de trabalho de implantação em executores hospedados em GitHub ou em executores auto-hospedados. O tráfego dos executores hospedados em GitHub pode vir de uma ampla gama de endereços de rede. Se você estiver fazendo a implantação em um ambiente interno e sua empresa restringir o tráfego externo em redes privadas, os fluxos de trabalho de GitHub Actions em execução em executores hospedados em GitHub podem não conseguir comunicar-se com seus serviços ou recursos internos. Para superar isso, você pode hospedar seus próprios executores. Para obter mais informações, consulte "Sobre executores auto-hospedados" e "Sobre executores hospedados no GitHub."
Exibindo um selo de status
Você pode usar um selo de status para exibir o status do seu fluxo de trabalho de implantação. Um selo de status mostra se um fluxo de trabalho está falhando ou passando. Um lugar comum para adicionar um selo de status é o arquivo README.md
do seu repositório, mas você pode adicioná-lo a qualquer página da web que desejar. Por padrão, os selos exibem o status do seu branch-padrão. Também é possível exibir o status de uma execução de fluxo de trabalho para um branch ou evento específico usando os parâmetros de consulta do branch
e evento
na URL.
Para obter mais informações, consulte "Adicionando um selo de status do fluxo de trabalho".
Procurando exemplos de implantação
Este artigo mostrou as funcionalidades de GitHub Actions que você pode adicionar aos seus fluxos de trabalho de implantação.
GitHub Enterprise Server oferece fluxos de trabalho iniciantes de implantação para vários serviços populares, como o aplicativo Azure Web. Para aprender como começar a usar um fluxo de trabalho inicial, consulte "Usando fluxos de trabalho iniciais" ou procure a lista completa de starter de implantação fluxos de trabalho. Você também pode conferir nossos guias mais detalhados de fluxos de trabalho específicos para implantação como, por exemplo, "Efetuando a implantação no Azure App Service".
Muitos prestadores de serviço também oferecem ações em GitHub Marketplace para implantar no seu serviço. Para a lista completa, consulte GitHub Marketplace.