Como é que o GitHub Actions automatiza as tarefas de desenvolvimento?

Concluído

Aqui, apresentaremos as ações e fluxos de trabalho do GitHub. Você aprenderá os tipos de ações que pode usar e onde encontrá-las. Você também verá exemplos desses tipos de ações e como elas se encaixam em um fluxo de trabalho.

O GitHub diminui o tempo desde a ideia à implementação

O GitHub foi concebido para ajudar as equipas de programadores e engenheiros DevOps a criar e a implementar aplicações rapidamente. Existem muitas funcionalidades no GitHub que permitem isto, mas geralmente enquadram-se numa das seguintes categorias:

  • Comunicação: Considere todas as maneiras pelas quais o GitHub facilita a comunicação de uma equipe de desenvolvedores sobre o projeto de desenvolvimento de software: revisões de código em solicitações pull, problemas do GitHub, quadros de projeto, wikis, notificações e assim por diante.
  • Automação: o GitHub Actions permite que sua equipe automatize fluxos de trabalho em todas as etapas do processo de desenvolvimento de software, desde a integração até a entrega e a implantação. Ele ainda permite automatizar a adição de rótulos para receber solicitações e verificar se há problemas obsoletos e solicitações pull.

Quando combinados, esses recursos permitiram que milhares de equipes de desenvolvimento diminuíssem efetivamente o tempo necessário desde a ideia inicial até a implantação.

Use a automação do fluxo de trabalho para diminuir o tempo de desenvolvimento

Vamos nos concentrar na automação neste módulo, então vamos tirar um momento para entender como as equipes podem usar a automação para reduzir a quantidade de tempo que leva para concluir um fluxo de trabalho típico de desenvolvimento e implantação.

Considere todas as tarefas que devem acontecer depois que o código é escrito, mas antes que você possa usar o código de forma confiável para a finalidade pretendida. Dependendo das metas da sua organização, você provavelmente precisará executar uma ou mais das seguintes tarefas:

  • Confirmar que o código passa todos os testes de unidade
  • Execute verificações de qualidade e conformidade do código para garantir que o código-fonte atenda aos padrões da organização
  • Verificar o código e as dependências quanto a problemas de segurança conhecidos
  • Compilar o código que integra a nova origem de (potencialmente) diferentes colaboradores
  • Confirmar se o software passa nos testes de integração
  • Versão da nova compilação
  • Entregar os novos binários na localização apropriada no sistema de ficheiros
  • Implementar os novos binários num ou mais servidores
  • Se alguma dessas tarefas não passar, reporte o problema ao indivíduo ou equipe adequada para resolução

O desafio é fazer essas tarefas de forma confiável, consistente e sustentável. Esta é uma tarefa ideal para a automatização do fluxo de trabalho. Se você já está confiando no GitHub, provavelmente desejará configurar sua automação de fluxo de trabalho usando as Ações do GitHub.

O que é o GitHub Actions?

As ações do GitHub são scripts empacotados para automatizar tarefas em um fluxo de trabalho de desenvolvimento de software no GitHub. Você pode configurar as Ações do GitHub para acionar fluxos de trabalho complexos que atendam às necessidades da sua organização; cada vez que os desenvolvedores verificam o novo código-fonte em uma ramificação específica, em intervalos cronometrados ou manualmente. O resultado é um fluxo de trabalho automatizado confiável e sustentável, que leva a uma diminuição significativa no tempo de desenvolvimento.

Onde pode encontrar o GitHub Actions?

O GitHub Actions são scripts que cumprem um formato de dados yml. Cada repositório tem uma guia Ações que fornece uma maneira rápida e fácil de começar a configurar seu primeiro script. Se você vir um fluxo de trabalho que você acha que pode ser um ótimo ponto de partida, basta selecionar o botão Configurar para adicionar o script e começar a editar o yml de origem.

Captura de tela da guia *Ações* em Ações do GitHub exibindo um fluxo de trabalho simples e um botão para configurar esse fluxo de trabalho.

No entanto, para além dos GitHub Actions em destaque no separador Ações, pode:

  • Procurar o GitHub Actions noGitHub Marketplace. O GitHub Marketplace permite-lhe descobrir e comprar ferramentas que estendem o fluxo de trabalho.
  • Procurar projetos open-source. Por exemplo, a organização GitHub Actions apresenta muitos repositórios populares de código aberto contendo Ações do GitHub que você pode usar.
  • Escrever os seus próprios GitHub Actions do zero. Adicionalmente, se assim o desejar, pode torná-los open source ou até mesmo publicá-los no GitHub Marketplace.

