web-dev-qa-db-ja.com

アーティファクトを別のステージに渡すにはどうすればよいですか?

GitLab CIと.gitlab-ci.ymlファイルを使用して、別々のスクリプトでさまざまなステージを実行したいと思います。最初の段階では、後の段階でテストを実行するために使用する必要があるツールを作成します。生成されたツールをアーティファクトとして宣言しました。

では、後の段階のジョブでそのツールをどのように実行できますか?正しいパスは何ですか?また、どのファイルがその周りにありますか?

たとえば、最初の段階ではartifacts/bin/TestTool/TestTool.exeをビルドし、そのディレクトリには他の必要なファイル(DLLなど)が含まれます。私の.gitlab-ci.ymlファイルは次のようになります。

releasebuild:
  script:
    - chcp 65001
    - build.cmd
  stage: build
  artifacts:
    paths:
      - artifacts/bin/TestTool/

systemtests:
  script:
    - chcp 65001
    - WHAT TO WRITE HERE?
  stage: test

ビルドとテストは、関連する場合、Windows上で実行されます。

68
ygoe

dependencies を使用します。この構成テスト段階では、ビルド段階で作成された追跡されていないファイルがダウンロードされます。

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

test:
  stage: test
  dependencies: 
    - build
  script:
    - ./Test.ps1
72
user1495793

以前のすべてのステージからのアーティファクトはデフォルトで渡されるため、正しい順序でステージを定義する必要があります。理解に役立つ次の例を試してください。

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

また、異なる段階のジョブ間でアーティファクトを渡す場合、dependenciesartifactsdocument で説明されているように、アーティファクトを渡します。

そしてもう1つの簡単な例:

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