Introdução: Por que CI/CD é crítico para projetos C# (.NET)
O desenvolvimento moderno de software é impossível sem automação. Processos manuais de build, teste e deploy não são apenas lentos, mas também propensos a erros. Para desenvolvedores C# que trabalham com o ecossistema .NET, a adoção de práticas de CI/CD (Continuous Integration / Continuous Deployment) tornou-se o padrão da indústria.
GitHub Actions é uma ferramenta poderosa e flexível para automatizar fluxos de trabalho, integrada diretamente ao GitHub. Ela permite criar pipelines (workflows) que reagem a eventos no repositório: pushes, criação de Pull Requests, releases e muito mais. Neste artigo, vamos detalhar como configurar um pipeline CI/CD completo para um projeto C# baseado em .NET usando GitHub Actions.
Você aprenderá como:
- Configurar o build automático do projeto.
- Executar testes de unidade (por exemplo, xUnit ou NUnit).
- Publicar artefatos de build.
- Fazer deploy automático da aplicação (por exemplo, no Azure, Docker Hub ou servidor).
1. Fundamentos do GitHub Actions: Workflow, Jobs e Steps
Antes de escrever código, vamos entender os conceitos básicos do GitHub Actions.
- Workflow: É um processo automatizado que você define em um arquivo YAML na pasta
.github/workflows. O workflow é acionado por um gatilho (ex: push na branch main). - Job: Um conjunto de steps (etapas) que são executados em um único runner (máquina virtual). Jobs podem ser executados sequencialmente ou em paralelo.
- Step: Um comando ou ação individual. Pode ser a execução de um script, instalação de dependências ou o uso de uma action pronta do marketplace.
- Runner: O servidor que executa seu workflow. O GitHub fornece runners gratuitos (Ubuntu, Windows, macOS), ou você pode executar o seu próprio.
Para projetos .NET, usaremos actions prontas como actions/checkout (para clonar o repositório) e actions/setup-dotnet (para instalar o .NET SDK).
2. Configuração de um pipeline CI básico: Build e Teste
Vamos criar nosso primeiro workflow. Para isso, na raiz do repositório, crie a pasta .github/workflows e dentro dela o arquivo dotnet-build.yml.
Aqui está o arquivo YAML mínimo para build e teste de um projeto C#:
name: .NET Build and Test
on: push: branches: [ main, develop ] pull_request: branches: [ main ]
jobs: build-and-test: runs-on: ubuntu-latest
steps: - name: Checkout repository uses: actions/checkout@v4
- name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: '8.0.x' # Especifique sua versão do .NET
- name: Restore dependencies run: dotnet restore
- name: Build run: dotnet build --no-restore --configuration Release
- name: Run tests run: dotnet test --no-build --configuration Release --verbosity normalAnalisando o código:
- name: Nome do workflow que será exibido no GitHub.
- on: Define os gatilhos. No nosso caso, push e pull request nas branches main e develop.
- jobs: Contém uma tarefa
build-and-testque é executada noubuntu-latest. - steps: Sequência de ações: clonagem do código, instalação do .NET 8.0, restauração dos pacotes NuGet, build na configuração Release e execução dos testes.
Após o push deste arquivo para o repositório, o GitHub Actions executará o workflow automaticamente. Você verá uma marca de seleção verde ou um 'X' vermelho ao lado