🌱 Automatizando Indicadores de Sustentabilidade com GitHub Actions e Azure Data Lake
Cláudio Filipe Lima Rapôso

Cláudio Filipe Lima Rapôso @sertaoseracloud

About: At NTT DATA Europe & Latam, my role as a Systems Architect harnesses the power of Typescript, Java and Phyton to creating robust and scalable solutions.

Location:
Brazil
Joined:
Jan 10, 2025

🌱 Automatizando Indicadores de Sustentabilidade com GitHub Actions e Azure Data Lake

Publish Date: May 14
0 0

Em projetos de sustentabilidade digital — como GreenOps e Green Software — é comum criar e manter critérios de maturidade em arquivos como maturity.json. Embora o formato JSON seja simples, ele precisa ser versionado, rastreável e armazenado com segurança em nuvem. Este artigo mostra como automatizar o envio e versionamento desse arquivo usando GitHub Actions e Azure Data Lake Storage Gen2 (ADLS Gen2), sem depender de etapas manuais ou ferramentas pesadas.


📘 Estrutura dos Dados: GreenOps e Green Software

A estrutura utilizada agrupa critérios de maturidade em dois blocos principais:

  • GreenOps: voltado à infraestrutura, observabilidade e governança em nuvem.
  • GreenSoftware: foca em desenvolvimento de software sustentável.

Cada item tem campos como id, título, descrição, pilar, categoria, relevante_para e criterio (nível de maturidade de 0 a 2).

Exemplo resumido do JSON:

{
  "GreenOps": [
    {
      "id": "GO001",
      "título": "Monitoramento centralizado de consumo energético",
      "descrição": "Coleta e visualização contínua de métricas de consumo de energia dos recursos de TI.",
      "pilar": "Observabilidade",
      "categoria": "infra",
      "relevante_para": ["cloud", "monitoramento"],
      "criterio": 2
    }
 // ... outros critérios
  ],
  "GreenSoftware": [
    {
      "id": "GS001",
      "título": "Medição de consumo energético no desenvolvimento",
      "descrição": "Ferramentas que medem o uso de CPU/memória durante a execução de funcionalidades de software.",
      "pilar": "Observabilidade",
      "categoria": "desenvolvimento",
      "relevante_para": ["linguagem", "ferramentas"],
      "criterio": 1
    }
 // ... outros critérios
  ]
}
Enter fullscreen mode Exit fullscreen mode

🚀 Automatizando com GitHub Actions

A automação é feita via GitHub Actions. Sempre que o arquivo maturity.json for modificado, o workflow:

  1. Faz login no Azure usando OIDC (sem client-secret)
  2. Cria um container no ADLS Gen2, se necessário
  3. Faz upload do arquivo, com nome incluindo a data do envio

Arquivo: .github/workflows/upload-data.yml

name: Upload Sustainability Data

on:
  push:
    paths: ["maturity.json"]

permissions:
  id-token: write
  contents: read

jobs:
  upload:
    runs-on: ubuntu-latest
    env:
      STORAGE_ACCOUNT: ${{ secrets.STORAGE_ACCOUNT }}

    steps:
      - name: Checkout repo
        uses: actions/checkout@v3

      - name: Login to Azure
        uses: azure/login@v1
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

      - name: Get current date
        id: date
        run: echo "date=$(date +'%Y/%m/%d')" >> $GITHUB_OUTPUT

      - name: Create container if not exists
        run: |
          az storage container create \
            --name sustainability-data \
            --account-name $STORAGE_ACCOUNT \
            --auth-mode login \
            --fail-on-exist false

      - name: Upload JSON with date
        run: |
          az storage blob upload \
            --file maturity.json \
            --container-name sustainability-data \
            --name "raw/maturity-${{ steps.date.outputs.date }}.json" \
            --account-name $STORAGE_ACCOUNT \
            --auth-mode login
Enter fullscreen mode Exit fullscreen mode

🧾 Resultado Esperado

Após um push no repositório com alteração no maturity.json, o arquivo será salvo no ADLS Gen2 com o seguinte caminho:

sustainability-data/
└── raw/
    └── maturity-2025/05/06.json
Enter fullscreen mode Exit fullscreen mode

Esse versionamento garante:

  • Histórico de envios para rastreabilidade
  • Integração com pipelines de dados e dashboards
  • Armazenamento centralizado e seguro na nuvem

✅ Vantagens

  • Segurança: login via OIDC sem senhas armazenadas
  • Versionamento automático por data
  • Baixa complexidade técnica
  • Pronto para análises futuras com Spark, Synapse, etc.

🧩 Conclusão

Neste artigo, mostramos como transformar um simples arquivo maturity.json — contendo critérios de sustentabilidade como GreenOps e Green Software — em um ativo digital versionado, seguro e pronto para análises, usando apenas GitHub Actions e Azure Data Lake Storage Gen2.

Sem ferramentas adicionais, conseguimos:

✅ Automatizar o envio e versionamento de dados
✅ Padronizar uma estrutura JSON rica e auditável
✅ Integrar práticas sustentáveis com pipelines modernos
✅ Reduzir complexidade técnica e operativa

Esse tipo de automação ajuda organizações a tratarem sustentabilidade digital como algo contínuo, mensurável e governável — exatamente como tratamos qualidade, segurança ou performance.

Se você trabalha com ESG, FinOps, cloud ou engenharia de dados, esse processo pode ser adaptado para versionar outros indicadores como pegada de carbono, consumo energético ou eficiência de código.

Quer levar esse fluxo para o próximo nível? Fale comigo e posso te ajudar a integrar validação, métricas e até visualizações automáticas.

Segue o repositório: sertaoseracloud/Sustainability_Maturity_Tracker

Comments 0 total

    Add comment