Usando ações do GitHub de código aberto

Muitas ações do GitHub são de código aberto e estão disponíveis para quem quiser usá-las. No entanto, assim como com qualquer software de código aberto, você precisa verificá-los cuidadosamente antes de usá-los em seu projeto. Semelhante aos padrões recomendados da comunidade com software de código aberto — como incluir um LEIA-ME, código de conduta, arquivo de contribuição e modelos de problema, apenas para citar alguns — você pode seguir estas recomendações ao usar as Ações do GitHub:

  • Analise o arquivo da ação para entradas e saídas action.yml e certifique-se de que o código faz o que diz que faz.
  • Verifique se a ação está no GitHub Marketplace. Esta é uma boa verificação, mesmo que uma ação não precise estar no GitHub Marketplace para ser válida.
  • Verifique se a ação está verificada no GitHub Marketplace. Isso significa que o GitHub aprovou o uso dessa ação. No entanto, você ainda deve revisá-lo antes de usá-lo.
  • Inclua a versão da ação que você está usando especificando uma ref, SHA ou tag do Git.

Tipos de ações do GitHub

Há três tipos de ações do GitHub: ações de contêiner, ações JavaScript e ações compostas.

Com as ações de contentores, o ambiente faz parte do código da ação. Estas ações só podem ser executadas num ambiente Linux que o GitHub aloja. As ações de contentores suportam muitos idiomas diferentes.

As ações JavaScript não incluem o ambiente no código. Você terá que especificar o ambiente para executar essas ações. Você pode executar essas ações em uma VM na nuvem ou no local. As ações JavaScript suportam ambientes Linux, macOS e Windows.

As ações compostas permitem combinar várias etapas do fluxo de trabalho em uma única ação. Por exemplo, você pode usar esse recurso para agrupar vários comandos de execução em uma ação e, em seguida, ter um fluxo de trabalho que executa os comandos agrupados como uma única etapa usando essa ação.

A anatomia de uma ação do GitHub

Aqui está um exemplo de uma ação que executa um check-out git de um repositório. Esta ação, ações/checkout@v1, faz parte de uma etapa de um fluxo de trabalho. Esta etapa também cria o código Node.js que foi feito check-out. Falaremos sobre fluxos de trabalho, trabalhos e etapas na próxima seção.

steps:
  - uses: actions/checkout@v1
  - name: npm install and build webpack
    run: |
      npm install
      npm run build

Suponha que quer utilizar uma ação de contentores para executar o código em contentores. A ação poderá ter o seguinte aspeto:

name: "Hello Actions"
description: "Greet someone"
author: "octocat@github.com"

inputs:
    MY_NAME:
      description: "Who to greet"
      required: true
      default: "World"

runs:
    uses: "docker"
    image: "Dockerfile"

branding:
    icon: "mic"
    color: "purple"

Observe a secção inputs. Aqui, você está obtendo o valor de uma variável chamada MY_NAME. Esta variável será definida no fluxo de trabalho que executa esta ação.

Na secção runs, observe que especifica docker no atributo uses. Ao fazer isso, você precisará fornecer o caminho para o arquivo de imagem do Docker. Aqui, é denominado Dockerfile. Não entraremos nos detalhes do Docker aqui, mas se você quiser mais informações, confira o módulo Introdução aos contêineres do Docker.

A última secção, imagem corporativa, personaliza a ação no GitHub Marketplace se decidir publicá-la.

Pode encontrar uma lista completa dos metadados de ações em Sintaxe dos metadados do GitHub Actions.

O que é um fluxo de trabalho do GitHub Actions?

Um fluxo de trabalho de Ações do GitHub é um processo que você configura em seu repositório para automatizar tarefas do ciclo de vida de desenvolvimento de software, incluindo Ações do GitHub. Com um fluxo de trabalho, você pode criar, testar, empacotar, liberar e implantar qualquer projeto no GitHub.

Para criar um fluxo de trabalho, adicione ações a um ficheiro .yml no diretório .github/workflows no repositório do GitHub.

No exercício que está por vir, seu arquivo de fluxo de trabalho, main.yml, terá esta aparência:

