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上で実行されます。
dependencies
を使用します。この構成テスト段階では、ビルド段階で作成された追跡されていないファイルがダウンロードされます。
build:
stage: build
artifacts:
untracked: true
script:
- ./Build.ps1
test:
stage: test
dependencies:
- build
script:
- ./Test.ps1
以前のすべてのステージからのアーティファクトはデフォルトで渡されるため、正しい順序でステージを定義する必要があります。理解に役立つ次の例を試してください。
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
また、異なる段階のジョブ間でアーティファクトを渡す場合、dependenciesとartifactsdocument で説明されているように、アーティファクトを渡します。
そしてもう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