前言

最近在使用GitLab CI/CD时发现一个使用“不太顺畅”的使用场景。具体是这样的:
作为一名开发者,有时需要同时负责几个前端项目的部署
修复a项目的bug后需要部署到测试环境,
修复b项目的bug后需要部署到测试环境。
。。。。

由于各种原因,这种场景的部署并非是自动部署的,需要负责人去手动创建部署流水线。比如为了给测试人员提供一个可靠,稳定的的测试环境,会采用手动部署环境。

这就导致一个问题,我需要先进入A项目,点击流水线,选择对应分支,创建一个流水线。
然后再进入B项目,重复以上操作。
过程是比较繁琐的,之所以会这样,是因为GitLab没有提供一种个人Ower项目的流水线管理。
类似下图 国产devops工具 建木的这种:
基于极狐GitLab OpenAPI与低代码Node-RED开发一个人项目Pipeline管理(查询流水线,创建流水线,重新触发流水线)插图

由于没有个人视角下的流水线管理,这就需要我们创建某个项目的流水线就必须进入项目内部。(或许在不久的将来,会有这样一个功能)。

这个问题的解决方案很简单,使用GitLab OpenAPI来实现流水线的管理,包括根据项目查询流水线,新建或重新运行流水线。但不管要写一些页面,还需要做一下后端发送请求查询GitLab数据的代码。

具体思路是很简单的,无奈本人业余时间实在不多,于是搁置了,直到有一天我突发奇想,能否用Node-RED这一低代码工具来实现这一全局流水的管理功能。

Node-RED是一个IBM开源的物联网项目。它是一个基于流的构建在Nodejs上的低代码事件驱动应用。
利用它丰富的节点我们可以做很多很多事情。
可以使用它的HTTP节点来发送HTTP请求,查询项目信息,流水线列表,或触发一条项目的流水线。
可以使用它的dashboard节点来提供页面面板功能。
在整个开发过程中你只需要配置一些必要参数即可,编写极少部分的JS代码,其他的数据流水流转,逻辑处理都交给Node-RED。

说干就干,下面就开始使用Node-RED与GitLab OpenAPI来实现DevOps 流水线管理

目标

初步分析,该功能主要包括以下四个核心功能:

  • 查询个人Owner项目列表
  • 根据项目查询项目下的分支列表
  • 查询项目流水线并展示
  • 新建流水线
  • 重新触发流水线

开始前的准备

安装Node-RED

这里推荐Docker安装Node-RED,比较简单

docker run -it -p 1880:1880 --name mynodered nodered/node-red

浏览器访问 http://127.0.0.1:1880/ 即可体验。这里不过多介绍,感兴趣的可以移步我的Node-RED专栏
Node-RED 编辑器操作页面
基于极狐GitLab OpenAPI与低代码Node-RED开发一个人项目Pipeline管理(查询流水线,创建流水线,重新触发流水线)插图1

其他安装方式可以查看该地址 https://nodered.org/docs/getting-started/

创建Token

由于我们要查询个人视角下的资源,所以创建一个Personal Access Tokens
基于极狐GitLab OpenAPI与低代码Node-RED开发一个人项目Pipeline管理(查询流水线,创建流水线,重新触发流水线)插图2

如下图
基于极狐GitLab OpenAPI与低代码Node-RED开发一个人项目Pipeline管理(查询流水线,创建流水线,重新触发流水线)插图3
创建后,记得保存起来,以为你和他只有一面之缘。

要使用的API

查询个人项目的API,需要携带?owned=true。表明只查询当前用户Owner的项目。

GET /projects

查询项目流水线的API

GET /projects/:id/pipelines

新建流水线(除了项目id,还需要必传参数ref 分支或tag)

POST /projects/:id/pipeline

重新触发流水线

POST /projects/:id/pipelines/:pipeline_id/retry

实践

我们将接口的基本地址与token保存为流变量,在整个流中都可以访问到。
然后在流运行后,先请求项目列表,传递给 dropdown节点,在新的页面上显示。
当用户选中项目后,请求项目分支列表,传递给另一个 dropdown节点,并显示在页面上。
当用户选中分支后,请求该分支下的流水线,并使用table节点显示到页面上。
当用户单击流水线表格中的某一行时,会重新运行该流水线。成功后会有通知
最后点击create pipeline 按钮后,会使用当前选中的项目与分支来创建一条新的流水线,成功后会有通知。

最终完整的流逻辑图是这样的
基于极狐GitLab OpenAPI与低代码Node-RED开发一个人项目Pipeline管理(查询流水线,创建流水线,重新触发流水线)插图4

流程操作完整动态图
基于极狐GitLab OpenAPI与低代码Node-RED开发一个人项目Pipeline管理(查询流水线,创建流水线,重新触发流水线)插图5

Node-RED支持将流数据导出,保存为JSON数据,该流程创建后,想要分享,分发,会变得非常容易,导出JSON数据,配置域名和token即可。有需要流文件的同学请在文章下留言。

总结

创造让工作更简单。希望对你有用。

相关新闻

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

邮箱

cloud@modbus.cn

QQ
QQ
微信
微信
分享本页
返回顶部