chore(infra): adicionar Dependabot para auto-update NuGet + GitHub Actions#369
Merged
Conversation
…tions Resolve #366 — gap pré-existente que se tornou explícito ao introduzir o primeiro prerelease (-beta.1) no Directory.Packages.props central durante a entrega da Story #30 (PR #365). Decisão Dependabot vs Renovate - Dependabot: nativo do GitHub, zero setup de App na org, suporte completo a Directory.Packages.props central + packages.lock.json em 17 projetos - Renovate: mais flexível mas requer instalação da App na org unifesspa-edu-br (decisão de plataforma fora do escopo desta issue) Configuração (.github/dependabot.yml) - 2 ecosystems: nuget (root) + github-actions (root) - Schedule semanal: segunda 06:00 BRT (timezone America/Belem) — antes do daily - Grouping inteligente para reduzir ruído: - opentelemetry (OpenTelemetry.* + Serilog.Sinks.OpenTelemetry — trem único) - wolverine (WolverineFx*) - ef-core (Microsoft.EntityFrameworkCore* + Npgsql*) - serilog (Serilog* exceto sink OTel) - kafka (Confluent.* + Apache.Avro) - testing (xunit + AwesomeAssertions + NSubstitute + Testcontainers + ArchUnit + coverlet) - github-actions-all (catch-all em 1 PR) - Major bumps SEMPRE manuais (ignored via update-types semver-major) — Wolverine 5→6, EF Core 10→11, .NET 10→11 exigem revisão arquitetural - open-pull-requests-limit: 5 (NuGet) + 2 (Actions) — evita inundação - Labels: chore + deps (NuGet) ou chore + ci (Actions); commit prefix chore(deps): / chore(ci): Documentação - Nova seção em CONTRIBUTING.md "Auto-update de dependências (Dependabot)" explicando schedule, grouping, tratamento dos PRs do bot e como adicionar novo grupo YAML validado via python yaml.safe_load. Closes #366
jf2s
approved these changes
May 10, 2026
Contributor
jf2s
left a comment
There was a problem hiding this comment.
Aprovado.
PR mecânico (YAML config + doc) que resolve gap pré-existente do repo. CI 5/5 verde. Codex skipou (esperado em PRs YAML/Markdown sem código produtivo).
Pontos validados:
- YAML schema parseado por
python yaml.safe_loadantes do push exclude-patternsem group é feature documentada do Dependabot (groupserilogexclui o sink OTel para evitar ambiguidade com groupopentelemetry)update-types: [\"version-update:semver-major\"]noignorebloqueia majors do auto-update mas NÃO bloqueia security advisories — esses vêm como Dependabot security updates separados que respeitam o ignore só para version updates, não para vulnerabilidades- timezone
America/Belem(Pará — UTC-3 sem DST) está consistente com a Unifesspa;America/Sao_Paulodaria offset diferente em períodos hipotéticos de DST mas hoje ambos retornam UTC-3 - Documentação encaixada na ordem certa do CONTRIBUTING.md (entre Dependências proibidas e Checklist), explicando schedule + grouping + tratamento dos PRs do bot
Pontos positivos:
- Commit message detalhado com decisão Dependabot vs Renovate ancorada e justificada
- Grouping pensado por trem técnico — reduz drasticamente ruído (1 PR opentelemetry em vez de 5+ PRs separados)
- Major bumps explícitos como manual — alinha com a prática estabelecida do repo de revisar Wolverine/EF Core/.NET com cuidado arquitetural
open-pull-requests-limitseparados por ecosystem (5 NuGet + 2 Actions) — evita inundação sem subutilizar Actions
Sem findings. Pode mergear para fechar #366.
marmota-alpina
added a commit
that referenced
this pull request
May 10, 2026
…369) PR #370 (Dependabot github-actions-all) abriu com 7 majors simultâneas (checkout v5→v6, setup-node v4→v6, upload-artifact v5→v7, docker/* v3→v4 e v5→v7) e foi fechado pelo bot ao detectar conflito com a refatoração do ci.yml no PR #372. Causa: o ignore semver-major existia só no ecosystem nuget; faltava no github-actions. Esta correção fecha o gap simetricamente. Majors de Actions ficam para PR manual — exigem revisão de release notes (Node.js runtime, inputs deprecados, sintaxe nova) que não cabe em bump em massa automatizado.
marmota-alpina
added a commit
that referenced
this pull request
May 10, 2026
…369) PR #370 (Dependabot github-actions-all) abriu com 7 majors simultâneas (checkout v5→v6, setup-node v4→v6, upload-artifact v5→v7, docker/* v3→v4 e v5→v7) e foi fechado pelo bot ao detectar conflito com a refatoração do ci.yml no PR #372. Causa: o ignore semver-major existia só no ecosystem nuget; faltava no github-actions. Esta correção fecha o gap simetricamente. Majors de Actions ficam para PR manual — exigem revisão de release notes (Node.js runtime, inputs deprecados, sintaxe nova) que não cabe em bump em massa automatizado.
This was referenced May 10, 2026
marmota-alpina
added a commit
that referenced
this pull request
May 10, 2026
Substitui os 6 PRs Dependabot abertos automaticamente após o merge da config #369 — todos fechados sem merge por dois bloqueios estruturais: gate org-member para bot (resolvido em #379) e lockfile drift transitivo NU1004 com --locked-mode. Em vez de esperar nova rodada semanal, batch manual regenera todos os 17 packages.lock.json via dotnet restore --force-evaluate. Directory.Packages.props - WolverineFx + companion EFC/Postgresql/Kafka: 5.32.1 → 5.39.0 (7 minors) - Microsoft.EntityFrameworkCore + companion InMemory/Relational/Design: 10.0.5 → 10.0.7 (2 patches) - Npgsql: 9.0.4 → 10.0.2 (major — validado via suite Outbox/Cascading completa: 71 testes integration Selecao + 10 Infra.Core, todos verdes) - OpenTelemetry.Extensions.Hosting: 1.15.2 → 1.15.3 (alinha com Exporter já em 1.15.3 entregue na Story #30) - Microsoft.NET.Test.Sdk: 18.3.0 → 18.5.1 (minor) - Microsoft.AspNetCore.Mvc.Testing: 10.0.0 → 10.0.7 (patches) .config/dotnet-tools.json - dotnet-reportgenerator-globaltool: 5.5.4 → 5.5.10 (6 patches) Validação - dotnet restore --force-evaluate: 20 projetos restaurados sem NU1004 - dotnet build UniPlus.slnx: 0 warning, 0 error (TreatWarningsAsErrors) - dotnet test UniPlus.slnx: 629 testes verdes, 0 falhas - 540 unit + arch - 8 Ingresso.IntegrationTests - 10 Infrastructure.Core.IntegrationTests (inclui OTel wiring E2E) - 71 Selecao.IntegrationTests (Outbox/Cascading com Wolverine 5.39 + EF Core 10.0.7 + Npgsql 10.0.2 reais via Testcontainers) Closes #380
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resumo
Resolve a issue #366 (criada como follow-up do PR #365 quando introduzimos o primeiro prerelease no
Directory.Packages.propscentral). Adiciona configuração Dependabot completa para auto-update de pacotes NuGet e GitHub Actions, com grouping inteligente para reduzir ruído e major bumps sempre manuais.Decisão: Dependabot vs Renovate
Directory.Packages.propscentral +packages.lock.jsonem 17 projetosunifesspa-edu-br(decisão de plataforma fora do escopo desta issue)Mudanças
.github/dependabot.yml(novo)2 ecosystems:
nuget(root) +github-actions(root)Schedule: semanal, segunda 06:00 BRT (
timezone: America/Belem) — antes do dailyGrouping inteligente para reduzir ruído (1 PR consolidado por trem):
opentelemetryOpenTelemetry.*+Serilog.Sinks.OpenTelemetry(trem único)wolverineWolverineFx*ef-coreMicrosoft.EntityFrameworkCore*+Npgsql*serilogSerilog*exceto o sink OTel (já no groupopentelemetry)kafkaConfluent.*+Apache.Avrotestinggithub-actions-allMajor bumps SEMPRE manuais (
ignore: update-types: [\"version-update:semver-major\"]) — Wolverine 5→6, EF Core 10→11, .NET 10→11 exigem revisão arquitetural (release notes, breaking changes, ADR se necessário)Limites:
open-pull-requests-limit: 5(NuGet) +2(Actions) — evita inundaçãoLabels e commits:
chore+deps(NuGet) ouchore+ci(Actions); commit prefixchore(deps):/chore(ci):(Conventional Commits-friendly conformedocs/guia-commits-e-integracao.md)CONTRIBUTING.mdNova seção "Auto-update de dependências (Dependabot)" entre
Dependências proibidaseChecklist antes de pedir merge. Explica:Validação
```bash
python3 -c "import yaml; yaml.safe_load(open('.github/dependabot.yml'))" # OK
```
GitHub valida o schema do
dependabot.ymlautomaticamente após o merge — se houver erro de sintaxe, aparece em Insights → Dependency graph → Dependabot.Próximos passos pós-merge
uniplus-webeuniplus-developers(issues separadas se aplicável)Closes #366