2016-04-30 94 views
1

我想設置gitlab ci使用文檔here和測試一個rails 4應用程序與它。使用gitlab ci與碼頭工人合併留給我的容器生成文件夾gitlab不能刪除

我遇到的問題是,測試將運行一次,並建立形象和容器,但是當我嘗試再次運行測試將失敗,並:

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 

我想這是因爲當您第一次運行應用程序時,tmp文件夾會生成並由容器中的根擁有。

這是我目前使用的gitlab.ci.yml但我試過很多不同的版本都具有相同的結果:

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 

我想我或許可以刪除該文件夾使用after_script但不支持shell設置。

我不知道該如何處理。我想我需要在退出時刪除它或更改權限,以便刪除它。

這是我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/ 

我的搬運工,撰寫:

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 

谷歌搜索我似乎無法發現運作有同樣的問題,所以我假設我」任何人我做錯了什麼。

謝謝。

+0

您是否嘗試過同樣的在docker中使用docker設置?因爲它暗示了Docker中的shell或docker。不會解決你目前的問題,但我曾經工作過。 –

回答

1

我想我可以使用after_script刪除文件夾,但不能用shell設置。

我有同樣的問題,並解決它通過添加這.gitlab.ci.yml

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

(使用shell亞軍與gitlab-CI-多亞軍1.7.1)