代码之家  ›  专栏  ›  技术社区  ›  Mon Calamari

为gitlab ci社区版启用docker

  •  2
  • Mon Calamari  · 技术社区  · 10 年前

    我很难让码头工人做建造工作。gitlab ci配置文件如下所示:

    image: docker:latest
    
    services:
      - docker:dind
    
    stages:
      - build
    
    build:
      image: java:8
      stage: build
      script:
        - docker info
        - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com/...
        - sbt server/docker:publish
    

    以下是作业的输出:

    gitlab-ci-multi-runner 1.3.2 (0323456)
    Using Docker executor with image java:8 ...
    Pulling docker image docker:dind ...
    Starting service docker:dind ...
    Waiting for services to be up and running...
    Pulling docker image java:8 ...
    Running on runner-30dcea4b-project-1408237-concurrent-0 via runner-30dcea4b-machine-1470340415-c2bbfc45-digital-ocean-4gb...
    Cloning repository...
    Cloning into '/builds/.../...'...
    Checking out 9ba87ff0 as master...
    $ docker info
    /bin/bash: line 42: docker: command not found
    
    ERROR: Build failed: exit code 1    
    

    有没有发现docker的线索?

    2 回复  |  直到 10 年前
        1
  •  2
  •   Mon Calamari    10 年前

    经过几天的努力,我想出了以下设置:

    image: gitlab/dind
    
    stages:
      - test
      - build
    
    before_script:
     - echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections
     - apt-get update
     - apt-get install -y curl
     - apt-get install -y software-properties-common python-software-properties
     - add-apt-repository -y ppa:webupd8team/java
     - apt-get update
     - apt-get install -y oracle-java8-installer
     - rm -rf /var/lib/apt/lists/*
     - rm -rf /var/cache/oracle-jdk8-installer
     - apt-get update -yqq
     - apt-get install apt-transport-https -yqq
     - echo "deb http://dl.bintray.com/sbt/debian /" | tee -a /etc/apt/sources.list.d/sbt.list
     - apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 642AC823
     - apt-get update -yqq
     - apt-get install sbt -yqq
     - sbt sbt-version
    
    test:
      stage: test
      script:
        - sbt scalastyle && sbt test:scalastyle
        - sbt clean coverage test coverageReport
    
    build:
      stage: build
      script:
        - docker info
        - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com/...
        - sbt server/docker:publish
    

    它有docker(记住 gitlab/dind 图像)、java和sbt。现在我可以从 sbt docker 插件。

        2
  •  1
  •   VanagaS    10 年前

    docker info 命令正在内部运行 java:8 基于容器,其中没有安装/可用的docker。

    推荐文章