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