2015-10-29 16 views
8

私の.gitlab-ci.ymlファイルは、テスト、ビルド、デプロイの典型的な3つのステージでセットアップされています。ビルド段階では、プロジェクトをコンパイルしてtarballに入れるコマンドを実行します。ビルドステージはデプロイメントステージに移行するため、正常に実行されたように見えますが、デプロイメントステージではtarballが見つからないと表示されます。別のディレクトリにありますか?それがどうなったのか?ありがとう。Gitlab CI:ビルドステージの出力が見つかりません

+1

関連https://about.gitlab.com/2016/03/10/setting-up-gitlab-ci-for-ios-projects/ 'artifacts:paths:'を作成することができます。後でダウンロードすることができます。 – Unapiedra

+0

ええ、私はこれを投稿した後に追加されたと確信しています。 – sajattack

答えて

3

テストごとに、gitlab-ciはビルドフォルダをクリーンアップします。したがって、ビルドステージの出力ファイルはデプロイメントステージで使用できません。

展開段階でもプロジェクトを再構築する必要があります。

「ステージ」は、テストを注文する場合、つまりビルドテストが失敗した場合にデプロイテストを実行しないようにする場合にのみ便利です。

EDIT:Gitlab 8.6以降 、それは私が(GitLab 8.4上の)同じ行動を見て驚きましたdependencies feature

+0

奇妙な。コンパイルを別の仕事に入れる方が良いでしょうか?これを行うDRY方法は何ですか? – sajattack

+0

ああ、それは良いでしょうが、**この時点では、他のステージ/テストの出力を再利用することはできません。 – jeremf

4

を使用して可能です。

私はcmakeを使用してメークファイルを作成し、次にmakeをビルドし、次にmake testを使ってテストを実行します。私はこれらすべてをbuild/ディレクトリで実行します。

私は自分自身を繰り返し、どのステップが失敗しているのかを簡単に特定したくありません。 cmakemaketest、など私はその後、cacheオプションを使用buildディレクトリを維持するためにgitlab-CIを伝える:

cache: 
    key: "$CI_BUILD_REF_NAME" 
    untracked: true 
    paths: 
     - build/ 

私はと思いますがそのように、私は別のgitlab-CIに段階を作成しましたkeyオプションは、同じブランチ上で動作するすべてのステージに対して同じビルドディレクトリを保持します。ここでgitlab-CIのドキュメントを参照してください:http://doc.gitlab.com/ce/ci/yaml/README.html#cache

EDIT:このためcacheを使用しないでください! GitLabは8.4でステージ間で再利用可能なアーティファクトを実装しました:https://gitlab.com/gitlab-org/gitlab-ce/issues/3423 これをサポートするためにCIランナーが適応される必要があります。参照:https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/336

+0

私はポスト#3423に戻ってきましたが、私はあなたがすでにそれを見ました。 +1。機能は数回押し戻されたようだ。 – sajattack

関連する問題