神奇的 Zadig 工作流:以链接广大开发者为使命
Zadig 工作流有别于其他 CI/CD 的流水线,它主要面向微服务架构设计的产品级工作流,可以支持并行构建、并行部署、并行自动化测试和分发。自 Zadig v1.13.0 推出了更为强大的自定义工作流,迄今已迭代两个大版本,很多小伙伴相继用上了。今天我们就来介绍一下它!
为什么设计新的工作流?
根据社区小伙伴的反馈,当前工作流在交付多个微服务能力已经能满足 90% 的能力,但仍然有一些场景无法支持,出于以下因素,设计了自定义工作流:
- 满足复杂场景下任务顺序自由编排能力,诸如审核、多任务组装
- 通过工作流更灵活的释放 Zadig 环境管理能力,比如多环境协同、多角色协作
- 提供更强的开放性和系统扩展性,广泛的链接合作伙伴和企业内部系统
同时保留产品工作流类型,它仍然作为较为易用的方式,让企业和开发者低门槛的走向云原生交付之路。
自定义工作流核心概念
自定义工作流依旧采用 K8s 任务
类型资源为底层设计,以 工作流
、阶段
、任务
的组织结构,包含以下核心概念:
工作流
: 一组有序的阶段
。阶段
:一组有序的 任务 ,可以配置任务
并行执行或者串行执行。任务
:表示执行命令的一系列有序的步骤,最小单位的完整执行单元(比如 构建,测试,部署...),每个任务
由一个容器实际执行。最终用户呈现层支持 GUI 和 YAML 两种开发模式,着重在自定义任务的步骤设计。
可以为谁所用?
自定义工作流主要提供软件交付链条上的流程编排能力,可以面向企业各种场景、高度自主地开发自定义模块和服务,同时拥抱更多合作伙伴和工程师可以参与进来,在整个云原生软件交付生命周期中编排任何有益迭代高质量产品的服务和价值。
企业开发者可以用它:
- 研发过程工具的集成:项目管理工具诸如 Jira、Trello、Redmine、Ones 等,配置管理系统诸如 Apollo,Nacos 等,数据库变更平台诸如 MySQL,DMS,TiDB,IM 通知系统诸如飞书、钉钉、企业微信等。
- 内部平台系统的串接:测试平台诸如 Apipost、Apifox,安全平台诸如 sonar 、火线 IAST,工单系统等。
合作伙伴可以用它:
- 如果你的客户也在用 Zadig ,可以通过自定义任务融合到 Zadig 工作流,一起为开发者服务
- 如果想让 Zadig 用户也成为你的用户,可以编排到 Zadig 工作流,让更多人认识你
个人开发者/高校学生可以用它:
- 向 Zadig 社区贡献任务,有机会采纳为官方任务,让数百企业客户用上你的代码
从 0 开发自定义任务
下面以打印输出 Hello Zadig
为例说明如何完成自定义任务的开发。
第一步:编码实现自定义任务的逻辑并保存,本例的源码 main.go 内容如下:
不限制语言和实现方式,根据自己擅长的技术栈实现想要的功能即可。
package main import ( "fmt" "github.com/spf13/viper" ) const WhoAmI = "WHO_AM_I" func main() { viper.AutomaticEnv() who_am_i := viper.GetString(WhoAmI) fmt.Printf("Hello %s", who_am_i) }
第二步:编译源代码,构建出镜像并 push 到镜像仓库中,相关命令及 Dockerfile 参考如下:
编译源码命令:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -v -o greeting-bot main.go
Dockerfile 内容:
FROM alpine/git:v2.30.2 # https://wiki.alpinelinux.org/wiki/Setting_the_timezone RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk add tzdata && \ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ echo Asia/Shanghai > /etc/timezone && apk del tzdata WORKDIR /app ADD greeting-bot . ENTRYPOINT ["/app/greeting-bot"]
镜像构建及 push 命令:
docker build -f Dockerfile --tag koderover.tencentcloudcr.com/koderover-public/jira-updater:v0.0.1-amd64 docker push koderover.tencentcloudcr.com/koderover-public/greeting-bot:amd64
第三步:编写 YAML 格式的任务配置文件,并将该 YAML 文件提交到代码库中。本例的 YAML 配置文件如下:
name: "输出 Hello 问候信息" # 任务名称 version: "v0.0.1" # 任务版本 description: "和指定用户 say Hello" # 任务描述 image: koderover.tencentcloudcr.com/koderover-public/greeting-bot:amd64 # 上一步中构建出来的镜像 inputs: # 配置在 Zadig 中可填写的变量 - name: who_am_i # 变量名称 description: "who am i" # 变量描述 type: string # 变量类型,支持 string(单行文本)和 text(多行文本)两种类型 default: "Zadig" # 变量的默认值 envs: # 环境变量,启动上述镜像容器时会自动注入为环境变量,除了 envs,还支持使用 cmds 和 args - name: WHO_AM_I # 环境变量名称 value: $(inputs.who_am_i) # 环境变量的值,使用 $(inputs.who_am_i) 形式表示使用 Zadig 中的输入
代码库中目录结构组织满足如下形式:
path/to/your/repo # 代码库根目录 ├── greeting-bot # 任务目录,有多个任务时,组织在单独的目录中 │ └── v0.0.1 # 版本号 │ └── bot.yaml # 任务的 YAML 文件
至此,一个完整的自定义工作流任务开发完毕,接下来我们看如何使用该任务。
使用自定义任务
首先在系统中集成代码源和镜像仓库,配置工作流任务来源:
- 集成代码源:访问
系统设置
->系统集成
->代码源集成
,将上述代码源在 Zadig 中集成。 - 集成镜像仓库:访问
系统设置
->基础设施
->镜像仓库
,将构建镜像对应的镜像仓库在 Zadig 中集成。 - 配置工作流任务来源:访问
系统设置
->工作流任务
,添加自定义工作流任务来源(即:YAML 配置文件所在的代码库)。配置完毕后便可在自定义工作流中使用该任务:新建自定义工作流 -> 添加任务 -> 选择任务 -> 按需填写参数后保存。
填写任务中变量的值后启动工作流即可。
更多进阶功能可参考 自定义工作流 | Zadig 文档。
有哪些已经开发好的自定义任务?
- Jira Issue 状态变更:结合 Zadig 工作流阶段来变更 Jira Issue 状态,打通与项目管理的联动。源码位置 jira-updater。
- 执行 Jenkins Job:传入 Jenkins 构建参数,触发指定的 Jenkins Job 执行,源码位置 jenkins-runner。
- MySQL 数据库变更:对 MySQL 数据库执行 SQL 语句,实现数据和代码变更联动变更,源码位置 mysql-runner。
如何贡献官方?
官方开放了工作流任务共享代码库:koderover/zadig-jobs,其中包含若干 demo 实现和场景描述,供开发者使用和参考。
Zadig,让工程师更专注创造。欢迎加入 开源吐槽群🔥

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
数据库/SQL 版本管理工具选型指北
数据库开发运维作为研发流程上的刚需场景,目前在行业内还尚未形成标准或者主流方案。 Zadig 作为云原生持续交付平台,我们关注最终产品的稳定性和业务交付能力,势必对该领域也抱有持续的关注度。我们有观察到在该领域有国内外大厂发力同样也有后起之秀,今天就这一领域的工具现状做初步的研究和分析,并对这些工具(Flyway、Liquibase、Bytebase、阿里 DMS)如何结合 Zadig 做了一些简要设计 ,希望能够帮助到大家。 Flyway Flyway (https://flywaydb.org)是一款开源的数据库版本管理工具,Flyway 可以独立于应用#实现管理并跟踪数据库变更,支持数据库版本自动升级,并且有一套默认的规约,无需复杂的配置,Migrations 可以写成 SQL 脚本,也可以写在 Java 代码中,不仅支持 Command Line 和 Java API,还支持 Build 构建工具和 Spring Boot 等,同时在分布式环境下能够安全可靠地升级数据库,支持失败恢复等。 支持数据库类型 支持所有关系型数据库: Oracle SQL Server (includ...
- 下一篇
共码未来丨2022 Google 谷歌开发者大会主旨演讲亮点回顾
终于等到你! 2022 Google 开发者大会 今日如约重聚 主旨演讲干货新鲜出炉 快来一起回顾! 谷歌一直积极帮助开发者灵活运用前沿科技,探索创新的方式以解决现实问题,以科技之力应对变化,帮助他人,如Google 大中华区总裁陈俊廷所强调:“谷歌一直在坚持整合全球信息,供大众使用,使人人受益的使命。” 在 “共码未来,Code for Better” 的主题引导下,谷歌携手开发者一起探索更强大的开发工具,更丰富的学习资源,构建更多元的社区生态,更广阔的全球舞台。 主旨演讲嘉宾概览 Google Developer X 和开发技术推广部副总裁兼总经理 JeanineBanks 表示帮助开发者打造面向当今和未来的产品是谷歌坚定的目标。今年谷歌持续针对开发者的多种需求,更新改进开发技术与产品,简化开发过程,助力开发实践更高效。 Google 开发技术推广工程师陈卓与大家分享了 Android 的最新动态。Android 13已正式推出,该版本加入了对隐私、生产力和现代标准的支持和增强,以帮助开发者更轻松地构建优质应用与产品。 现代Android 开发工具也进一步提升开发者生产力,其中A...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8编译安装MySQL8.0.19
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Mario游戏-低调大师作品
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,7,8上安装Nginx,支持https2.0的开启