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
]
}
🚀 Automatizando com GitHub Actions
A automação é feita via GitHub Actions. Sempre que o arquivo maturity.json
for modificado, o workflow:
- Faz login no Azure usando OIDC (sem
client-secret
) - Cria um container no ADLS Gen2, se necessário
- 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
🧾 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
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