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