本文将通过drone2 的配置方式给大家分享drone的配置模板,如果你不太了解这个模板,可能配置会花很多时间去查询资料。
用过gitlabci、jenkins ,jenkins。发现通过容器化技术构建代码能够实现流水线式操作,而且移植性特别好。哪怕我重新部署一套这个环境可以通过docker-compose快速的搭建出来。
总之就是感觉jenkins的那一套插件体系 各种配置让你吐血的感觉。但是通过容器化构建技术,这些就不再麻烦,只要熟悉yaml配置就不担心哪天还得从maven开始搭建整个环境了。
drone和jenkins-ci有点类似,都是通过runner来跑构建流程的。
该配置的作用构建好的jar包直接deploy到私有仓库 将maven 的settings.xml配置放在 ‘D:.m2‘磁盘文件下。
kind: pipeline type: docker name: default steps: - name: build pull: if-not-exists image: maven:3.8.6-jdk-8-slim volumes: - name: mavenRep path: /root/.m2 commands: - mvn deploy -DskipTests=true -U -P ${DRONE_BRANCH} volumes: - name: mavenRep host: path: D:\.m2 - name: dockerSock host: path: /var/run/docker.sock trigger: branch: - dev - test - prod event: - push - pull_request
该配置包含两个步骤, - 第一步:通过maven打包,输出target 目录的jar; - 第二部:docker build & docker push 推送镜像到私有仓库 这里我们的私有仓库使用的是阿里云的【容器镜像服务】的免费私有仓库。大家也可以通过Nexus搭建自己的私有仓库。
kind: pipeline type: docker name: default steps: - name: build image: maven:3.8.6-jdk-8-slim pull: if-not-exists # 如果镜像不存在则拉取,免去每次都要重新下载 volumes: - name: mavenRep path: /root/.m2 commands: - echo ${DRONE_BRANCH} - mvn package -DskipTests=true -Dmaven.javadoc.skip=true - name: image image: plugins/docker pull: if-not-exists # 如果镜像不存在则拉取,免去每次都要重新下载 volumes: - name: dockerSock path: /var/run/docker.sock settings: insecure: false registry: registry.cn-chengdu.aliyuncs.com mirror: https://xxx.mirror.aliyuncs.com storage_path: /docker dockerfile: Dockerfile build_args: JAR=./joggle-server/target/joggle-server.jar username: from_secret: registry_aliyun_username password: from_secret: registry_aliyun_password repo: registry.cn-chengdu.aliyuncs.com/wuweiit/joggle-server tags: - latest - ${DRONE_BUILD_NUMBER} volumes: - name: mavenRep host: path: /opt/data/drone/.m2 - name: dockerSock host: path: /var/run/docker.sock trigger: event: include: - push - pull_request branch: - master - test - dev
from_secret 需要再drone后台配置对应的公共参数。