name: A workflow for my Hello World file
on: push
jobs:
  build:
    name: Hello world action
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - uses: ./action-a
      with:
        MY_NAME: "Mona"

Repare no atributo on:. Este é um acionador para especificar quando este fluxo de trabalho será executado. Aqui, ele dispara uma execução quando há um evento push para o repositório. Você pode especificar eventos únicos como on: push, uma matriz de eventos como on: [push, pull_request], ou um mapa de configuração de eventos que agenda um fluxo de trabalho ou restringe a execução de um fluxo de trabalho a arquivos, tags ou alterações de ramificação específicos. O mapa poderá ser semelhante ao seguinte:

on:
  # Trigger the workflow on push or pull request,
  # but only for the main branch
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
  # Also trigger on page_build, as well as release created events
  page_build:
  release:
    types: # This configuration does not affect the page_build event above
      - created

Um evento será acionado em todos os tipos de atividade do evento, a menos que especifique o tipo ou tipos. Para obter uma lista abrangente de eventos e seus tipos de atividade, consulte: Eventos que acionam fluxos de trabalho na documentação do GitHub.

Um fluxo de trabalho deve ter, pelo menos, uma tarefa. Um trabalho é uma seção do fluxo de trabalho associada a um corredor. Um corredor pode ser hospedado no GitHub ou auto-hospedado, e o trabalho pode ser executado em uma máquina ou em um contêiner. Você especificará o corredor com o runs-on: atributo. Aqui, você está dizendo ao fluxo de trabalho para executar esse trabalho no ubuntu-latest.

Cada trabalho terá passos a concluir. Em nosso exemplo, a etapa usa as ações/checkout@v1 de ação para fazer check-out do repositório. O que é interessante é o uses: ./action-a valor, que é o caminho para a ação de contêiner que você cria em um arquivo action.yml . Examinamos o conteúdo de um arquivo de action.yml na seção O que são ações do GitHub?

A última parte deste arquivo de fluxo de trabalho define o valor da MY_NAME variável para esse fluxo de trabalho. Lembre-se de que a ação do contêiner recebeu uma entrada chamada MY_NAME.

Para obter mais informações sobre sintaxe de fluxo de trabalho, consulte Sintaxe de fluxo de trabalho para ações do GitHub

Corredores hospedados no GitHub versus corredores auto-hospedados

Mencionámos brevemente os corredores como estando associados a um trabalho. Um runner é simplesmente um servidor que tem o aplicativo runner GitHub Actions instalado. No exemplo de fluxo de trabalho anterior, havia um runs-on: ubuntu-latest atributo dentro do bloco de trabalhos, que informava ao fluxo de trabalho que o trabalho será executado usando o corredor hospedado no GitHub que está sendo executado no ubuntu-latest ambiente.

Quando se trata de corredores, há duas opções para escolher: corredores hospedados no GitHub ou corredores auto-hospedados. Se você usar um runner hospedado no GitHub, cada tarefa será executada em uma nova instância de um ambiente virtual especificado pelo tipo de runner hospedado no GitHub que você definir, runs-on: {operating system-version}. Com corredores auto-hospedados, você precisa aplicar o rótulo auto-hospedado, seu sistema operacional e a arquitetura do sistema. Por exemplo, um corredor auto-hospedado com um sistema operacional Linux e arquitetura ARM32 teria a seguinte aparência: runs-on: [self-hosted, linux, ARM32].

Cada tipo de corredor tem seus benefícios, mas os corredores hospedados no GitHub oferecem uma maneira mais rápida e simples de executar seus fluxos de trabalho, embora com opções limitadas. Os corredores auto-hospedados são uma maneira altamente configurável de executar fluxos de trabalho em seu próprio ambiente local personalizado. Você pode executar corredores auto-hospedados no local ou na nuvem. Você também pode usar corredores auto-hospedados para criar uma configuração de hardware personalizada com mais poder de processamento ou memória para executar trabalhos maiores, instalar software disponível em sua rede local e escolher um sistema operacional não oferecido por corredores hospedados no GitHub.

O GitHub Actions pode ter limites de utilização

O GitHub Actions tem alguns limites de uso, dependendo do seu plano do GitHub e se o seu corredor é hospedado no GitHub ou auto-hospedado. Para obter mais informações sobre limites de uso, consulte Limites de uso, cobrança e administração na documentação do GitHub.