Entenda as ações do GitHub
Você pode automatizar as etapas do processo de implantação usando um fluxo de trabalho. Cada vez que você faz uma alteração no seu código e confirma a alteração no seu repositório Git, o fluxo de trabalho executa seu processo predefinido. Um fluxo de trabalho pode verificar se seu código Bicep atende aos seus padrões de qualidade e, em seguida, automatizar as ações para implantar seus recursos no Azure. O processo é definido em uma definição de fluxo de trabalho que você cria.
O GitHub Actions é um recurso do GitHub. O GitHub também hospeda os repositórios Git que você usa para armazenar e compartilhar seu código com seus colaboradores. Quando você armazena seu código Bicep no GitHub, as Ações do GitHub podem acessar seu código para automatizar seus processos de implantação. Nesta unidade, você aprenderá sobre as Ações do GitHub.
O que é um fluxo de trabalho?
Um fluxo de trabalho é um processo configurável e repetível definido em um arquivo usado para testar e implantar seu código. Um fluxo de trabalho consiste em todas as etapas, na ordem correta, que você precisa executar.
Ao trabalhar com Ações do GitHub, você define a configuração do fluxo de trabalho em um arquivo YAML. Como um arquivo YAML de fluxo de trabalho é um arquivo de código, o arquivo é armazenado com o código Bicep no repositório Git em uma pasta chamada .github/workflows
. Um arquivo YAML é um arquivo de texto estruturado, semelhante a um arquivo de texto estruturado do Bicep. Você pode criar e editar um arquivo YAML com qualquer editor de texto. Neste módulo, você usará o Visual Studio Code como editor. A interface da Web do GitHub fornece ferramentas que você pode usar para exibir e editar seu arquivo YAML de fluxo de trabalho, colaborar na definição do fluxo de trabalho e gerenciar diferentes versões do arquivo de fluxo de trabalho usando confirmações e ramificações.
Corredores
Até agora, você implantou seus arquivos Bicep a partir do seu computador local. Depois de escrever um modelo Bicep, implante-o no Azure usando a CLI do Azure ou o Azure PowerShell. Essas ferramentas usam os recursos do seu computador para enviar o modelo para o Azure. Eles usam sua identidade pessoal para autenticá-lo no Azure e verificar se você tem as permissões para implantar os recursos.
Um fluxo de trabalho também precisa de acesso a um computador ou GPU com o sistema operacional e a plataforma de hardware corretos para que possa executar as ações de implantação. O GitHub Actions usa runners, que são computadores configurados para executar etapas de implantação para um fluxo de trabalho. Cada corredor já tem as ferramentas do Bicep e do Azure que você usou em módulos anteriores, para que ele possa fazer as mesmas coisas que você faz em seu próprio computador. Em vez de um humano executando comandos, o serviço Ações do GitHub instrui o executor a executar as etapas que você definiu no arquivo YAML do fluxo de trabalho.
O GitHub Actions fornece vários tipos de corredores para diferentes sistemas operacionais, como Linux ou Windows, e diferentes conjuntos de ferramentas. O GitHub gerencia esses corredores, para que você não precise manter nenhuma infraestrutura de computação para os corredores. Os corredores às vezes são chamados de corredores hospedados no GitHub ou corredores hospedados porque eles são hospedados em seu nome. Quando seu fluxo de trabalho é executado, um corredor hospedado é criado automaticamente. Quando a execução do fluxo de trabalho terminar, o corredor hospedado será excluído automaticamente. Você não pode acessar corredores hospedados diretamente, por isso é importante que seu fluxo de trabalho contenha todas as etapas necessárias para implantar sua solução.
Nota
Você pode criar um corredor personalizado chamado corredor auto-hospedado. Você pode criar um corredor auto-hospedado se tiver um software específico que precise executar como parte do seu fluxo de trabalho ou se precisar controlar com precisão como o corredor está configurado. Não discutimos corredores auto-hospedados neste módulo, mas fornecemos um link para mais informações na seção Resumo.
Acionadores
Você usa um gatilho para instruir as Ações do GitHub quando executar seu fluxo de trabalho. Você pode escolher entre vários tipos de gatilhos. Por enquanto, você usará um gatilho manual para dizer às Ações do GitHub quando começar a executar seu fluxo de trabalho. Mais adiante neste módulo, você aprenderá mais sobre outros tipos de gatilhos.
Passos
Uma etapa representa uma única operação que o fluxo de trabalho executa. Uma etapa é semelhante a um comando individual que você executa no Bash ou PowerShell. Para a maioria das implantações, você executa várias etapas em uma sequência. Você define a sequência e todos os detalhes de cada etapa em seu arquivo YAML de fluxo de trabalho.
O GitHub Actions oferece dois tipos de etapas:
- Executar etapas: você pode usar uma etapa de execução para executar um único comando ou uma sequência de comandos no Bash, PowerShell ou no shell de comando do Windows.
- Etapas de ação: uma etapa de ação é uma maneira conveniente de acessar muitos recursos diferentes sem escrever instruções de script. Por exemplo, há uma tarefa interna para implantar arquivos Bicep no Azure. Qualquer pessoa pode escrever uma ação e compartilhá-la com outros usuários. Um grande conjunto de tarefas comerciais e de código aberto estão disponíveis.
Algumas pessoas preferem usar instruções de script em vez de ações porque elas oferecem mais controle sobre o que é executado. Outras pessoas preferem usar ações para não terem que escrever e gerenciar scripts. Neste módulo, usaremos uma mistura de ambas as abordagens.
Tarefas
Em Ações do GitHub, um trabalho representa um conjunto ordenado de etapas. Você sempre tem pelo menos um trabalho em um fluxo de trabalho, e é comum ter mais de um trabalho quando você cria implantações complexas.
Nota
Você pode definir cada trabalho para ser executado em um corredor diferente. A execução de trabalhos em corredores diferentes é útil quando você cria e implanta soluções que precisam usar sistemas operacionais diferentes em diferentes partes do fluxo de trabalho do trabalho.
Por exemplo, suponha que você esteja criando um aplicativo iOS e o serviço de back-end do aplicativo. Você pode ter um trabalho que é executado em um corredor do macOS para criar o aplicativo iOS e outro trabalho que é executado em um corredor do Ubuntu ou do Windows para construir o back-end. Você pode até mesmo dizer ao fluxo de trabalho para executar os dois trabalhos simultaneamente, o que acelera a execução do fluxo de trabalho.
Exemplo de fluxo de trabalho básico
Agora que você já conhece os conceitos básicos do GitHub Actions, vamos ver uma definição simples de fluxo de trabalho no YAML:
name: learn-github-actions
on: [workflow_dispatch]
jobs:
say-hello:
runs-on: ubuntu-latest
steps:
- name: 'Run a one-line command'
run: echo "hello from GitHub Actions"
- name: 'Run a multi-line command'
run: |
echo "We'll add more steps soon."
echo "For example, we'll add our Bicep deployment step."
Vejamos cada parte do arquivo em detalhes:
name
é o nome do seu fluxo de trabalho. O nome é mostrado na interface web do GitHub.on
informa ao seu fluxo de trabalho quando executar. Nesse caso,on: [workflow_dispatch]
informa ao GitHub Actions que você deseja acionar manualmente o fluxo de trabalho.jobs
agrupa todos os trabalhos no seu fluxo de trabalho.say-hello
é o nome do seu primeiro e único trabalho neste fluxo de trabalho.runs-on
Instrui o fluxo de trabalho qual corredor usar quando ele executa o trabalho. Neste exemplo, o fluxo de trabalho é executado em um sistema operacional Ubuntu, que vem de um pool de corredores hospedados no GitHub.steps
Lista a sequência de etapas a serem executadas no trabalho. O exemplo YAML tem duas etapas. Ambas as etapas executam um script simples para ecoar algum texto. Cada passo tem umname
valor, que é legível por humanos. Você verá o nome nos logs do fluxo de trabalho. Para criar uma etapa de script de várias linhas, use o caractere pipe (|
) como mostrado no exemplo. Depois que a etapa for executada, você verá as saídas no log do fluxo de trabalho.
Importante
Em arquivos YAML, o recuo é importante. Dê uma olhada no exemplo YAML. Algumas linhas no YAML são recuadas por dois ou quatro espaços. Se você não recuar o arquivo corretamente, as Ações do GitHub não poderão interpretá-lo. O Visual Studio Code ajuda você a localizar e corrigir erros no recuo do arquivo YAML.