spinnaker作为码云gitee的webhook入口实现CI/CD

spinnaker是奈飞开源的CD平台,似乎比较小众,中文资料难找。spinnaker作为代码托管平台的钩子入口,集成有很多现成的插件,比如github,gitlab,但偏偏没有gitee。

中文环境下也没有找到其对接gitee的教程,当然gitee钩jenkins是没问题,我的环境CI部分用的也是jenkins,CI流水线跑完之后,再通过jenkins触发spinnaker或通过harbor的webhook触发spinnaker也是比较容易,可以实现。

但我觉得依赖的环节越多,出现问题排查就越困难,不如一次触发spinnaker,后面全部交给spinnaker来调度简洁明了。

自己研究了一下,用通用webhook接口实现了参数传递,参数只要传到spinnaker中,后面的流程就简单了,这里简单介绍一下实现关键步骤吧。

关键步骤,要在流水线中加入一个 Evaluate Variables  评估变量的阶段,gitee POST过来的数据结构,在后台可以查到。

在构建 Evaluate Variables 阶段时,spinnaker提供了一个方便的调试工具,可以基于前几次的Webhook请求,调试你所需要的格式化参数。

比如常用的分支,commit时间,就可以用下面两个表达式来获取:

#可以是分支名:master/release之类,也可以是commit ID
${trigger.payload.ref.split("/")[2]}
#格式化commit时间为所需样式,用于镜像命名
${trigger.payload.head_commit.timestamp.substring(2,10).replace('-','')}_${trigger.payload.head_commit.timestamp.substring(11,19).replace(':','')}

在Evaluate Variables阶段定义好的变量,其后的阶段可以直接使用。 无图言卵:

参数都收集好拉,交给jenkins参数化构建,构建完成自动制作镜像提交到私有仓库,CI流程走完, 最后再将各种参数构造成的镜像地址,发布到k8s。

image: 'harbor.abc.cn/${parameters.image_name}:${git_ver}_${add_tag}'

自动部署一般用于开发环境,生产环境还是要人工测试审核的,开发环境简单走个蓝绿部署就好:

最后说一句,spinnaker版本是1.19.4,CD环节只能yaml,我很向往 1.8.x的armory发行版,它可以在spinnaker里点点点生成yaml,但在1.19.6的k8s下, clouddriver与k8s 通讯总是有问题,疑似k8s版本太高,与低版本spinnaker不兼容,如果有读者使用1.8.x的spinnaker在高版本k8s部署成功,请在评论中指点一二。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes (k8s) 是一种流行的容器编排平台,可以大大简化应用程序的部署和管理。CI/CD(持续集成/持续交付)管道是软件开发过程中的关键环节,可以将代码从开发到部署的流程自动化和加速。在 k8s 上部署 CI/CD 管道的步骤如下: 1. 创建代码仓库。您可以使用 Git 或其他版本控制工具。确保您的代码仓库可以与 CI/CD 工具集成。 2. 配置 CI 工具。这可以是 Jenkins、GitLab CICircleCI 等等。您需要将 CI 工具配置为从代码仓库拉取代码,并将其构建为容器镜像。确保您的 CI 工具可以与 Kubernetes 集群通信。 3. 配置 Docker Registry。您需要一个 Docker Registry 来存储构建的容器镜像,以便它们可以在 Kubernetes 集群中使用。您可以使用 Docker Hub、Google Container Registry、AWS ECR 等等。 4. 创建 Kubernetes 资源定义文件。这些文件告诉 Kubernetes 如何部署和管理您的应用程序。确保您的资源定义文件包含必要的配置和环境变量,以及指向您的 Docker Registry 的正确信息。 5. 部署应用程序。使用 kubectl 工具将 Kubernetes 资源定义文件应用于 Kubernetes 集群。 6. 配置 CD 工具。这可以是 Helm、Spinnaker、Argo CD 等等。您需要将 CD 工具配置为从 Docker Registry 拉取构建的容器镜像,并将其部署到 Kubernetes 集群。确保您的 CD 工具可以与 Kubernetes 集群通信。 7. 自动部署。使用 CD 工具将新版本的应用程序自动部署到 Kubernetes 集群中。 总的来说,上述步骤是一个基本的 CI/CD 管道部署过程。当然,具体实现方式会因不同的应用程序和工具而异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值