2016-04-30 2 views
1

Я пытаюсь настроить gitlab ci с помощью метода, зарегистрированного here, и тестирования приложения 4 рельсов с ним.Использование gitlab ci с docker compose оставляет меня с контейнерами, сгенерированными папками 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, но это не работает с установкой оболочки.

Я не уверен, как с этим справиться. Я думаю, мне нужно либо удалить его при выходе, либо изменить разрешения, чтобы его можно было удалить.

Это мой 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/ 

И мой докер-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 

погуглить я не могу найти кого-нибудь, что это имеющий тот же вопрос, поэтому я предполагаю, что я» я делаю что-то неправильно.

Спасибо.

+0

Пытались ли вы то же самое настроить с помощью докера в докере? Так как это предлагает либо оболочку, либо докер в докере. Не исправит вашу текущую проблему, но у меня было это раньше. –

ответ

1

Я думал, что смогу удалить папку с помощью функции after_script, но это не сработает с установкой оболочки.

Я была такая же проблема и решить ее, добавив в .gitlab.ci.yml

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

(Использование оболочки бегуна с gitlab-СI-мульти-бегун 1.7.1)

 Смежные вопросы

  • Нет связанных вопросов^_^