2016-04-30 19 views
1

Ich versuche, gitlab ci mit der Methode dokumentiert here und testen Sie eine Rails 4 App damit.Mit gitlab ci mit Docker komponieren lässt mich mit Container generierten Ordnern gitlab kann nicht entfernen

Das Problem, das ich habe, ist, dass der Test einmal ausgeführt wird und baut das Bild und Container, aber wenn ich versuche, den Test erneut ausführen wird es scheitern mit:

gitlab-ci-multi-runner 1.1.3 (a470667) 
Using Shell executor... 
Running on ubuntu-lon1-01... 
Fetching changes... 
warning: failed to remove tmp/miniprofiler 

ERROR: Build failed: exit status 1 

Ich denke, das liegt daran, Der Ordner tmp wird generiert, wenn Sie die App zum ersten Mal ausführen und sich im Container im Stammverzeichnis befinden.

Dies ist gitlab.ci.yml ich zur Zeit verwenden, aber ich habe viele verschiedene Versionen alle mit dem gleichen Ergebnis versucht:

before_script: 
    - docker info 

build_image: 
    stage: test 
    script: 
    - docker-compose build 
    - docker-compose run web rake db:create RAILS_ENV=test 
    - docker-compose run web bin/rake db:migrate RAILS_ENV=test 
    - docker-compose up -d 
    - docker-compose run web bundle exec rspec 
    - docker-compose stop 

Ich dachte, ich in der Lage sein kann, den Ordner löschen Verwenden Sie die after_script, aber das funktioniert nicht mit der Shell-Setup.

Ich bin mir nicht sicher, wie ich damit umgehen soll. Ich denke, ich muss es entweder beim Beenden löschen oder die Berechtigungen ändern, damit es gelöscht werden kann.

Das ist mein Dockerfile:

FROM ruby:2.3.1 

RUN apt-get update -qq && apt-get install -y build-essential \ 
    && apt-get install -y apt-utils \ 
    && apt-get install -y libqt4-webkit libqt4-dev xvfb \ 
    && apt-get install -y wget \ 
    && apt-get install -y libpq-dev \ 
    && apt-get install -y postgresql-contrib \ 
    && apt-get install -y libxml2-dev libxslt1-dev \ 
    && apt-get install -y imagemagick libmagickcore-dev libmagickwand-dev \ 
    && apt-get install -y nodejs 

RUN gem install foreman 

WORKDIR /tmp 
COPY Gemfile Gemfile 
COPY Gemfile.lock Gemfile.lock 
RUN bundle install 

RUN mkdir /app 
WORKDIR /app 
COPY . /app/ 

Und mein Docker-compose:

db: 
    image: postgres:9.4 
    ports: 
    - "5432" 
web: 
    build: . 
    command: foreman start -f Procfile.dev 
    volumes: 
    - .:/app 
    stdin_open: true 
    ports: 
    - "3000:3000" 
    links: 
    - db 

Googeln ich nicht, dass jemand zu finden scheinen, die das gleiche Problem hat das so ich, ich gehe davon aus‘ m etwas falsch machen.

Danke.

+0

versucht Haben Sie das gleiche zu .gitlab.ci.yml Hinzufügen Setup über Andockfenster im Andockfenster? Da es im Andockfenster entweder Shell oder Docker vorschlägt. Ich würde Ihr aktuelles Problem nicht beheben, aber ich hatte das vorher schon. –

Antwort

1

Ich dachte, ich kann den Ordner mit dem After_Script löschen, aber das funktioniert nicht mit der Shell-Setup.

hatte ich das gleiche Problem und löste es durch diese

after_script: 
    - docker-compose run web rm -rf tmp/ 

(Verwenden von Shell-Läufer mit Gitlab-ci-Mehrkanal-1.7.1)