drone.io是否支持重用docker容器进行构建

时间:2017-01-01 00:07:04

标签: drone.io

我在本地设置了drone.io并为CI构建创建了一个.drone.yml。但我发现无人机在完成构建后移除了docker容器。它是否支持重用docker容器?我正在研究gradle项目,初始构建需要很长时间才能下载java依赖项。

UPDATE1

我使用下面的命令在运行无人机服务器容器上设置管理员用户。

docker run -d \
  -e DRONE_GITHUB=true \
  -e DRONE_GITHUB_CLIENT="xxxx" \
  -e DRONE_GITHUB_SECRET="xxxx" \
  -e DRONE_SECRET="xxxx" \
  -e DRONE_OPEN=true  \
  -e DRONE_DATABASE_DRIVER=mysql \
  -e DRONE_DATABASE_DATASOURCE="root:root@tcp(mysql:3306)/drone?parseTime=true" \
  -e DRONE_ADMIN="joeyzhao0113" \
  --restart=always \
  --name=drone-server \
  --link=mysql \
  drone/drone:0.5

执行此操作后,我使用用户joeyzhao0113登录无人机服务器但未能在设置页面上启用Trusted标志。弹出消息对话框显示设置成功,请参见下面的屏幕截图但是旗帜总是显示残疾。

enter image description here

1 个答案:

答案 0 :(得分:6)

不,无法为您的Drone构建重用Docker容器。构建容器是短暂的,并在每次构建结束时被销毁。

话虽如此,但这并不意味着你的问题无法解决。

我认为更好地表达这个问题的方法是“如何防止我的构建重新下载依赖项”?这个问题有两种解决方案。

选项1,缓存插件

第一个推荐的解决方案是使用插件来缓存和恢复依赖项。缓存插件(例如volume caches3 cache)是社区提供的插件。

pipeline:
  # restores the cache from a local volume
  restore-cache:
    image: drillster/drone-volume-cache
    restore: true
    mount: [ /drone/.gradle, /drone/.m2 ]
    volumes: 
      - /tmp/cache:/cache

  build:
    image: maven
    environment:
      - M2_HOME=/drone/.m2
      - MAVEN_HOME=/drone/.m2
      - GRADLE_USER_HOME=/drone/.gradle
    commands:
      - mvn install
      - mvn package

  # rebuild the cache in case new dependencies were
  # downloaded during your build
  rebuild-cache:
    image: drillster/drone-volume-cache
    rebuild: true
    mount: [ /drone/.gradle, /drone/.m2 ]
    volumes: 
      - /tmp/cache:/cache

选项2,自定义图像

第二个解决方案是使用您的依赖项创建Docker镜像,发布到DockerHub,并将其用作.drone.yml文件中的构建映像。

pipeline:
  build:
    image: some-image-with-all-my-dependencies
    commands:
      - mvn package