1

我爲我的開源代碼創建了一些集成測試,我正在尋找可公開訪問的CI服務來承載它們。由於Travis-CI必須爲我的所有容器設置小配額,我想我會使用CircleCI。這是我的cirle.yml在circleCI上運行docker-container測試

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

這仍然適合你嗎?當我運行它時,docker的curl安裝失敗。 – 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有泊塢窗V1 .8.2現在默認爲

您可以像這樣更新docker版本:

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 

您可以在亞馬遜S3鏈接的版本替換1.8.2你想

0

您可以通過使用--net=host運行您的容器中時,這將允許您通過localhost訪問圈CI服務做到這一點。有了這個,你不需要使用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