k8s与CICD--一个完整的drone demo

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 前言 在上一篇文章中,我们只是简单介绍了一下drone的部署。接下来会逐步深入介绍,后期也会翻译一些官方的文档以及我在实际工作中用到的插件的介绍。这篇文章,主要是一个完整的drone demo。pipeline中,包括了git clone 拉取代码,go build 构建,生成docker镜像并推送到harbor,notify 通知。

前言

在上一篇文章中,我们只是简单介绍了一下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,如下:

c8147649b554497d53112709a1f17e16814e8c78

然后在.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名。我这边都是默认的。

f8eeeec9df311dedb5c423eb37c2fb86b4aae106

最后实际收到通知效果:

e9782834bf84bc0b5efd026dce9210253f93aac2

demo 源码

具体代码,我放到了github上。大家直接git clone 下来即可。
最后放一张整个build的图。

e85294aa63c091d8f7d3ac0185df9e06bf289aab
本文转自中文社区- k8s与CICD--一个完整的drone demo

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
Kubernetes Java Maven
DHorse(K8S的CICD平台)的实现原理
首先,本篇文章所介绍的内容,已经有完整的实现,[可以参考这里](https://gitee.com/i512team/dhorse)。 在微服务、DevOps和云平台流行的当下,使用一个高效的持续集成工具也是一个非常重要的事情。虽然市面上目前已经存在了比较成熟的自动化构建工具,比如jekines,还有一些商业公司推出的自动化构建工具,但他们都不能够很好的和云环境相结合。那么[究竟该如何实现一个简单、快速的基于云环境的自动化构建系统呢](https://gitee.com/i512team/dhorse)?我们首先以一个Springboot应用为例来介绍一下整体的发布流程,然后再来看看具体如何实
|
存储 运维 Kubernetes
基于Kubernetes的CICD实战
基于Kubernetes的CICD实战
|
运维 Kubernetes Cloud Native
运维自动化之Kubernetes 云原生CICD部署管理系统
Kubernetes 云原生CICD部署管理系统
567 1
运维自动化之Kubernetes 云原生CICD部署管理系统
|
Kubernetes 容器
《GitOps:Kubernetes多集群环境下的高效CICD实践》电子版地址
GitOps:Kubernetes多集群环境下的高效CICD实践
108 0
《GitOps:Kubernetes多集群环境下的高效CICD实践》电子版地址
CICD联动阿里云容器服务Kubernetes实践之Bamboo篇 | 6月10号云栖夜读
在本刊开篇文章中,讲述了:本文档以构建一个 Java 软件项目并部署到 阿里云容器服务的Kubernetes集群 为例说明如何使用 Bamboo在阿里云Kubernetes服务上运行Remote Agents并在agents上运行Build Plans。
5203 0
|
Kubernetes Docker 容器
CICD联动阿里云容器服务Kubernetes实践之Bamboo篇
本文档以构建一个 Java 软件项目并部署到 阿里云容器服务的Kubernetes集群 为例说明如何使用 Bamboo在阿里云Kubernetes服务上运行Remote Agents并在agents上运行Build Plans。
2730 0
|
Kubernetes 容器
GitOps:Kubernetes多集群环境下的高效CICD实践 资料下载
分享专家 流生 阿里云高级技术研发工程师 PPT精彩一览 地址回放 视频观看:https://yq.aliyun.com/live/1077 Kubernetes社区大群欢迎你 进群方式:1.
2990 0
|
Kubernetes 安全 开发工具
GitOps:Kubernetes多集群环境下的高效CICD实践
为了解决传统应用升级缓慢、架构臃肿、不能快速迭代、故障不能快速定位、问题无法快速解决等问题,云原生这一概念横空出世。云原生可以改进应用开发的效率,改变企业的组织结构,甚至会在文化层面上直接影响一个公司的决策,可以说,云时代的云原生应用大势已来。
6178 0
|
消息中间件 Kubernetes 开发工具
k8s与CICD--利用flux部署应用到kubernetes
前言 一直在思考部署应用到k8s的姿势,之前介绍过helm,个人感觉helm把记录数据放到k8s中不是特别好。最近发现了weave的flux项目(A tool for deploying container images to Kubernetes services)。
2785 0
|
Web App开发 Kubernetes 网络安全
k8s与CICD--借助scp插件实现非容器项目的部署
前言 最近连续996加班,一直没有时间完成drone系列文章。drone-wechat插件实现了一半,由于企业微信token申请比较麻烦,所以也没有进展。今天抽出时间,研究了一下scp插件,主要目的是实现非容器项目的部署。
2001 0