Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .github/release-packages.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
"api-dto": "Codout.Framework.Api.Dto/Codout.Framework.Api.Dto.csproj",
"application": "Codout.Framework.Application/Codout.Framework.Application.csproj",
"common": "Codout.Framework.Common/Codout.Framework.Common.csproj",
"dp": "Codout.Framework.DP/Codout.Framework.DP.csproj",
"data": "Codout.Framework.Data/Codout.Framework.Data.csproj",
"domain": "Codout.Framework.Domain/Codout.Framework.Domain.csproj",
"ef": "Codout.Framework.EF/Codout.Framework.EF.csproj",
Expand All @@ -20,8 +19,6 @@
"mailer-sendgrid": "Codout.Mailer.SendGrid/Codout.Mailer.SendGrid.csproj",
"multitenancy": "Codout.Multitenancy/Codout.Multitenancy.csproj",
"softprime-multitenancy": "Codout.Multitenancy/Softprime.Multitenancy.csproj",
"cosmos": "src/NetCore/Codout.Framework.NetCore.Repository.Cosmos/Codout.Framework.NetCore.Repository.Cosmos.csproj",
"documentdb": "src/NetCore/Codout.Framework.NetCore.Repository.DocumentDB/Codout.Framework.NetCore.Repository.DocumentDB.csproj",
"security-argon2": "src/Security/Codout.Security.Argon2/Codout.Security.Argon2.csproj",
"security-bcrypt": "src/Security/Codout.Security.Bcrypt/Codout.Security.Bcrypt.csproj",
"security-core": "src/Security/Codout.Security.Core/Codout.Security.Core.csproj",
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/mcp-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,13 @@ jobs:

- name: Pack
run: |
# Mcp has no internal ProjectReferences today, so -p:Version would
# not actively break anything here, but we still use only
# -p:PackageVersion to stay consistent with release.yml and avoid
# reintroducing the cascade trap if a ProjectReference is added
# later. See release.yml for the full explanation.
if [ -n "${{ steps.version.outputs.version }}" ]; then
dotnet pack "$PROJECT" --configuration "$CONFIGURATION" --no-build \
-p:Version=${{ steps.version.outputs.version }} \
-p:PackageVersion=${{ steps.version.outputs.version }} \
--output ./artifacts
else
Expand Down
8 changes: 7 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -116,9 +116,15 @@ jobs:
# Pack performs its own restore/build for the target. Some packages
# (Cosmos, DocumentDB, etc.) are not part of Codout.Framework.sln, so
# we deliberately do NOT pass --no-build here.
#
# IMPORTANT: when overriding the package version via workflow_dispatch,
# use ONLY -p:PackageVersion=. Passing -p:Version= cascades to every
# project in the build graph (including ProjectReferences), which
# silently rewrites dependency versions in the generated .nuspec and
# produces broken packages. -p:PackageVersion only affects the
# outgoing package and leaves ProjectReference resolution alone.
if [ -n "$VERSION" ]; then
dotnet pack "$PROJECT" --configuration "$CONFIGURATION" \
-p:Version="$VERSION" \
-p:PackageVersion="$VERSION" \
--output ./artifacts
else
Expand Down
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,13 @@ versão afetados.
### Build

- **Repositório** — `<Version>` removido de `Directory.Build.props` e movido para cada `.csproj` publicável. Cada pacote agora evolui independentemente; alterações em um pacote não disparam mais um build novo dos demais. Pacotes que não tiveram alteração ficaram congelados em `6.2.2`.
- **CI** — Workflows `release.yml` e `mcp-release.yml` passaram a usar **somente** `-p:PackageVersion=` no `dotnet pack`. O `-p:Version=` anterior cascateava para todos os projetos do build graph (incluindo `ProjectReference`), o que reescrevia silenciosamente a versão das dependências no `.nuspec` e produzia pacotes com referências quebradas — sintoma observado em `Codout.Framework.EF 6.3.0`, publicado declarando `Codout.Framework.Data >= 6.3.0` enquanto Data estava em 6.2.2 no csproj.
- **Repositório** — Pacotes `Codout.Framework.DP`, `Codout.Framework.NetCore.Repository.Cosmos` e `Codout.Framework.NetCore.Repository.DocumentDB` marcados com `<IsPackable>false</IsPackable>` e removidos de `.github/release-packages.json`. Os três estão abandonados (DP implementa um `IRepository<T>` antigo e referencia a pasta `Codout.Framework.DAL` que não existe; Cosmos/DocumentDB targetam `netcoreapp2.0` e referenciam projetos `NetStandard.*` ausentes). Mass-release agora ignora os três; consulte `CLAUDE.md` antes de tentar revivê-los.

### Codout.Framework.Data 6.3.0

#### Changed
- Bump de versão técnico para alinhar com `Codout.Framework.EF 6.3.0`. **Não há alterações de código ou contrato** em `Codout.Framework.Data` — esta versão existe para satisfazer a dependência `Codout.Framework.Data >= 6.3.0` declarada (incorretamente) pelo pacote EF 6.3.0 já publicado. Pacotes futuros do EF voltarão a depender da versão minor real de Data, agora que o workflow não cascateia mais o `-p:Version=`.

