web-dev-qa-db-fra.com

Comment puis-je passer des artefacts à un autre stade?

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.

68
ygoe

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
72
user1495793

É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

enter image description here

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
8
Chuan