GitHub Actions e .NET
Nesta visão geral, você conhecerá a função que o GitHub Actions desempenha no desenvolvimento de aplicativos .NET. O GitHub Actions permite que os seus repositórios de código-fonte automatizem a CI (integração contínua) e a CD (entrega contínua). Além disso, o GitHub Actions expõe cenários mais avançados, fornecendo ganchos para automação com revisões de código, gerenciamento de branches e triagem de problemas. Com o código-fonte do .NET no GitHub, você pode aproveitar o GitHub Actions de várias maneiras.
GitHub Actions
O GitHub Actions representa comandos autônomos, como:
- actions/checkout – Essa ação faz check-out do repositório em
$GITHUB_WORKSPACE
, para que o fluxo de trabalho possa acessá-lo. - actions/setup-dotnet – Essa ação configura um ambiente da CLI do .NET para uso em ações.
- dotnet/versionsweeper – Essa ação faz uma varredura nos repositórios do .NET para versões de destino fora do suporte do .NET.
Embora esses comandos sejam isolados para uma só ação, eles são eficientes por meio da composição do fluxo de trabalho. Na composição do fluxo de trabalho, você define os eventos que disparam o fluxo de trabalho. Depois que um fluxo de trabalho está em execução, há vários trabalhos que ele é instruído a executar. Cada trabalho define qualquer número de etapas. As etapas delegam isso para o GitHub Actions ou, como alternativa, chamam scripts de linha de comando.
Para obter mais informações, confira Introdução ao GitHub Actions. Pense em um arquivo de fluxo de trabalho como uma composição que representa as várias etapas para criar, testar e/ou publicar um aplicativo. Muitos comandos da CLI do .NET estão disponíveis, e a maioria deles pode ser usada no contexto de uma Ação do GitHub.
GitHub Actions personalizadas
Embora haja muitas GitHub Actions disponíveis no Marketplace, talvez você queira criar uma própria. Você pode criar GitHub Actions que executam aplicativos .NET. Para obter mais informações, confira Tutorial: Criar uma Ação do GitHub com o .NET
Arquivo de fluxo de trabalho
As GitHub Actions são utilizadas por meio de um arquivo de fluxo de trabalho. O arquivo de fluxo de trabalho precisa estar localizado no diretório .github/workflows do repositório e precisa ser YAML (*.yml ou *.yaml). Os arquivos de fluxo de trabalho definem a composição do fluxo de trabalho. Um fluxo de trabalho é um processo automatizado configurável constituído de um ou mais trabalhos. Para obter mais informações, consulte Sintaxe do fluxo de trabalho para o GitHub Actions.
Exemplo de arquivos de fluxo de trabalho
Há muitos exemplos de arquivos de fluxo de trabalho do .NET fornecidos como tutoriais e guias de início rápido. Estes são vários bons exemplos de nomes de arquivos de fluxo de trabalho:
Nome do arquivo de fluxo de trabalho
Descrição
Compila o código-fonte. Se o código-fonte não for compilado, isso falhará.
Exercita os testes de unidade no repositório. Para executar testes, o código-fonte primeiro precisa ser compilado. Isso é realmente um fluxo de trabalho de build e teste (ele substitui o fluxo de trabalho build-validation.yml). A falha nos testes de unidade causará uma falha no fluxo de trabalho.
Empacota e publica o código-fonte em um destino.
Analisa o código quanto a vulnerabilidades de segurança e erros de codificação. Todas as vulnerabilidades descobertas podem causar uma falha.
Segredos criptografados
Para usar segredos criptografados nos seus arquivos de fluxo de trabalho, referencie os segredos usando a sintaxe de expressão de fluxo de trabalho do objeto de contexto secrets
.
${{ secrets.MY_SECRET_VALUE }} # The MY_SECRET_VALUE must exist in the repository as a secret
Os valores secretos nunca são impressos nos logs. Em vez disso, os nomes deles são impressos com um asterisco que representa os valores. Por exemplo, conforme cada etapa é executada em um trabalho, todos os valores que ele usa são uma saída para o log de ações. Os valores secretos são renderizados de maneira semelhante ao seguinte:
MY_SECRET_VALUE: ***
Importante
O contexto secrets
fornece o token de autenticação do GitHub com escopo no repositório, no branch e na ação. Ele é fornecido pelo GitHub sem nenhuma intervenção do usuário:
${{ secrets.GITHUB_TOKEN }}
Para obter mais informações, confira Como usar segredos criptografados em um fluxo de trabalho.
Eventos
Os fluxos de trabalho são disparados por muitos tipos diferentes de eventos. Além dos eventos de webhook, que são os mais comuns, também há eventos agendados e eventos manuais.
Exemplo de evento de webhook
O seguinte exemplo mostra como especificar um gatilho de evento de webhook para um fluxo de trabalho:
name: code coverage
on:
push:
branches:
- main
pull_request:
branches:
- main, staging
jobs:
coverage:
runs-on: ubuntu-latest
# steps omitted for brevity
No fluxo de trabalho anterior, os eventos push
e pull_request
vão disparar o fluxo de trabalho a ser executado.
Exemplo de evento agendado
O seguinte exemplo mostra como especificar um gatilho de evento agendado (trabalho cron) para um fluxo de trabalho:
name: scan
on:
schedule:
- cron: '0 0 1 * *'
# additional events omitted for brevity
jobs:
build:
runs-on: ubuntu-latest
# steps omitted for brevity
No fluxo de trabalho anterior, o evento schedule
especifica o cron
de '0 0 1 * *'
, que vai disparar a execução do fluxo de trabalho no primeiro dia de cada mês. A execução de fluxos de trabalho de acordo com um agendamento é ótimo para os fluxos de trabalho que levam muito tempo para serem executados ou para executar ações que exigem menos atenção.
Exemplo de evento manual
O seguinte exemplo mostra como especificar um gatilho de evento manual para um fluxo de trabalho:
name: build
on:
workflow_dispatch:
inputs:
reason:
description: 'The reason for running the workflow'
required: true
default: 'Manual run'
# additional events omitted for brevity
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: 'Print manual run reason'
if: ${{ github.event_name == 'workflow_dispatch' }}
run: |
echo 'Reason: ${{ github.event.inputs.reason }}'
# additional steps omitted for brevity
No fluxo de trabalho anterior, o evento workflow_dispatch
exige uma reason
como entrada. O GitHub vê isso, e a interface do usuário muda dinamicamente para solicitar ao usuário o motivo da execução manual do fluxo de trabalho. As steps
imprimirão o motivo fornecido pelo usuário.
Para obter mais informações, confira Eventos que disparam fluxos de trabalho.
CLI do .NET
A CLI (interface de linha de comando) do .NET é uma ferramenta multiplataforma para desenvolvimento, criação, execução e publicação de aplicativos .NET. A CLI do .NET é usada para a run
como parte das steps
individuais em um arquivo de fluxo de trabalho. Os comandos comuns incluem:
Para obter mais informações, confira Visão geral da CLI do .NET
Confira também
Para ver uma análise mais detalhada do GitHub Actions com o .NET, considere os seguintes recursos:
Guias de início rápido:
Tutoriais: