J'aimerais utiliser GitLab CI avec le fichier .gitlab-ci.yml pour exécuter différentes étapes avec des scripts distincts. La première étape produit un outil qui doit être utilisé dans une étape ultérieure pour effectuer des tests. J'ai déclaré l'outil généré comme artefact.
Maintenant, comment puis-je exécuter cet outil dans un travail ultérieur? Quel est le chemin correct et quels fichiers y aura-t-il autour?
Par exemple, la première étape consiste à créer artefacts/bin/TestTool/TestTool.exe et ce répertoire contient les autres fichiers requis (DLL et autres). Mon fichier .gitlab-ci.yml ressemble à ceci:
releasebuild:
script:
- chcp 65001
- build.cmd
stage: build
artifacts:
paths:
- artifacts/bin/TestTool/
systemtests:
script:
- chcp 65001
- WHAT TO WRITE HERE?
stage: test
La construction et les tests sont exécutés sous Windows si cela est pertinent.
Utilisez dependencies
. Avec cette configuration, l’étape de test télécharge les fichiers non suivis créés pendant l’étape de construction:
build:
stage: build
artifacts:
untracked: true
script:
- ./Build.ps1
test:
stage: test
dependencies:
- build
script:
- ./Test.ps1
Étant donné que les artefacts de toutes les étapes précédentes sont transmis par défaut, il suffit de définir les étapes dans le bon ordre. S'il vous plaît essayez l'exemple ci-dessous, ce qui pourrait aider à comprendre.
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
Et au cas où nous pourrions transmettre des artefacts entre des travaux à différentes étapes, nous pouvons utiliser des dépendances avec des artefacts pour transmettre les artefacts, comme décrit dans le document .
Et encore un exemple plus 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