关于运维:再见-Jenkins-这款神器有点厉害轻松搞定自动化部署

4次阅读

共计 3161 个字符,预计需要花费 8 分钟才能阅读完成。

在日常开发、测试或运维环境中,咱们对于自动化部署的需要日益强烈。

用过 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 的 Server
docker pull drone/drone:1

# Drone 的 Runner
docker 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 客户端 ID
DRONE_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: pipeline
type: kubernetes
name: default

steps:
- 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.git
git push -u origin master

通过 drone 治理页面查看后果

而且流水线的操作也是胜利,返回相干的信息如下

相比拟于 Jenkins 的操作,仿佛要简略许多,重点的操作就是编写好配置文件.drone.yml,其它的都是一些图形化操作,没有什么特地的难度。

官网操作文档:官网文档:https://docs.drone.io/

工夫无限,教程可能有不全之处,大家能够自行部署之后,欢送前来一起交换探讨这款超牛的神器,独特打造属于本人的 CI/CD 流水线。

正文完
 0