2016-05-12 12 views
8

Ich habe versucht, den Cache von Gitlab Ci für meine Ruby on Rails-Anwendung zu nutzen, aber bisher hatte ich kein Glück, meine Anwendung verwendet geteilte Läufer, vielleicht ist das das Problem?Wie verwende ich den Cache für ein Rails-Projekt in Gitlab CI?

Hier sind die Inhalte meiner .gitlab-ci.yml

services: 
    - postgres:latest 

rspec: 
    stage: test 
    script: 
    - apt-get update -qy 
    - apt-get install -y nodejs 
    - gem install bundler 
    - bundle check --path vendor/bundle || bundle install --path vendor/bundle --jobs $(nproc) 
    - cp config/database.gitlab-ci.yml config/database.yml 
    - RAILS_ENV=test bundle exec rake db:create db:schema:load 
    - bundle exec rspec 
    cache: 
    paths: 
     - vendor/bundle 
    tags: 
    - ruby 
    - postgres 

Wenn meine Tests ausführen, sehe ich die Läufer für zwischengespeicherte Inhalte überprüft, aber es stellt es nie:

gitlab-ci-multi-runner 1.1.3 (a470667) 
Using Docker executor with image ruby:2.1 ... 
Pulling docker image postgres:latest ... 
Starting service postgres:latest ... 
Waiting for services to be up and running... 
Pulling docker image ruby:2.1 ... 

Running on runner-8a2f473d-project-1129003-concurrent-0 via runner-8a2f473d-machine-1462982763-a9a70bd7-digital-ocean-4gb... 
Cloning repository... 
Cloning into '/builds/foo/bar'... 
Checking out 30ea1b5f as master... 
Note: checking out '30ea1b5f036808f7e27bfa32e939c1f591343ba6'. 

You are in 'detached HEAD' state. You can look around, make experimental 
changes and commit them, and you can discard any commits you make in this 
state without impacting any branches by performing another checkout. 

If you want to create a new branch to retain commits you create, you may 
do so (now or later) by using -b with the checkout command again. Example: 

    git checkout -b <new-branch-name> 

HEAD is now at 30ea1b5... Fix width of tables contained in table-scroll divs 
Checking cache for rspec/master... 

$ apt-get update -qy 

Und wenn der Build ungefähr zu Ende Ich sehe es versuchen, den Cache zu erstellen:

Any Ideen?

Antwort

1

Der Cache begann eigentlich gut funktionierten einige Wochen, nachdem ich angeben hat diese Frage gepostet, es waren keine Änderungen an meiner Konfiguration erforderlich. Ich glaube, es hatte mit einem Update von gitlab zu tun.

3

Gitlab Runner erstellt Cache im Git Arbeitsverzeichnis standardmäßig. Wie Sie bereits erwähnt haben, wird Ihr Cache korrekt erstellt, aber er wird im aktuellen git-Arbeitsverzeichnis von gitlab-runner gespeichert. Wann immer der nächste Build ausgeführt wird, reinigt Gitlab-Runner das Arbeitsverzeichnis (wahrscheinlich mit git clean -dfx), wodurch das Cache-Verzeichnis im Git-Arbeitsverzeichnis entfernt wird.

Sie müssen ein separates Cache-Verzeichnis für gitlab-runner angeben. Sie können die Datei /etc/gitlab-runner/config.toml im Abschnitt [[runners]] mit dem Einstellungsschlüssel cache_dir manuell angeben. Gitlab CI advanced configuration

Sie auch Cache-Verzeichnis während Gitlab runner Registrierung mit der --cache-dir Option wie in

gitlab-runner register --name blabblah --cache-dir /var/opt/gitlab/gitlab-runner-cache 

hoffe, das hilft

+1

Danke für die Antwort @raj! Der Cache funktionierte einige Wochen nachdem ich diese Frage gepostet hatte, richtig. Es waren keine Änderungen an meiner Konfiguration erforderlich. Ich glaube, es hatte mit einem Update von gitlab zu tun. –