基于极狐GitLab OpenAPI与低代码Node-RED开发一个人项目Pipeline管理(查询流水线,创建流水线,重新触发流水线)

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

基于极狐GitLab OpenAPI与低代码Node-RED开发一个人项目Pipeline管理(查询流水线,创建流水线,重新触发流水线)缩略图
🌐 This page is not yet available in English. Showing the Chinese version. Back to Chinese page.
本文目录
  1. 1. 前言
  2. 2. 目标
  3. 3. 开始前的准备
  4. 4. 安装Node-RED
  5. 5. 创建Token
  6. 6. 要使用的API
  7. 7. 实践
  8. 8. 总结

前言

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

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

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

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

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

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

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

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

目标

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

  • 查询个人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 Edit器Operation页面
基于极狐GitLab OpenAPI与低代码Node-RED开发一个人项目Pipeline管理(查询流水线,创建流水线,重新触发流水线)插图1

其他安装方式可以View该address 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

实践

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

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

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

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

总结

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

来源/Tools信息 —— 点击展开
来源 Modbus Chinese Network(modbus.cn) —— China leadingModbuscommunication protocol technical community Category Modbus编程开发 字数 1786 字 · 阅读约 5 分钟 更新 2023-02-09 永久链接 https://www.modbus.cn/11647.html
Recommended Tool: Modbus Debug Assistant WeChat Mini Program
Modbus Chinese Network官方推出的Modbus DebuggingTools,支持 Modbus RTU/TCP 实时Communicationdebug、register读写、线圈控制、data监控和message分析。 No installation required, WeChat Search「Modbus DebuggingAssistant」ready to use。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
Related Tags
Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.