gitlab-ciランナーの有効期限が異なる複数のパス


7

buildGitlab-CIを使用してステージ間でディレクトリを解析する際に問題があります。

Gitlab-CIは、ステージ間で作成されたビルドアーティファクトをワイプして奇妙に見えます。ビルドステージとテストステージの間にビルドアーティファクトを保存しようとしていますが、ビルドステージには、保持したいビルドアーティファクトと、次のステージの実行に必要なビルドアーティファクトもあります。

artifactsオプションを使用して、異なるパスで複数の有効期限を設定することは可能ですか?

paths(build / test *パス)の2番目の定義のみを保持し、最初にpaths宣言された(.dmg)を保持しない以下を試しました。

  artifacts:
    paths:
    - build/*.dmg
    expire_in: 1 week
    paths:
    - build/test1
    - build/test2
    - build/test3
    expire_in: 15 mins

私は試してみましたcachesが、うまくいかないようです...どんな提案でも大歓迎です!

回答:


5

これは、ドキュメントによれば不可能のように見えることを回避する作業を使用してSOで回答されました。

基本的に、これは3段階で実行できます。

ステージ1:すべてのアーティファクトを構築して保存します。

build_stage:
  script:
    - build
  artifacts:
    paths:
    - build/*.dmg
    - build/test1
    - build/test2
    - build/test3
    expire_in: 15 mins

ステージ2.1:アーティファクトbuild/test1, build/test2とを使用して、ジョブの次の公式ステージを実行します(つまり、私のシナリオでテストを実行します)build/test3

test_stage:
  script:
    - test
  dependencies:
  - build

ステージ2.2:ステージ2.1と同時に実行すると、空のジョブを作成できますが、新しいアーティファクトの有効期限が設定されます。

overwrite_artifact_stage:
  script:
    - echo 'saving artifact'
  artifacts:
    paths:
    - build/*.dmg
    expire_in: 1 week

3

アーティファクトをグローバルに定義しようとしているようですが、キーの定義を上書きしているため、複数のパスでは機能しません。代わりに、ジョブごとにパスを定義する必要があります。

アーティファクト:expire_in:1週間

build:buildjob
    paths:
    - build/test1
    - build/test2
    - build/test3
    expire_in: 15 mins

test:testjob
      paths:
        - build/*.dmg
      artifacts:
        expire_in: 1 week

質問の中で、1つのジョブですでに定義されていることを忘れていました。私の「ビルド」ジョブはアーティファクトと「テスト」アーティファクトの両方をビルドしますが、パイプラインの後でキャッシュがクリアされないため、「テスト」アーティファクトをキャッシュしたくありません。
Rekovni 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.