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

Whether drone.io support reusing docker container for build

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

更新1

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

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标志。弹出消息对话框显示设置成功,请参见下面的屏幕截图。但是标志总是显示禁用。

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

话虽这么说,但这并不意味着您的问题无法解决。

我认为用 "how do I prevent my builds from having to re-download dependencies" 来表达这个问题更好?这个问题有两种解决方法。

选项 1,缓存插件

第一个推荐的解决方案是使用插件来缓存和恢复您的依赖项。 volume cache and s3 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