资讯专栏INFORMATION COLUMN

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

liukai90 / 982人阅读

摘要:构建镜像阶段,我们这边用搭建了自己的私有。在通知这块,我没有使用插件,恰好之前加入了的,所以自己建立了中的,然后在其中建立一个,命名。最后放一张整个的图。

前言

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27130.html

相关文章

  • k8sCICD--drone简介和部署

    摘要:是的最佳实践部署编写文件的部署及其简单,采用的方式,类似于。具体如下此处需要注意的是在处的。登录配置项目此处输入的用户名和密码是的。支持和两个数据库。新的配置文件如下仔细查看关于的文档,需要我们手动创建数据库。其中有和相关的。 前言 整个基于k8s的pass平台,关键的一部分就是CICD。CICD又是devops的关键部分。之前主流的工具是Jenkins。今天主要介绍的是drone。...

    fxp 评论0 收藏0
  • k8sCICD--drone简介和部署

    摘要:是的最佳实践部署编写文件的部署及其简单,采用的方式,类似于。具体如下此处需要注意的是在处的。登录配置项目此处输入的用户名和密码是的。支持和两个数据库。新的配置文件如下仔细查看关于的文档,需要我们手动创建数据库。其中有和相关的。 前言 整个基于k8s的pass平台,关键的一部分就是CICD。CICD又是devops的关键部分。之前主流的工具是Jenkins。今天主要介绍的是drone。...

    qujian 评论0 收藏0
  • k8sCICD--借助scp插件实现非容器项目部署

    摘要:插件实现了一半,由于企业微信申请比较麻烦,所以也没有进展。今天抽出时间,研究了一下插件,主要目的是实现非容器项目的部署。其实就是借助插件,将构建好的项目可执行文件和配置文件发布到指定主机上。直接上文件插件基于实现。完成新项目的部署。 前言 最近连续996加班,一直没有时间完成drone系列文章。drone-wechat插件实现了一半,由于企业微信token申请比较麻烦,所以也没有进展。...

    Half 评论0 收藏0
  • k8sCICD--借助scp插件实现非容器项目部署

    摘要:插件实现了一半,由于企业微信申请比较麻烦,所以也没有进展。今天抽出时间,研究了一下插件,主要目的是实现非容器项目的部署。其实就是借助插件,将构建好的项目可执行文件和配置文件发布到指定主机上。直接上文件插件基于实现。完成新项目的部署。 前言 最近连续996加班,一直没有时间完成drone系列文章。drone-wechat插件实现了一半,由于企业微信token申请比较麻烦,所以也没有进展。...

    pcChao 评论0 收藏0

发表评论

0条评论

liukai90

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<