web-dev-qa-db-ja.com

Gitlab-Ci:ジョブ間でデータを共有する方法

2つのジョブ間でファイルを共有し、変更されたファイルがある場合は変更したい。 pythonスクリプトはcache.jsonファイルを変更して、時々cahceファイルを変更します。

.gitlab-ci.yaml

image: ubuntu

stages:
  - test

cache:
  key: one-cache
  paths:
    - cache.json

 job1:
   stage: test

script:
  # - touch cache.json
  - cat cache.json
  - python3 modify_json_file.py
  - cat cache.json

問題は、cache.jsonファイルは、次のジョブ実行時に存在しません。エラーメッセージが表示されます:cat: cache.json: No such file or directory。また、タッチコマンドを一度挿入しましたが、タッチコマンドなしで次に実行しても何も変わりません。

何か間違っているのか、gitlabのcacheを理解していないのか。

7
test42

キャッシュではなくアーティファクトが必要だと思います。

キャッシュとアーティファクト から:

cache-プロジェクトの依存関係の一時ストレージに使用します。 jarファイルやapkファイルなどの中間ビルド結果を保持するのには役立ちません。キャッシュは、依存関係(npmパッケージ、Goベンダーパッケージなど)を保持することにより、特定のジョブの後続の実行の呼び出しを高速化するために使用されるように設計されているため、パブリックから再取得する必要はありませんインターネット。キャッシュは、ステージ間で中間ビルド結果を渡すために悪用される可能性がありますが、アーティファクトがより適している場合があります。

アーティファクト-ステージ間で渡されるステージ結果に使用します。アーティファクトは、コンパイル/生成されたビルドの一部をアップロードするように設計されており、任意の数の並行ランナーがフェッチできます。それらは利用可能であることが保証されており、ジョブ間でデータを渡すためにあります。また、UIからダウンロードされるように公開されます。

10
Ekans