drone 现代化自动化CICD工具

Drone 介绍

本文将通过drone2 的配置方式给大家分享drone的配置模板,如果你不太了解这个模板,可能配置会花很多时间去查询资料。

用过gitlabci、jenkins ,jenkins。发现通过容器化技术构建代码能够实现流水线式操作,而且移植性特别好。哪怕我重新部署一套这个环境可以通过docker-compose快速的搭建出来。

总之就是感觉jenkins的那一套插件体系 各种配置让你吐血的感觉。但是通过容器化构建技术,这些就不再麻烦,只要熟悉yaml配置就不担心哪天还得从maven开始搭建整个环境了。

drone和jenkins-ci有点类似,都是通过runner来跑构建流程的。

drone ci 示意图

自动化部署jar包drone配置模板

该配置的作用构建好的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

drone 推送私有镜像仓库

该配置包含两个步骤,
– 第一步:通过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后台配置对应的公共参数。

来源: 雨林博客(www.yl-blog.com)