には、before_script
と呼ばれる実際のスクリプトが実行される前にコマンドを実行するオプションが.gitlab-ci.yml
にあります。 .gitlab-ci.yml
の例では、補助プログラムのインストールを示しています。しかし、私が気づいたのは、ドッカーエグゼキュータを使用しているときに、これらの変更がDockerにキャッシュされていないことです。これらのコマンドを実行した後、ドッカーがイメージをキャッシュすると仮定していたので、次の実行またはテストでは、ドッカーはbefore_script
の後に生成されたキャッシュされたイメージをロードします。これはビルドを大幅に高速化します。Gitlabドッカーエグゼキュータ - before_scriptの後にイメージをキャッシュ
例として、私の.gitlab-ci.yml
は少しのようになります。
image: ubuntu
before_script:
- apt-get update -qq && apt-get install -yqq make ...
build:
script:
- cd project && make
可能な解決策は、ランナーのマシンに移動し、他のインストールせずに、私のソフトウェアを構築し、それを参照することができるドッキングウィンドウの画像を作成することですyamlファイルのimage
セクションにあります。これの欠点は、依存関係を追加するときはいつでも、ビルダーが成功する前にランナーマシンにログインしてイメージを更新する必要があることです。 apt-get install
の末尾に依存関係を追加し、docker/gitlab-ciが適切なキャッシュを処理しなければならない場合は、はるかに良いでしょう。
私は私のプロジェクトの副産物ではなかったのすべてをキャッシュするだろうが、どんな効果があるようには見えなかったと思った私はuntracked: true
に設定しようとした.gitlab-ci.yml
でcache
コマンドは、もあります。
私が望む動作を得る方法はありますか?
私はこれを考えていた、といくつか五分五分がありますが、それは難しいが、RUNコマンドとしてbefore_script' 'の各ラインを実行して、ドッキングウィンドウは、そのレベルでのキャッシングを行う持っているということではないでしょうように思えます。 – Erik
そうですが、間違いなく可能ですが、背後にある論理的根拠についての私の推測は、私の答えの終わり近くにあります。異なるコミットで 'before_script'ディレクティブが異なると、少しばかり乱雑になる可能性があるからです。また、 'before_script'は、パッケージのインストールとは別にあらゆることをするために使用できます。好奇心が強い場合は、いつでもgithubページに投稿できます。彼らは本当に反応が良いです。私が掲示したものは私たちのグループによく役立っています。 – Suever
私はあなたが当時のように何かを使って作業するつもりです。 – Erik