我在本地设置了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在设置页面上启用该标志.弹出消息对话框显示设置成功,请参见下面的屏幕截图 但是旗帜总是显示残疾.
不,不可能为您的Drone构建重用Docker容器.构建容器是短暂的,并在每次构建结束时被销毁.
话虽这么说,但这并不意味着你的问题无法解决.
我想用一个更好的方式来表达这个问题将是"如何阻止我的构建重新下载依赖项"?这个问题有两种解决方案.
第一个推荐的解决方案是使用插件来缓存和恢复依赖项.缓存插件(如卷缓存和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)
第二种解决方案是使用您的依赖项创建Docker镜像,发布到DockerHub,并将其用作.drone.yml文件中的构建映像.
pipeline:
build:
image: some-image-with-all-my-dependencies
commands:
- mvn package
Run Code Online (Sandbox Code Playgroud)