k8s与CICD--一个完整的drone demo
前言
在上一篇文章中,我们只是简单介绍了一下drone的部署。接下来会逐步深入 介绍,后期也会翻译一些官方的文档以及我在实际工作中用到的插件的介绍。这篇文章,主要是一个完整的drone demo。pipeline中,包括了git clone 拉取代码,go build 构建,生成docker镜像并推送到harbor,notify 通知。关于通知这块,官方提供的插件都是一些西方喜欢用的即时通讯或是协作工具,比如telegram,slack,line等。所以在后期,我计划写一个微信或是钉钉的插件。
.drone.yml
先上配置文件,有一个大概的认识,再逐一解读。
workspace: base: /go path: src/gogs.xxx.com/baa-cicd pipeline: build: image: golang:latest commands: - go build -o baa-cicd publish: image: plugins/docker registry: registry.xxx.com repo: registry.xxx.com/test/baa-cicd tags: latest secrets: [ docker_username, docker_password ] insecure: true notify: image: plugins/slack webhook: https://hooks.slack.com/services/xxx/xxx/xxx channel: dev template: > {{#success build.status}} build {{build.number}} succeeded. Good job. {{else}} build {{build.number}} failed. Fix me please. {{/success}}
workspace
工作空间,就是一个可以被pipeline各个阶段共享volume和工作路径的东东,好处就是避免了各种cd和拷贝。由于该demo项目使用golang。所以设置路径是/go/src/gogs.xxx.com/baa-cicd。
clone
git plugin 是一个默认的插件,即使不配置,drone会自动配置,用来拉取代码。
build
由于是golang项目。一个命令go build即可。当然由于项目比较小,所以我提前用glide将依赖的包安装到vendor目录下了。否则应该定制自己安装好glide的镜像,或是在go build命令之前,执行 glide install 命令。当然此处也可以增加go test 对项目进行测试。
build: image: golang:latest commands: - glide install - go build -o baa-cicd - go test -v
docker build
构建docker镜像阶段,我们这边用harbor搭建了自己的私有registry。此处需要注意的是secrets: [ docker_username, docker_password ]这里的设置。实际上有一些场景是,为了安全考虑,不想把用户名和密码暴露在配置文件中,drone提供了secret ref的用法。在drone ui界面配置secret,如下:
然后在.drone.yml 里通过secrets选项进行关联即可。
当然这一步前提是要提供一个Dockerfile文件。
FROM alpine RUN apk add -U tzdata RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime COPY baa-cicd /usr/local/bin/baa-cicd EXPOSE 13123 ENTRYPOINT ["baa-cicd","--port=13123"]
notify
在通知这块,我没有使用email插件,恰好之前加入了istio的slack,所以自己建立了slack中的workspace,然后在其中建立一个channal,命名dev。
此处需要说明的是webhook的设置。具体可以查看slack官方文档。设置成功以后,
然后拷贝 Webhookurl即可。当然可以定制自己的头像以及app名。我这边都是默认的。
最后实际收到通知效果:
demo 源码
具体代码,我放到了github上。大家直接git clone 下来即可。
最后放一张整个build的图。
本文转自中文社区- k8s与CICD--一个完整的drone demo
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
k8s的扩展资源设计和device-plugin
extended-resources extended-resources在k8s1.9中是一个stable的特性。可以用一句话来概括这个特性: 通过向apiserver发送一个patch node 的请求,为这 个node增加一个自定义的资源类型,用于以该资源的配额统计和相应的QoS的配置。 patch node 的请求: 举例: curl --header "Content-Type: application/json-patch+json" \ --request PATCH \ --data '[{"op": "add", "path": "/status/capacity/example.com~1dongle", "value": "4"}]' \ http://localhost:8001/api/v1/nodes/10.123.123.123/status 如上,我们为10.123.123.123这个node增加了一个resource:example.com/dongle (命令中的 ~1 会转化为 / ) ,这个node的capicity/allocable中会展示其...
- 下一篇
k8s与CICD--drone简介和部署
前言 整个基于k8s的pass平台,关键的一部分就是CICD。CICD又是devops的关键部分。之前主流的工具是Jenkins。今天主要介绍的是drone。drone用go语言实现的,drone是前google员工2013年开源的一个CI/CD工具,现在已经拉了投资商业 化了。企业版是付费的,我们用的是免费版本。drone更新比较快,之前稳定版本是0.7,今天部署的时候已经更新到0.8了。不过相关的文档不完善,很多都是coming soon。 优势: drone引入pipline的概念,整个build过程由多个stage组成,每一个stage都是docker。 各stage间可以通过共享宿主机的磁盘目录, 实现build阶段的数据共享和缓存基础数据, 实现加速下次build的目标 各stage也可以共享宿主机的docker环境,实现共享宿主机的docker image, 不用每次build都重新拉取base image,减少build时间 可以并发运行。多个build可以并发运行,单机并发数量由服务器cpu数决定。 由开发者负责打包image和流程控制。Docker-in-docke...
相关文章
文章评论
共有0条评论来说两句吧...