### Codout.Framework.EF 6.3.0

Expand Down
14 changes: 14 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,20 @@ Quando o usuário pedir "gerar nova versão e publicar do pacote X" (ou equivale
- **Codout.Framework.Mcp**: usa workflow próprio (`.github/workflows/mcp-release.yml`) com passo `--validate` específico do CLI. Tag deve ser `mcp-v<X.Y.Z>` (NÃO use `mcp` como short-name no `release.yml` — está intencionalmente bloqueado por padrão de tag para evitar duplo release).
- **Mass release** (todos os pacotes de uma vez via `.github/workflows/mass-release.yml`): só execute se o usuário pedir explicitamente "mass release" ou "publicar todos". Mesmo assim, oriente o usuário a disparar via Actions UI com `dry_run: true` primeiro e revisar os artifacts antes de re-disparar com `dry_run: false`. Não tente disparar pela CLI sem autorização explícita.

## Pacotes excluídos do release automatizado

Os seguintes csproj têm `<IsPackable>false</IsPackable>` e **não** estão em `.github/release-packages.json`. Não tente publicá-los antes de modernizá-los:

- `Codout.Framework.DP` — implementa um `IRepository<T>` antigo (sem `Where`, `AllReadOnly`, `WherePaged`, `Refresh`, overloads de `CancellationToken`, etc.) e referencia a pasta legada `Codout.Framework.DAL` que não existe mais.
- `src/NetCore/Codout.Framework.NetCore.Repository.Cosmos` — `netcoreapp2.0` (fora de suporte), SDK legado `Microsoft.Azure.DocumentDB.Core`, refs pra projetos `NetStandard.*` que sumiram do repo.
- `src/NetCore/Codout.Framework.NetCore.Repository.DocumentDB` — idem.

Se o usuário pedir pra publicar um deles, **avise que está deprecated** e pergunte se quer fazer o port completo antes (não tente packar como está — vai falhar).

## Cuidados ao usar `dotnet pack`

**NUNCA passe `-p:Version=` no `dotnet pack`.** Essa propriedade cascateia para TODOS os projetos do build (incluindo `ProjectReference`), o que reescreve silenciosamente a versão das dependências no `.nuspec` gerado e produz pacotes com deps quebradas (ex.: `Codout.Framework.EF 6.3.0` declarando `Codout.Framework.Data >= 6.3.0` quando Data está em 6.2.2 no csproj). Para sobrescrever a versão do pacote alvo sem cascatear, use **apenas** `-p:PackageVersion=`. Os workflows já fazem assim — se for criar um novo, siga o mesmo padrão.

## O que NÃO fazer

- ❌ Reintroduzir `<Version>` em `Directory.Build.props`.
Expand Down
9 changes: 9 additions & 0 deletions Codout.Framework.DP/Codout.Framework.DP.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,15 @@
<PropertyGroup>
<Version>6.2.2</Version>
<TargetFramework>netstandard2.1</TargetFramework>
<!--
Unmaintained. Implementa uma versão antiga de IRepository<T> (Find em vez
de Where, sem AllReadOnly/WhereReadOnly/WherePaged/Refresh/overloads com
CancellationToken, FirstOrDefault/Any/Count/ToListAsync, etc.) e ainda
referencia a pasta legada Codout.Framework.DAL (renomeada para
Codout.Framework.Data há tempo). Não builda no estado atual. Para reviver
é preciso reescrever DPRepository contra o IRepository<T> atual.
-->
<IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion Codout.Framework.Data/Codout.Framework.Data.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<Description>Interface da Biblioteca de persistência do Framework da Codout</Description>
<PackageTags>Codout;Framework;ORM;DAL;Repository;UnitOfWork;Specification;Auditing</PackageTags>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@
<PropertyGroup>
<Version>6.2.2</Version>
<TargetFramework>netcoreapp2.0</TargetFramework>
<!--
Unmaintained. Target netcoreapp2.0 saiu de suporte em 2018. Usa o SDK
legado Microsoft.Azure.DocumentDB.Core (substituído por
Microsoft.Azure.Cosmos). ProjectReferences apontam para projetos
Codout.Framework.NetStandard.* que não existem mais no repo. Não builda.
Excluído do release automatizado até ser revivido contra o stack atual.
-->
<IsPackable>false</IsPackable>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>Marcelo &amp; Clovis</Authors>
<Company>Codout</Company>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@
<PropertyGroup>
<Version>6.2.2</Version>
<TargetFramework>netcoreapp2.0</TargetFramework>
<!--
Unmaintained. Target netcoreapp2.0 saiu de suporte em 2018. Usa o SDK
legado Microsoft.Azure.DocumentDB.Core (substituído por
Microsoft.Azure.Cosmos). ProjectReferences apontam para projetos
Codout.Framework.NetStandard.* que não existem mais no repo. Não builda.
Excluído do release automatizado até ser revivido contra o stack atual.
-->
<IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup>
Expand Down
Loading