1

Я создал некоторые интеграционные тесты для своего кода с открытым исходным кодом, и я ищу общедоступную службу CI для их размещения. Поскольку Travis-CI имеет небольшие квоты для всех моих контейнеров, я думаю, что я буду использовать CircleCI. Это мой cirle.yml:Выполнение пробных испытаний контейнера на circleCI

machine: 
    services: 
     - docker 
dependencies: 
    override: 
     - pip install docker-compose 
test: 
    override: 
     - cd integration-tests && docker-compose run --rm runner 

Однако после запуска этого я получаю сообщение об ошибке «клиент и сервер не имеют ту же версию (клиент: 1,18, сервер: 1,16)» Что такое моя проблема?

ответ

1

С обширной помощью поддержки и некоторых проб и ошибок я нашел две проблемы с моей конфигурации:

  1. версия докер по умолчанию на CircleCI несовместима с новейшей Докер-композе.
  2. Снятие контейнеров невозможно, поэтому флаг -rm приведет к тому, что сборка станет красной, даже если тесты пройдут.

Правильная конфигурация, следовательно, будет выглядеть следующим образом:

machine: 
     services: 
      - docker 
     pre: 
      - sudo curl -sSL https://get.docker.com/ | sh 
    dependencies: 
     override: 
      - pip install docker-compose 
    test: 
     override: 
      - cd integration-tests && docker-compose run runner 
+1

Это еще работа для вас? Когда я запускаю его, установка лотка завершается. – bromanko

+0

Больше не работает. В настоящее время я пытаюсь исправить это. – zefciu

2

@zefciu Этот конфиг просто работал для меня

machine: 
    services: 
    - docker 

dependencies: 
    override: 
    - sudo pip install -U docker-compose==1.3.3 

test: 
    override: 
    - docker-compose -f <compose-file> build && docker-compose -f <compose-file> up 
0

UPDATE: Это больше не нужен, CircleCI имеет Docker v1 .8.2 по умолчанию

Вы можете обновить версию докерной версии:

machine: 
    services: 
    - docker 
    pre: 
    - docker --version 
    - sudo curl -L -o /usr/bin/docker 'http://s3-external-1.amazonaws.com/circle-downloads/docker-1.8.2-circleci' 
    - sudo chmod 0755 /usr/bin/docker 
    - docker --version 

Вы можете заменить 1.8.2 в ссылке Amazon S3 к версии, которую вы хотите

0

вы можете сделать это с помощью --net=host при запуске вашего контейнера, это позволит вам получить доступ к Окружность CI услуг через localhost. При этом вам не нужно использовать docker-compose. Circle CI предоставляет вам большинство услуг.

machine: 
    services: 
    - docker 
    - mysql 
    - redis 

    ... 

    test: 
    override: 
     - | 
      docker run \ 
      --net=host \ 
      --env MYSQL_HOST=localhost \ 
      --env MYSQL_PORT=3306 \ 
      --env MYSQL_DATABASE=circle_test \ 
      --env MYSQL_USERNAME=ubuntu \ 
      --env REDIS_HOST=localhost \ 
      --env REDIS_PORT=$REDIS_PORT \ 
      my/container runner 
Смежные вопросы