Skip to content

Commit a574ebd

Browse files
authored
Merge pull request #11 from Codout/claude/cleanup-broken-projectrefs
fix(ci): stop -p:Version cascade in dotnet pack; bump Data 6.3.0; drop unmaintained packages
2 parents c90afc5 + 2693926 commit a574ebd

9 files changed

Lines changed: 59 additions & 6 deletions

File tree

.github/release-packages.json

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
"api-dto": "Codout.Framework.Api.Dto/Codout.Framework.Api.Dto.csproj",
66
"application": "Codout.Framework.Application/Codout.Framework.Application.csproj",
77
"common": "Codout.Framework.Common/Codout.Framework.Common.csproj",
8-
"dp": "Codout.Framework.DP/Codout.Framework.DP.csproj",
98
"data": "Codout.Framework.Data/Codout.Framework.Data.csproj",
109
"domain": "Codout.Framework.Domain/Codout.Framework.Domain.csproj",
1110
"ef": "Codout.Framework.EF/Codout.Framework.EF.csproj",
@@ -20,8 +19,6 @@
2019
"mailer-sendgrid": "Codout.Mailer.SendGrid/Codout.Mailer.SendGrid.csproj",
2120
"multitenancy": "Codout.Multitenancy/Codout.Multitenancy.csproj",
2221
"softprime-multitenancy": "Codout.Multitenancy/Softprime.Multitenancy.csproj",
23-
"cosmos": "src/NetCore/Codout.Framework.NetCore.Repository.Cosmos/Codout.Framework.NetCore.Repository.Cosmos.csproj",
24-
"documentdb": "src/NetCore/Codout.Framework.NetCore.Repository.DocumentDB/Codout.Framework.NetCore.Repository.DocumentDB.csproj",
2522
"security-argon2": "src/Security/Codout.Security.Argon2/Codout.Security.Argon2.csproj",
2623
"security-bcrypt": "src/Security/Codout.Security.Bcrypt/Codout.Security.Bcrypt.csproj",
2724
"security-core": "src/Security/Codout.Security.Core/Codout.Security.Core.csproj",

.github/workflows/mcp-release.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,13 @@ jobs:
7070

7171
- name: Pack
7272
run: |
73+
# Mcp has no internal ProjectReferences today, so -p:Version would
74+
# not actively break anything here, but we still use only
75+
# -p:PackageVersion to stay consistent with release.yml and avoid
76+
# reintroducing the cascade trap if a ProjectReference is added
77+
# later. See release.yml for the full explanation.
7378
if [ -n "${{ steps.version.outputs.version }}" ]; then
7479
dotnet pack "$PROJECT" --configuration "$CONFIGURATION" --no-build \
75-
-p:Version=${{ steps.version.outputs.version }} \
7680
-p:PackageVersion=${{ steps.version.outputs.version }} \
7781
--output ./artifacts
7882
else

.github/workflows/release.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,15 @@ jobs:
116116
# Pack performs its own restore/build for the target. Some packages
117117
# (Cosmos, DocumentDB, etc.) are not part of Codout.Framework.sln, so
118118
# we deliberately do NOT pass --no-build here.
119+
#
120+
# IMPORTANT: when overriding the package version via workflow_dispatch,
121+
# use ONLY -p:PackageVersion=. Passing -p:Version= cascades to every
122+
# project in the build graph (including ProjectReferences), which
123+
# silently rewrites dependency versions in the generated .nuspec and
124+
# produces broken packages. -p:PackageVersion only affects the
125+
# outgoing package and leaves ProjectReference resolution alone.
119126
if [ -n "$VERSION" ]; then
120127
dotnet pack "$PROJECT" --configuration "$CONFIGURATION" \
121-
-p:Version="$VERSION" \
122128
-p:PackageVersion="$VERSION" \
123129
--output ./artifacts
124130
else

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,13 @@ versão afetados.
1515
### Build
1616

1717
- **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`.
18+
- **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.
19+
- **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.
20+
21+
### Codout.Framework.Data 6.3.0
22+
23+
#### Changed
24+
- 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=`.
1825

1926
### Codout.Framework.EF 6.3.0
2027

CLAUDE.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,20 @@ Quando o usuário pedir "gerar nova versão e publicar do pacote X" (ou equivale
5757
- **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).
5858
- **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.
5959

60+
## Pacotes excluídos do release automatizado
61+
62+
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:
63+
64+
- `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.
65+
- `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.
66+
- `src/NetCore/Codout.Framework.NetCore.Repository.DocumentDB` — idem.
67+
68+
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).
69+
70+
## Cuidados ao usar `dotnet pack`
71+
72+
**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.
73+
6074
## O que NÃO fazer
6175

6276
- ❌ Reintroduzir `<Version>` em `Directory.Build.props`.

Codout.Framework.DP/Codout.Framework.DP.csproj

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,15 @@
33
<PropertyGroup>
44
<Version>6.2.2</Version>
55
<TargetFramework>netstandard2.1</TargetFramework>
6+
<!--
7+
Unmaintained. Implementa uma versão antiga de IRepository<T> (Find em vez
8+
de Where, sem AllReadOnly/WhereReadOnly/WherePaged/Refresh/overloads com
9+
CancellationToken, FirstOrDefault/Any/Count/ToListAsync, etc.) e ainda
10+
referencia a pasta legada Codout.Framework.DAL (renomeada para
11+
Codout.Framework.Data há tempo). Não builda no estado atual. Para reviver
12+
é preciso reescrever DPRepository contra o IRepository<T> atual.
13+
-->
14+
<IsPackable>false</IsPackable>
615
</PropertyGroup>
716

817
<ItemGroup>

Codout.Framework.Data/Codout.Framework.Data.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<Version>6.2.2</Version>
4+
<Version>6.3.0</Version>
55
<Description>Interface da Biblioteca de persistência do Framework da Codout</Description>
66
<PackageTags>Codout;Framework;ORM;DAL;Repository;UnitOfWork;Specification;Auditing</PackageTags>
77
<GenerateDocumentationFile>true</GenerateDocumentationFile>

src/NetCore/Codout.Framework.NetCore.Repository.Cosmos/Codout.Framework.NetCore.Repository.Cosmos.csproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,14 @@
33
<PropertyGroup>
44
<Version>6.2.2</Version>
55
<TargetFramework>netcoreapp2.0</TargetFramework>
6+
<!--
7+
Unmaintained. Target netcoreapp2.0 saiu de suporte em 2018. Usa o SDK
8+
legado Microsoft.Azure.DocumentDB.Core (substituído por
9+
Microsoft.Azure.Cosmos). ProjectReferences apontam para projetos
10+
Codout.Framework.NetStandard.* que não existem mais no repo. Não builda.
11+
Excluído do release automatizado até ser revivido contra o stack atual.
12+
-->
13+
<IsPackable>false</IsPackable>
614
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
715
<Authors>Marcelo &amp; Clovis</Authors>
816
<Company>Codout</Company>

src/NetCore/Codout.Framework.NetCore.Repository.DocumentDB/Codout.Framework.NetCore.Repository.DocumentDB.csproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,14 @@
33
<PropertyGroup>
44
<Version>6.2.2</Version>
55
<TargetFramework>netcoreapp2.0</TargetFramework>
6+
<!--
7+
Unmaintained. Target netcoreapp2.0 saiu de suporte em 2018. Usa o SDK
8+
legado Microsoft.Azure.DocumentDB.Core (substituído por
9+
Microsoft.Azure.Cosmos). ProjectReferences apontam para projetos
10+
Codout.Framework.NetStandard.* que não existem mais no repo. Não builda.
11+
Excluído do release automatizado até ser revivido contra o stack atual.
12+
-->
13+
<IsPackable>false</IsPackable>
614
</PropertyGroup>
715

816
<ItemGroup>

0 commit comments

Comments
 (0)