1

我已经在本地设置了drone.io 并为 CI 构建创建了一个 .drone.yml。但我发现无人机在完成构建后删除了 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设置页面上的标志。弹出消息对话框显示设置成功见下面的截图。但是标志总是显示禁用。

在此处输入图像描述

4

1 回答 1

8

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

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

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

选项 1,缓存插件

第一个推荐的解决方案是使用插件来缓存和恢复您的依赖项。卷缓存s3 缓存等缓存插件是社区贡献的插件。

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
于 2017-01-01T20:44:37.210 回答