2016-04-30 113 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)