yml tutorial tag gitlab gitlab-ci

tutorial - gitlab+



¿Cómo puedo pasar artefactos a otra etapa? (2)

Me gustaría usar GitLab CI con el archivo .gitlab-ci.yml para ejecutar diferentes etapas con scripts separados. La primera etapa produce una herramienta que debe usarse en una etapa posterior para realizar pruebas. He declarado la herramienta generada como artefacto.

Ahora, ¿cómo puedo ejecutar esa herramienta en un trabajo posterior? ¿Cuál es la ruta correcta y qué archivos habrá a su alrededor?

Por ejemplo, la primera etapa construye artefactos / bin / TestTool / TestTool.exe y ese directorio contiene otros archivos necesarios (DLL y otros). Mi archivo .gitlab-ci.yml tiene este aspecto:

releasebuild: script: - chcp 65001 - build.cmd stage: build artifacts: paths: - artifacts/bin/TestTool/ systemtests: script: - chcp 65001 - WHAT TO WRITE HERE? stage: test

La compilación y las pruebas se ejecutan en Windows si eso es relevante.


Como los artefactos de todas las etapas anteriores se pasan por defecto, solo necesitamos definir las etapas en el orden correcto. Pruebe el siguiente ejemplo, que podría ayudarlo a comprender.

image: ubuntu:18.04 stages: - build_stage - test_stage - deploy_stage build: stage: build_stage script: - echo "building..." >> ./build_result.txt artifacts: paths: - build_result.txt expire_in: 1 week unit_test: stage: test_stage script: - ls - cat build_result.txt - cp build_result.txt unittest_result.txt - echo "unit testing..." >> ./unittest_result.txt artifacts: paths: - unittest_result.txt expire_in: 1 week integration_test: stage: test_stage script: - ls - cat build_result.txt - cp build_result.txt integration_test_result.txt - echo "integration testing..." >> ./integration_test_result.txt artifacts: paths: - integration_test_result.txt expire_in: 1 week deploy: stage: deploy_stage script: - ls - cat build_result.txt - cat unittest_result.txt - cat integration_test_result.txt

Y en caso de pasar artefactos entre trabajos en diferentes etapas, podemos usar dependencias junto con artefactos para pasar los artefactos, como se describe en el dependencies .

Y un ejemplo más simple:

image: ubuntu:18.04 build: stage: build script: - echo "building..." >> ./result.txt artifacts: paths: - result.txt expire_in: 1 week unit_test: stage: test script: - ls - cat result.txt - echo "unit testing..." >> ./result.txt artifacts: paths: - result.txt expire_in: 1 week deploy: stage: deploy script: - ls - cat result.txt


Usar dependencies . Con esta etapa de prueba de configuración descargará los archivos sin seguimiento que se crearon durante la etapa de compilación:

build: stage: build artifacts: untracked: true script: - ./Build.ps1 test: stage: test dependencies: - build script: - ./Test.ps1