Descreva como construir um pipeline de CI/CD usando GitHub Actions para deploy em Azure

Question10

TagsAzure, GitHub Actions, CI/CD, DevOps

A construção de pipelines de CI/CD com GitHub Actions é uma abordagem moderna e eficiente para automatizar o ciclo de vida de aplicações, desde o build até o deploy em ambientes Azure, garantindo entregas rápidas, seguras e auditáveis.

[GitHub Actions] — Conceito-chave: Pipeline de CI/CD para GitHub Actions

GitHub Actions permite definir workflows automatizados, escritos em YAML, que são executados em resposta a eventos no repositório (como push, pull request ou tags). Esses workflows podem orquestrar etapas de build, testes, validações e deploy em serviços Azure, integrando-se nativamente com recursos como App Service, Azure Functions, Containers, entre outros.

O que é um pipeline de CI/CD?

Um pipeline de CI/CD (Continuous Integration/Continuous Deployment) é um conjunto de etapas automatizadas que garantem que o código seja integrado, testado e implantado de forma consistente. Com GitHub Actions, essas etapas são descritas em arquivos YAML localizados em .github/workflows/, permitindo versionamento e rastreabilidade.

Por que usar GitHub Actions para deploy em Azure Cloud?

  • Integração nativa com Azure: Ações oficiais facilitam autenticação e deploy em diversos serviços Azure.
  • Automação ponta a ponta: Desde o commit até o deploy, todo o fluxo é automatizado, reduzindo erros manuais.
  • Segurança: Secrets e permissões são gerenciados de forma segura via GitHub e Azure.
  • Flexibilidade: Suporta múltiplos ambientes, estratégias de deploy (blue/green, canary), e customização de etapas.
  • Observabilidade: Logs detalhados e notificações facilitam o monitoramento e troubleshooting.

[GitHub Actions] — Pipeline de CI/CD para Azure - Exemplo prático usando YAML

Considere o deploy automatizado de uma aplicação .NET para o Azure App Service. O workflow pode ser definido assim:

name: CI/CD para Azure App Service (.NET)

on:
  push:
    branches: [ main ]

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout do código
        uses: actions/checkout@v4

      - name: Setup .NET
        uses: actions/setup-dotnet@v4
        with:
          dotnet-version: '8.0.x'

      - name: Restaurar dependências
        run: dotnet restore

      - name: Build da aplicação
        run: dotnet build --configuration Release --no-restore

      - name: Rodar testes
        run: dotnet test --no-build --verbosity normal

      - name: Publicar artefatos
        run: dotnet publish -c Release -o ./publish

      - name: Login no Azure
        uses: azure/login@v2
        with:
          creds: $

      - name: Deploy para Azure App Service
        uses: azure/webapps-deploy@v3
        with:
          app-name: 'meu-app-dotnet'
          slot-name: 'production'
          package: './publish'

Destaques do pipeline:

  • O workflow é disparado a cada push na branch main.
  • O código é restaurado, buildado, testado e publicado.
  • O login no Azure utiliza um Service Principal seguro, armazenado em AZURE_CREDENTIALS.
  • O deploy é realizado usando a ação oficial do Azure para App Service.

Esse padrão pode ser adaptado para diferentes stacks (Node.js, Python, Java, containers) e serviços Azure, promovendo entregas contínuas, seguras e alinhadas às melhores práticas de DevOps.