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

Zha*_* Yi 1 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
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

Bra*_*ski 7

不,不可能为您的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
Run Code Online (Sandbox Code Playgroud)

选项2,自定义图像

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

pipeline:
  build:
    image: some-image-with-all-my-dependencies
    commands:
      - mvn package
Run Code Online (Sandbox Code Playgroud)