在日常开发、测试或运维环境中,咱们对于自动化部署的需要日益强烈。
用过 SVN 的小伙伴们,都应该晓得hooks(钩子)这个性能,确实日常企业内部测试环境常常会用过这个“非凡”的性能,通过这个性能来 实现自动更新公布代码的性能。
前面又逐步引入了继续集成、继续部署,最罕用的就是通过Jenkins来配合其它的代码管理工具或平台来实现上述的性能。之前也写过不少的介绍文章:Jenkins+Maven+Svn实现代码主动打包与公布,应用 Gitlab+Jenkins 实现多分支主动独立部署,有趣味的读者能够自行查阅。
然而,基于下面的模式,大家也都晓得,有一些有余的中央,第一就是部署环境比拟麻烦,一堆的组件须要装置,第二对服务器自身的资源条件要求较高。最近发现一个很牛逼的工具 Drone(你还在用 Jenkins ?赶快看看这些代替计划吧!),比下面的工具算是轻量级的选手,但同样能实现自动化部署的性能,所以,明天民工哥给大家分享一下这款吊炸天的工具。
简介
Drone 是一种基于容器技术的继续交付零碎。Drone 应用简略的 YAML 配置文件来定义和执行 Docker 容器中的 Pipelines。目前在 Github上曾经有 23.2K+ Star了,阐明十分受欢迎的。
Drone 与风行的源代码管理系统无缝集成,包含 GitHub,GitHub Enterprise,Bitbucket 等。
后期环境配置
应用 github 做为代码治理仓库(其它的也能够,这个比拟不便)
关上github.com点击头像,抉择Settings/Developer settings/OAuth Apps,而后点击New OAuth App创立OAuth利用。
其中 http://drone.mingongge.com 是你部署Drone的域名,留神Authorization callback URL 这个地址不要填写错了。
其中的ClientID和ClientSecret留神保留好,前面须要用到。
部署Drone
留神:装置Drone须要一个drone-server和drone-runner,
drone-runner不是必选的,官网也不举荐将runner和server装置在同一台服务器上,如果你要这样装置的话能够设置DRONE_AGENTS_ENABLED=false
,drone-server将会作为默认的runner,本文是将runner和server装置在同一服务器上。
# Drone的Serverdocker pull drone/drone:1# Drone的Runnerdocker pull drone/drone-runner-docker:1
装置drone-server
docker run \ --volume=/var/lib/drone:/data \ --env=DRONE_GITHUB_CLIENT_ID={{DRONE_GITHUB_CLIENT_ID}} \ --env=DRONE_GITHUB_CLIENT_SECRET={{DRONE_GITHUB_CLIENT_SECRET}} \ --env=DRONE_RPC_SECRET={{DRONE_RPC_SECRET}} \ --env=DRONE_SERVER_HOST={{DRONE_SERVER_HOST}} \ --env=DRONE_SERVER_PROTO={{DRONE_SERVER_PROTO}} \ --env=DRONE_USER_CREATE=username:USER_NAME,admin:true \ --publish=80:80 \ --publish=443:443 \ --restart=always \ --detach=true \ --name=drone \ drone/drone:1
参数阐明
DRONE_GITHUB_CLIENT_ID#在上一步中生成的 GitHub oauth 客户端 IDDRONE_GITHUB_CLIENT_SECRET#在上一步中生成的 GitHub oauth 客户端密钥DRONE_RPC_SECRET#提供在上一步中生成的共享密钥。这用于验证服务器和运行程序之间的 rpc 连贯。服务器和运行器必须提供雷同的秘钥值。DRONE_SERVER_HOST#服务器对外提供的或拜访的域名,也能够是IP地址,用IP+端口的形式来配置DRONE_SERVER_PROTO#必须的字符串值提供您的内部协定计划。此值应设置为 http 或 https。DRONE_USER_CREATE#初始管理员用户
装置drone-runner-docker
$ docker run -d \ -v /var/run/docker.sock:/var/run/docker.sock \ -e DRONE_RPC_PROTO=https \ -e DRONE_RPC_HOST=drone.mingongge.com \ -e DRONE_RPC_SECRET=super-duper-secret \ -e DRONE_RUNNER_CAPACITY=2 \ -e DRONE_RUNNER_NAME=${HOSTNAME} \ -p 3000:3000 \ --restart always \ --name runner \ drone/drone-runner-docker:1
参数阐明
DRONE_RPC_HOST#提供 Drone 服务器的主机名(和可选端口)。运行器连贯到主机地址处的服务器以接管管道以供执行。DRONE_RPC_PROTO#提供用于连贯到您的 Drone 服务器的协定。该值必须是 http 或 https。DRONE_RPC_SECRET#提供用于与您的 Drone 服务器进行身份验证的共享密钥。这必须与您的 Drone 服务器配置中定义的机密相匹配。
治理应用操作
而后关上浏览器,输出服务器的域名或者IP+端口,就能够拜访drone的治理页面了。
如果你github上有创立过我的项目代码仓库,这里的页面就会显示,如果没有显示,点击SYNC同步一下。
接下来咱们须要对仓库进行设置,点击我的项目而后将仓库设置为 Trusted,点击SAVE保留即可。
而后在github上就会生成一个Webhooks,通过这个来触发drone执行作业。
创立Secrets
其实整个流程和jenkins很像,向代码仓库提交代码更新时,就会主动触发Webhooks,而后Drone就会从代码仓库Clone代码,再通过这个.drone.yml(相当于java应用的pom.xml文件)配置,执行相应的流水线操作。
比方写一个这样的简略的文件
kind: pipelinetype: kubernetesname: defaultsteps:- name: drone_deploy image: alpine commands: - echo hello - echo world
而后执行操作推送到代码仓库
git add .git commit -m 'deploy test by mingongge'git remote add origin mingongge@github.com:mingongge/dronetest.gitgit push -u origin master
通过drone治理页面查看后果
而且流水线的操作也是胜利,返回相干的信息如下
相比拟于Jenkins的操作,仿佛要简略许多,重点的操作就是编写好配置文件.drone.yml,其它的都是一些图形化操作,没有什么特地的难度。
官网操作文档:官网文档:https://docs.drone.io/
工夫无限,教程可能有不全之处,大家能够自行部署之后,欢送前来一起交换探讨这款超牛的神器,独特打造属于本人的CI/CD流水线。