Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

239
Vistas
¿Es posible automatizar el control de versiones del ensamblado .Net mediante la liberación semántica?

Tengo una solución de C# que contiene un solo proyecto y varias bibliotecas usando .Net 6. Estoy usando confirmaciones convencionales (commitlint con husky) y quiero usar la liberación semántica para implementar la última compilación como un archivo ZIP en Github según la confirmación. mensajes


La configuración que probé para los proyectos de C#:

  • Instalar paquetes

.

 npm install semantic-release -D npm install @semantic-release/changelog -D npm install @semantic-release/npm -D npm install @semantic-release/github -D npm install @semantic-release/git -D
  • Cree un archivo .releaserc.json dentro del directorio raíz

.

 { "plugins": [ "@semantic-release/commit-analyzer", "@semantic-release/release-notes-generator", "@semantic-release/changelog", "@semantic-release/npm", [ "@semantic-release/github", { "assets": [ { "path": "my-project.zip", "label": "my-project-${nextRelease.gitTag}.zip", "name": "my-project-${nextRelease.gitTag}.zip" } ] } ], "@semantic-release/git" ] }
  • Dentro del archivo package.json , establezca la version de la clave en 0.0.0-development , establezca la clave private en true y agregue una URL de repositorio
  • Cree un archivo release-on-push-on-main-branch.yml dentro del directorio de flujos de trabajo

.

 name: Release on push on main branch on: push: branches: - main jobs: release-on-push-on-main-branch: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2 with: fetch-depth: 0 - name: Setup Node uses: actions/setup-node@v2 with: node-version: 16.x - name: Install Node dependencies run: npm install - name: Setup .Net uses: actions/setup-dotnet@v1 with: dotnet-version: '6.0.x' - name: Install .Net dependencies run: dotnet restore ./SolutionDir - name: Run build run: dotnet build ./SolutionDir - name: Run publish run: dotnet publish ./SolutionDir - name: Rename publish directory of MyProject to my-project and move it to root run: mv ./SolutionDir/MyProject/bin/Debug/net6.0 ./my-project - name: ZIP my-project directory run: zip -r my-project.zip my-project - name: Release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: npx semantic-release --branches main

Parece funcionar, cada vez que presiono a la rama principal, implementará la distribución (que contiene la DLL) con la última versión de las versiones de Github.


Pero como sabe, semantic-release no publica la versión correcta del paquete porque aún no conoce la versión de ensamblaje. Toma la versión del archivo package.json .

Lo que quiero lograr:

  • Al realizar cambios en bibliotecas o aplicaciones dentro de la solución, debería aumentar automáticamente sus versiones de ensamblaje en función de las confirmaciones convencionales. Pero obviamente solo si ese proyecto fue modificado.
  • Al ejecutar el proceso de lanzamiento, semantic-release debe lanzar el proyecto con "name": "my-project-${assembly-version}.zip"

¿Hay algo que pueda usar?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Puede realizar una ejecución en seco de semantic-release antes de la publicación de dotnet publish para obtener el número de versión del lanzamiento (usando el complemento @semantic-release/exec ). Luego, pase este número de versión obtenido a dotnet publish :

Agregue el complemento @semantic-release/exec a sus comandos npm install y ajuste su archivo .releaserc.json para almacenar la próxima versión de lanzamiento (por ejemplo, en una variable de entorno):

 { "plugins": [ ..., [ '@semantic-release/exec', { verifyReleaseCmd: 'echo RELEASE_VERSION=\${nextRelease.version} >> $GITHUB_ENV' } ] ] }

Inserte la ejecución de prueba antes de la publicación de dotnet publish y ajuste el paso de dotnet publish :

 ... - name: Fetch release version env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: npx semantic-release --branches main --dry-run - name: Run publish run: dotnet publish ./SolutionDir -p:Version=${{ env.RELEASE_VERSION }} ...

Nota: en lugar de cambiar el Rename publish directory of MyProject to my-project and move it to root , simplemente puede usar el parámetro -o del comando de dotnet publish .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda