写点什么

如何用建木 CI 构建 / 发布建木 Hub 节点定义版本

作者:Jianmu
  • 2022 年 1 月 10 日
  • 本文字数:2318 字

    阅读完需:约 8 分钟

如何用建木CI构建/发布建木Hub节点定义版本

事情是这样的,作为一名热爱工作的程序员,定期检查系统服务是我的日常,并且还要将检查结果发送邮件给同事。这事情虽然简单,但是确实有点繁琐,真是脑壳痛


刚好最近正在使用建木 CI,里面的任务都是通过一个一个节点来执行的,突然想到🤔,我把检查任务和发送邮件的任务写成两个节点,再加个 Trigger 定时执行不就行了吗!然后不就可以心安理得的摸个鱼了吗😀



说干就干,开始查看建木 CI 官方文档:https://docs.jianmu.dev

找到了自定义节点的文档:



以发送邮件的节点为例,接下来开始自定义节点!

1.创建节点

节点都在建木Hub上管理,我们可以在这里创建自定义节点

  1. 首先登录建木 Hub

  2. 点击右上角的头像进入个人中心,点击创建节点

  3. 填写节点信息



点击创建,节点就创建成功了。但是节点是通过版本来管理的,我们还需要添加节点的版本

2.完成节点代码

看了一下,目前的节点,都是通过 Docker 容器运行的,因此我们也要定义 docker 运行的环境和脚本文件

  • 脚本文件

脚本文件是节点任务执行时运行的代码,下图为 send_email.py 文件示例:



  • Dockerfile

描述自定义镜像信息的文件



  • DSL

DSL 是用来描述节点版本的,包括节点 ref、节点版本号、输入输出参数、镜像等信息,文件格式为 yml,具体参数信息可以查看官方文档



3.添加节点版本

接下来就到了文章的主题了,添加节点版本,有两种方式可以添加版本

3.1 通过建木 Hub 添加

在建木 Hub,节点详情界面,点击新增版本,将仓库中定义的 DSL 复制进去,点击确定就可以了

如果是只发一次版本的话,该方法比较简单,粘贴复制就完了

注:在添加版本之前,需要将镜像发布到 Dockerhub,否则节点任务执行时会找不到镜像



3.2 通过建木 CI 添加

hub_publish 节点需要输入参数 hub_api_ak、hub_api_sk,获取步骤:



  • 手动触发

建木 CI 可以先通过 git_clone 节点拉取节点仓库,再通过 hub_publish 节点发布版本,节点文档已经详细描述了每个参数的作用,这里就不多做解释了

保存好项目 DSL 后,手动点击触发,待运行完毕后就发布成功了

项目 DSL 如下:

name: 发布send_email节点pipeline:  git_clone:    type: git_clone:1.2.0    param:      remote_url: https://gitee.com/WannerBai/send-email.git  # 发布镜像  image_build:    type: docker_image_build:1.0.1    param:      workspace: ${git_clone.git_path}      docker_username: ((dockerhub.username))      docker_password: ((dockerhub.password))      docker_file: dockerfile/Dockerfile      image_name: wannerbai/send_email      image_tag: 1.0.0      docker_build_path: .  # 发布版本  hub_publish:    type: hub_publish:1.1.0    param:      hub_url: https://hub.jianmu.dev      dsl_file_path: ${git_clone.git_path}/dsl/send_email.yml      hub_api_ak: ((jianmuhub.ak))      hub_api_sk: ((jianmuhub.sk))      version: 1.0.0      image: ((dockerhub.username))/send-email:1.0.0
复制代码
  • webhook 触发

如果需要对节点版本进行管理的话,建议使用该方式发布版本,可以新建标签发布节点新版本,也可以通过标签查看之前的版本

步骤如下:

1.在 gitee 仓库添加 webhook,URL 为项目保存后,建木 CI 自动生成的 webhook 地址,事件为 Tag push,密码可以选择设置

查看 webhook URL:


在 gitee 仓库添加 webhook:


2.在 gitee 仓库中,创建新标签1.0.0,该事件会触发建木 CI 中的发布 send_email 节点,然后自动发布版本

项目 DSL 如下:

name: 发布send_email节点global:  param:    image_name: wannerbai/send_email    version: 1.0.0    trigger:  type: webhook  param:    - name: gitee_token      type: SECRET      exp: $.header.X-Gitee-Token    - name: gitee_event      type: STRING      exp: $.header.X-Gitee-Event    - name: gitee_tag_created      type: BOOL      exp: $.body.json.created    - name: gitee_ref      type: STRING      exp: $.body.json.ref  # auth校验,value和token相同时才会触发项目  auth:    token: ${trigger.gitee_token}    value: ((gitee.webhook_runner_token))  only: (${trigger.gitee_event} === "Tag Push Hook" && ${trigger.gitee_tag_created})  pipeline:  git_clone:    type: git_clone:1.2.0    param:      remote_url: https://gitee.com/WannerBai/send-email.git      ref: ${trigger.gitee_ref}  # 发布镜像  image_build:    type: docker_image_build:1.0.1    param:      workspace: ${git_clone.git_path}      docker_username: ((dockerhub.username))      docker_password: ((dockerhub.password))      docker_file: dockerfile/Dockerfile      image_name: ${global.image_name}      # 镜像版本为gitee标签      image_tag: ${git_clone.git_tag}      docker_build_path: .  # 发布版本到建木Hub  hub_publish:    type: hub_publish:1.1.0    param:      hub_url: https://hub.jianmu.dev      dsl_file_path: ${git_clone.git_path}/dsl/send_email.yml      hub_api_ak: ((jianmuhub.ak))      hub_api_sk: ((jianmuhub.sk))      image: ${global.image_name}:${git_clone.git_tag}      # 节点版本为gitee标签      version: ${git_clone.git_tag}
复制代码

至此,节点版本就发布成功了,以后发布新的版本,只需要新建新的标签就可以了,太方便了!

接下来就可以在建木 CI 中使用自定义的节点了,漂亮!

本文为建木博主「早春的树」的原创投稿文章,转载请联系授权。

项⽬官⽹:https://jianmu.dev

项⽬托管:https://gitee.com/jianmu-dev

项⽬文档:https://docs.jianmu.dev

在线体验:https://ci.jianmu.dev


发布于: 刚刚阅读数: 2
用户头像

Jianmu

关注

国产开源CI/CD产品 2020.08.10 加入

建木持续集成平台基于建木,致力于为国内开发者与DevOps人员提供极致用户体验,提升开发、上线、运维的效率,让软件用户专注于提供业务价值。

评论

发布
暂无评论
如何用建木CI构建/发布建木Hub节点定义版本