Add CI/CD with GitHub Actions and document branching strategy#8
Add CI/CD with GitHub Actions and document branching strategy#8albertomandlate merged 5 commits intomainfrom
Conversation
Substitui o uso de `.ToList()` pela sintaxe de spread `[..enumerable]` ao passar a lista de transações para o construtor do DTO, tornando o código mais conciso e alinhado com práticas modernas do C#.
- Atualiza Dockerfile para imagens estáveis do .NET 10.0. - Adiciona metadados (PackageId, Title, Authors, AssemblyName) ao BridgeBank.ML.csproj. - Refatora TreinadorClassificacao para usar record class com construtor primário e inicialização direta do MLContext. - Especifica tipo do modelo como TransformerChain<KeyToValueMappingTransformer>. - Adiciona usings necessários para ML.NET.
Cria workflows de CI (build + test em PRs) e Release (publicação NuGet e Docker Hub ao criar tags v*.*.*). Actualiza CONTRIBUTING.md com a estratégia de branches e instruções de configuração de secrets. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Este PR introduz pipelines de CI/CD com GitHub Actions e documenta a estratégia de branches/contribuição para suportar builds/testes automáticos e releases (NuGet + Docker) do BridgeBank.
Changes:
- Adiciona workflow de CI (build + testes + artefactos) para PRs e pushes em
main. - Adiciona workflow de Release por tag
v*.*.*para publicar pacotes NuGet e imagem Docker. - Atualiza
CONTRIBUTING.mdcom GitHub Flow, regras de PR e instruções de release/secrets.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
.github/workflows/ci.yml |
Pipeline de CI para restore/build/test e upload de resultados. |
.github/workflows/release.yml |
Pipeline de release por tag para empacotar/publicar NuGet e construir/publicar Docker. |
CONTRIBUTING.md |
Documenta branching strategy, processo de PR e instruções de CI/CD + secrets. |
src/BridgeBank.Api/Mappers/DtoMapper.cs |
Ajuste pequeno na criação da lista de transações do DTO. |
src/BridgeBank.Api/Dockerfile |
Atualiza imagens base .NET de 10.0-preview para 10.0. |
src/BridgeBank.ML/BridgeBank.ML.csproj |
Adiciona metadata básica de empacotamento para o pacote ML. |
src/BridgeBank.ML/Classificacao/TreinadorClassificacao.cs |
Refactor leve do treinador (primary constructor e tipagem do modelo). |
| public class TreinadorClassificacao(int? seed = 42) | ||
| { | ||
| private readonly MLContext _mlContext; | ||
|
|
||
| public TreinadorClassificacao(int? seed = 42) | ||
| { | ||
| _mlContext = new MLContext(seed); | ||
| } | ||
| private readonly MLContext _mlContext = new(seed); |
There was a problem hiding this comment.
O PR está descrito como focado em CI/CD e estratégia de branches, mas também altera código de runtime (TreinadorClassificacao, DtoMapper e Dockerfile) e metadata de pacote (BridgeBank.ML.csproj). Isto torna o objetivo/escopo do PR ambíguo e dificulta revisão/release notes. Sugestão: atualizar a descrição do PR para listar estas alterações, ou separar estas mudanças em PRs distintos (CI/CD vs ajustes de código/pacotes).
| <PackageId>Simansoft.BridgeBank.ML</PackageId> | ||
| <Title>Simansoft.BridgeBank.ML</Title> | ||
| <Authors>Simansoft</Authors> | ||
| <AssemblyName>Simansoft.BridgeBank.ML</AssemblyName> |
There was a problem hiding this comment.
O projeto BridgeBank.ML vai ser publicado no NuGet pelo workflow de release, mas este .csproj ficou com metadata bem mais incompleta do que os outros pacotes (ex.: BridgeBank.Core.csproj inclui RepositoryUrl/PackageProjectUrl, licença, PackageReadmeFile e define Version a partir de $(PackageVersion)). Sem isto, o pacote pode ficar sem links/licença/readme e com versionamento inconsistente. Sugestão: alinhar as propriedades de empacotamento com os restantes projetos packáveis (Core/Parsers/Generators).
| <AssemblyName>Simansoft.BridgeBank.ML</AssemblyName> | |
| <AssemblyName>Simansoft.BridgeBank.ML</AssemblyName> | |
| <Version>$(PackageVersion)</Version> | |
| <RepositoryUrl>$(RepositoryUrl)</RepositoryUrl> | |
| <PackageProjectUrl>$(PackageProjectUrl)</PackageProjectUrl> | |
| <PackageLicenseExpression>$(PackageLicenseExpression)</PackageLicenseExpression> | |
| <PackageReadmeFile>$(PackageReadmeFile)</PackageReadmeFile> |
.github/workflows/release.yml
Outdated
|
|
||
| permissions: | ||
| contents: read | ||
| packages: write |
There was a problem hiding this comment.
O workflow pede packages: write, mas não publica nada para GitHub Packages/ghcr.io (apenas NuGet.org e Docker Hub). Por princípio de menor privilégio, reduza as permissões para o mínimo necessário (por ex., manter apenas contents: read), evitando conceder escrita desnecessária ao GITHUB_TOKEN.
| packages: write |
|
@copilot apply changes based on the comments in this thread |
…write desnecessária Agent-Logs-Url: https://github.com/SimansoftMZ/BridgeBank/sessions/5b9a3e5a-f2e0-41c8-8577-735bebcaf173 Co-authored-by: albertomandlate <14326204+albertomandlate@users.noreply.github.com>
Applied all three review suggestions in commit
|
|
Parece estar tudo OK para a conclusão e merge do PR. |
|
|
||
| // Treinar | ||
| ITransformer modelo = pipeline.Fit(split.TrainSet); | ||
| TransformerChain<KeyToValueMappingTransformer> modelo = pipeline.Fit(split.TrainSet); |
There was a problem hiding this comment.
modelo está tipado como TransformerChain<KeyToValueMappingTransformer>, o que acopla este método ao último transformador do pipeline e torna futuras alterações do pipeline mais difíceis (qualquer mudança no último Append(...) muda o tipo). Nos restantes componentes ML do repo (ex.: BridgeBank.ML/Reconciliacao/TreinadorReconciliacao.cs), o padrão é usar ITransformer para o modelo treinado. Considere usar ITransformer (ou var) aqui para manter consistência e reduzir acoplamento.
| TransformerChain<KeyToValueMappingTransformer> modelo = pipeline.Fit(split.TrainSet); | |
| ITransformer modelo = pipeline.Fit(split.TrainSet); |
|
@copilot apply changes based on the comments in this thread |
Agent-Logs-Url: https://github.com/SimansoftMZ/BridgeBank/sessions/10419ff0-8745-4b34-b6d9-8fee8cbec606 Co-authored-by: albertomandlate <14326204+albertomandlate@users.noreply.github.com>
Done in commit |
BridgeBank.ML.csprojto align packaging metadata with other projects (RepositoryUrl, PackageProjectUrl, PackageLicenseExpression MIT, PackageReadmeFile, Version, IsPackable, PackageRequireLicenseAcceptance, README.md include)packages: writepermission fromrelease.ymlmodelotype inTreinadorClassificacao.csfromTransformerChain<KeyToValueMappingTransformer>toITransformerfor consistency and reduced coupling