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

231
Vistas
¿Cómo configurar los artefactos de trabajo de Gitlab CI para un proyecto de C#?

Así es como lo haría usando Github:

 jobs: run-tests: runs-on: ubuntu-latest defaults: run: working-directory: ./MyApp steps: - uses: actions/checkout@v2 - name: Setup .NET uses: actions/setup-dotnet@v1 with: dotnet-version: 5.0.x - name: Restore dependencies run: dotnet restore - name: Build project run: dotnet build --no-restore - name: Run tests run: dotnet test --no-build

Esta vez en Gitlab, el archivo de la solución de mi proyecto está en el directorio raíz del repositorio. Creé un archivo .gitlab-ci.yml y comencé con

 image: mcr.microsoft.com/dotnet/sdk:5.0 stages: - restore-dependencies - build-solution - run-tests restore-dependencies: stage: restore-dependencies script: - dotnet restore --packages packages artifacts: paths: - packages build-solution: stage: build-solution script: - dotnet build --no-restore --source packages --output build artifacts: paths: - build dependencies: - restore-dependencies run-tests: stage: run-tests script: - dotnet test --no-build --output build dependencies: - build-solution

El primer trabajo pasa pero el segundo falla porque no puede encontrar los archivos restaurados del primer trabajo. Entonces mi solución tiene un TestProject1 y el segundo trabajo no puede encontrar un archivo de recursos en ...\TestProject1\obj\project.assets.json

¿Cómo puedo arreglar la configuración de la canalización?

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

0

Está utilizando trabajos separados para ejecutar cada comando. Gitlab ejecuta cada trabajo en un nuevo contenedor, destruyendo cualquier contexto del comando anterior, excepto los artefactos especificados explícitamente. Para ejecutar comandos secuenciales como los que ha configurado en las acciones de Github, simplemente puede agregar varios pasos que se ejecutarán secuencialmente en la misma imagen, preservando el contexto entre los comandos.

 stages: - build-solution run-tests: image: mcr.microsoft.com/dotnet/sdk:5.0 stage: build-solution script: - dotnet restore - dotnet build --no-restore - dotnet test --no-build

Alternativamente , podría usar artefactos y banderas para transferir la salida de cada comando entre trabajos:

Creo que los artefactos deben ser rutas relativas a su $CI_PROJECT_DIR (fuente) y, de acuerdo con la documentación de dotnet restore , la ubicación de escritura predeterminada está en el directorio de inicio.

Puede intentar especificar la ubicación de escritura como paquetes/con dotnet restore --packages packages (fuente)

y la ubicación de lectura como paquetes/ con dotnet build --source packages (fuente)

Entonces necesitarías especificar este artefacto como:

 artifacts: paths: - packages

Necesitaría un uso similar del indicador --output para guardar su artefacto de compilación en la etapa build-solution .

Esto es más complicado, pero puede ser deseable en algunos casos.

over 4 years ago · Santiago Trujillo Denunciar

0

Esta no es una respuesta digna, pero podría ayudar. Lo reproduje y tuve los mismos problemas. De alguna manera esto funcionó para mí

 image: mcr.microsoft.com/dotnet/sdk:5.0 stages: - build-solution - run-tests build-solution: stage: build-solution script: - dotnet build --output build artifacts: paths: - build run-tests: stage: run-tests script: - dotnet test --no-build --output build dependencies: - build-solution

Por lo tanto, es posible que desee olvidarse de la etapa de restauración porque siempre debe compilarse primero...

over 4 years ago · Santiago Trujillo Denunciar

0

Tal vez valga la pena intentar definir la canalización como un gráfico acíclico dirigido (DAG), por lo que en lugar de definir dependencies en su paso, podría definir needs . Cuando se define un trabajo con la palabra clave de needs , solo se iniciará si todos los trabajos anteriores dependientes tuvieron éxito (excepto si se les permite fallar). La ventaja de la palabra clave de needs aquí sería que puede configurar explícitamente el paso para descargar los artefactos de los trabajos anteriores

 image: mcr.microsoft.com/dotnet/sdk:5.0 stages: - restore-dependencies - build-solution - run-tests restore-dependencies: stage: restore-dependencies script: - dotnet restore --packages packages artifacts: paths: - packages build-solution: stage: build-solution script: - dotnet build --no-restore --source packages --output build artifacts: paths: - build needs: - job: restore-dependencies artifacts: true run-tests: stage: run-tests script: - dotnet test --no-build --output build needs: - job: build-solution artifacts: true
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