4 Commits
4 changed files with 50 additions and 27 deletions

No files matched your search

+10 -4
View File
@@ -10,12 +10,18 @@ comprimido (versión antigua)**.
## Versión y control de versiones
- **Versión actual: 2.1.15.0** (rama `limpieza-2.1.8.0`; `main` = 2.1.7.0) (`Net.Business.Services.csproj`: `Version`,
- **Versión actual: 2.1.15.0** (rama única `main`; la rama `limpieza-2.1.8.0` se unió a `main` el 2026-10-20 por avance directo) (`Net.Business.Services.csproj`: `Version`,
`AssemblyVersion`, `FileVersion`). Cada versión tiene su commit; al publicar
se sube la versión (ver `publicar.ps1`).
se sube la versión (ver `publicar.ps1`, única forma de generar el zip; subir las TRES propiedades, el script falla si no coinciden).
- **Semver** (desde la 2.1.15): `MAJOR.MINOR.PATCH`; el cuarto número del `csproj` (.NET lo pide) va siempre en `0`.
`MAJOR` = cambia el contrato de la API y el WMS debe adaptarse (campo obligatorio nuevo, ruta distinta);
`MINOR` = funcionalidad nueva compatible (endpoint o campo opcional nuevo, aviso en `Message`);
`PATCH` = corrección o limpieza sin cambio de contrato. Etiquetas de git nuevas sin el cuarto número (`v2.1.15`;
las anteriores, como `v2.1.7.0`, no se tocan). Una versión de prueba para QA puede ir en `Version` como
`2.2.0-rc.1`, pero `AssemblyVersion`/`FileVersion` solo aceptan dígitos (`2.2.0.0`).
- **Git**: rama `main`, remoto `origin` =
`http://100.68.242.27:30000/george/itca_api_sap_wms.git` (HTTP sin cifrar,
red interna; confirmar que el repositorio sea **privado**). Etiqueta
`https://unasgeorge.vaquita-hadar.ts.net/george/itca_api_sap_wms.git` (cambiado desde
`http://100.68.242.27:30000/...`; confirmar que el repositorio sea **privado**). Etiqueta
`v2.1.7.0` = último estado antes de la limpieza de código.
- `appsettings.json` y `appsettings.*.json` están en `.gitignore` (solo se
versiona `appsettings.example.json`); las credenciales no están en el
@@ -4,8 +4,8 @@
<TargetFramework>netcoreapp3.1</TargetFramework>
<AssemblyName>ITCA_API_SAP_WMS</AssemblyName>
<Version>2.1.15.0</Version>
<AssemblyVersion>2.1.12.0</AssemblyVersion>
<FileVersion>2.1.12.0</FileVersion>
<AssemblyVersion>2.1.15.0</AssemblyVersion>
<FileVersion>2.1.15.0</FileVersion>
<UserSecretsId>24763424-3300-4c85-87e3-503f8fdebd14</UserSecretsId>
<!-- Antes solo estaba condicionado a Debug|AnyCPU - un "dotnet publish -c Release"
(lo normal para IIS) se quedaba sin este archivo, y Startup.cs revienta con
+13 -10
View File
@@ -76,12 +76,15 @@ dotnet publish Net.Business.Services/Net.Business.Services.csproj -c Release -r
## Versión y script de publish
- La versión sale de `<Version>`/`<AssemblyVersion>`/`<FileVersion>` en
`Net.Business.Services/Net.Business.Services.csproj` (actual: **2.1.10.0** en la rama de limpieza; `main` = 2.1.7.0);
súbela en cada publish.
- `publicar.ps1` (solo Windows) genera `dist\ITCA_API_SAP_WMS_v<versión>.zip` sin
`appsettings.json`. Desde macOS se hace el mismo `dotnet publish` a mano con
`-p:HanaDll=...`, se borran `appsettings.json`/`appsettings.Development.json` de
la salida y se comprime.
`Net.Business.Services/Net.Business.Services.csproj` (actual: **2.1.15.0** en `main`);
súbela en cada publish. Se usa **semver** (`MAJOR.MINOR.PATCH`, cuarto número del
`csproj` siempre `0`): `MAJOR` cambia el contrato de la API, `MINOR` agrega funcionalidad
compatible, `PATCH` corrige o limpia sin cambio de contrato (detalle en `CLAUDE.md`).
- **Única forma de generar el zip**: `publicar.ps1` (Windows: `.\publicar.ps1`; macOS/Linux con PowerShell 7:
`pwsh ./publicar.ps1`). Genera `dist/ITCA_API_SAP_WMS_v<MAJOR.MINOR.PATCH>.zip` sin `appsettings.json` ni
`appsettings.Development.json`; `-Destino <carpeta>` además copia el zip ahí (p. ej. `-Destino ~/Desktop`).
Verifica que `Version`, `AssemblyVersion` y `FileVersion` del `csproj` coincidan. En macOS/Linux define antes
`export HanaDll=<ruta>/Sap.Data.Hana.Core.v2.1.dll`. No hacer el `dotnet publish` a mano.
- Control de versiones: rama `main` y etiquetas `vX.Y.Z.W` por versión
publicada (ver `CLAUDE.md`).
@@ -102,11 +105,11 @@ git switch -c recuperar-2.1.7.0 v2.1.7.0 # trabajar desde ahí en una rama nue
- Para **volver a publicar 2.1.7.0**: `git checkout v2.1.7.0` y generar el
publish como en "Versión y script de publish" (`AssemblyVersion` ya vale
2.1.7.0 en ese commit). Luego `git switch main` para regresar.
- Si la limpieza se une a `main` y hay que **deshacerla**, lo más seguro es
`git revert` del merge (no reescribe el historial). Evitar `git reset --hard`
- Para **deshacer** la limpieza ya unida a `main`: como fue avance directo (no hay commit de merge), usar
`git revert --no-commit v2.1.7.0..HEAD` y confirmar (no reescribe el historial). Evitar `git reset --hard`
y `git push --force` sobre `main`.
- La rama `main` no se toca durante la limpieza; el trabajo va en
`limpieza-2.1.8.0`.
- La limpieza se unió a `main` el 2026-10-20 (avance directo, sin commit de merge), por
lo que ya no hay una rama aparte; la etiqueta `v2.1.7.0` sigue siendo el punto de retorno.
## Logs de integración
+25 -11
View File
@@ -1,21 +1,35 @@
# Genera el publish para IIS y lo comprime como dist\ITCA_API_SAP_WMS_v<version>.zip
# La versión sale de <AssemblyVersion> en Net.Business.Services.csproj.
# UNICA forma de generar el zip del publish para IIS (Windows y macOS/Linux con PowerShell 7: pwsh ./publicar.ps1).
# Genera dist/ITCA_API_SAP_WMS_v<MAJOR.MINOR.PATCH>.zip a partir de <AssemblyVersion> de Net.Business.Services.csproj.
# El zip NO incluye appsettings.json ni appsettings.Development.json (no pisar los del servidor).
# Requiere Windows (el driver Sap.Data.Hana se referencia desde C:\Program Files\sap\hdbclient).
# -Destino <carpeta>: ademas copia el zip a esa carpeta (p. ej. el escritorio).
# Driver Sap.Data.Hana: en Windows sale de C:\Program Files\sap\hdbclient; en macOS/Linux definir antes la variable de entorno
# HanaDll con la ruta de Sap.Data.Hana.Core.v2.1.dll (MSBuild la toma como propiedad, ver README).
param([string]$Destino)
$ErrorActionPreference = 'Stop'
Set-Location $PSScriptRoot
$csproj = 'Net.Business.Services\Net.Business.Services.csproj'
$version = ([xml](Get-Content $csproj)).Project.PropertyGroup.AssemblyVersion | Where-Object { $_ } | Select-Object -First 1
if (-not $version) { throw "No se encontró AssemblyVersion en $csproj" }
$csproj = 'Net.Business.Services/Net.Business.Services.csproj'
$props = ([xml](Get-Content $csproj)).Project.PropertyGroup
$version = $props.AssemblyVersion | Where-Object { $_ } | Select-Object -First 1
if (-not $version) { throw "No se encontro AssemblyVersion en $csproj" }
# Version, AssemblyVersion y FileVersion deben ser iguales (Swagger muestra AssemblyVersion; se desalinearon en la 2.1.12-2.1.15)
$otras = @($props.Version, $props.FileVersion) | Where-Object { $_ }
if ($otras | Where-Object { $_ -ne $version }) { throw "Version/AssemblyVersion/FileVersion del csproj no coinciden (AssemblyVersion=$version)" }
# Semver: el nombre lleva 3 numeros (2.1.15.0 -> 2.1.15); el cuarto del csproj siempre es 0
$version = ($version -replace '\.0$', '')
$out = "dist\ITCA_API_SAP_WMS_v$version"
$zip = "dist\ITCA_API_SAP_WMS_v$version.zip"
$out = "dist/ITCA_API_SAP_WMS_v$version"
$zip = "dist/ITCA_API_SAP_WMS_v$version.zip"
Remove-Item $out, $zip -Recurse -Force -ErrorAction SilentlyContinue
dotnet publish $csproj -c Release -r win-x64 --self-contained false -o $out
if ($LASTEXITCODE -ne 0) { throw 'dotnet publish falló' }
if ($LASTEXITCODE -ne 0) { throw 'dotnet publish fallo' }
Remove-Item "$out\appsettings.json", "$out\appsettings.Development.json" -ErrorAction SilentlyContinue
Compress-Archive -Path "$out\*" -DestinationPath $zip
Remove-Item "$out/appsettings.json", "$out/appsettings.Development.json" -ErrorAction SilentlyContinue
Compress-Archive -Path "$out/*" -DestinationPath $zip
Write-Host "Generado: $zip"
if ($Destino) {
Copy-Item $zip $Destino -Force
Write-Host "Copiado a: $Destino"
}