使用流水线插件实现持续集成、持续部署

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 本文将介绍使用流水线插件部署 RuoYi SpringBoot 项目,并实现提交代码后自动构建、自动部署。

流水线插件 是基于 Rainbond 插件体系 扩展实现,通过插件化的方式,可以实现对 Rainbond 构建体系的扩展。该插件由社区合作伙伴 拓维信息 参与开发并贡献,底层是基于 GitLab CI/CD 实现。

流水线构建与 Rainbond 源码构建的区别是:

  • Rainbond 源码构建:使用简单,固定的构建模式,用户只需提供源代码,但不是很灵活。
  • 流水线构建:自定义构建步骤,使用更加灵活。

本文将介绍使用流水线插件部署 RuoYi SpringBoot 项目,并实现提交代码后自动构建、自动部署。

安装 GitLab 和 Runner

流水线插件是基于 GitLab 实现,所以需要依赖 GitLab 和 GitLab Runner,如果已有则可跳过此步。

通过 Rainbond 开源应用商店部署 GitLab 和 Runner,进入到 平台管理 -> 应用市场 -> 开源应用商店 中分别搜索 GitLabGitLab-runner,选择版本进行安装,分别安装到同一个应用内。

部署完成后,访问 GitLab 默认的域名进行用户注册。然后关闭 GitLab 默认的 AutoDevOps:Admin -> Settings -> CI/CD -> Continuous Integration and Deployment 取消勾选 Default to Auto DevOps pipeline for all projects

注册 Runner

GitLab 和 Runner 都部署完成后,需要将 Runner 注册到 GitLab 中。

进组 Runner 组件内 -> Web 终端,执行以下命令进行注册:

  • <URL> 为 GitLab 访问地址
  • <TOKEN> 在 GitLab 的 Admin -> Runners 获取 Registration token
  • <TAG> 自定义 Runner 的标签。
gitlab-runner register \
  --non-interactive \
  --executor "docker" \
  --docker-image alpine:latest \
  --url "<URL>" \
  --registration-token "<TOKEN>" \
  --description "docker-runner" \
  --tag-list "<TAG>" \
  --run-untagged="true" \
  --locked="false" \
  --docker-volumes /var/run/docker.sock:/var/run/docker.sock \
  --docker-volumes /root/.m2/repository \
  --docker-privileged="true" \
  --access-level="not_protected" \
  --docker-pull-policy="if-not-present"

注册完成后,可以在Admin -> Runners 页面中看到如下图,Statusonline 则正常。

安装流水线插件

通过 Rainbond 开源应用商店部署 Pipeline 应用插件,进入到 平台管理 -> 应用市场 -> 开源应用商店 中搜索 Pipeline,选择对应的版本进行部署。

安装完成后,需要修改 Pipeline-Backend 服务的配置,进入到 Pipeline 应用内 -> Pipeline-Backend组件内,修改以下环境变量:

  • RAINBOND_URL:Rainbond 控制台访问地址,例如:http://192.168.3.33:7070
  • RAINBOND_TOKEN:Rainbond 控制台的 Token,可以在 右上角用户 -> 个人中心 -> 访问令牌 中获取。

修改完成后,更新或重启 Backend 组件生效。

进入到 Pipeline 应用内 -> k8s 资源 -> 编辑 rainbond-pipeline,修改 pipeline 资源中的 access_urls 配置,修改为 Pipeline-UI 组件的对外访问地址,如下:

apiVersion: rainbond.io/v1alpha1
kind: RBDPlugin
metadata:
  labels:
    plugin.rainbond.io/name: pipeline
  name: pipeline
spec:
  access_urls:
  - https://custom.com
  alias: Pipeline
  author: Talkweb
  description: 该应用插件是基于 GitLab CI/CD 实现,扩展 Rainbond 已有的构建体系。
  icon: https://static.goodrain.com/icon/pipeline.png
  version: 1.0.0

修改完成后,就可以在每个团队视图中看到 流水线 按钮选项了。

部署 RuoYi 项目

将 Gitee 中的 RuoYi 项目 Fork 到私有的 GitLab 中。

修改项目配置文件中的 mysql 连接地址:

# ruoyi-admin/src/main/resources/application-druid.yml
......
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.cj.jdbc.Driver
        druid:
            # 主库数据源
            master:
                url: jdbc:mysql://${MYSQL_HOST}:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                username: root
                password: root

部署 MySQL

通过 Rainbond 开源应用商店部署 MySQL 即可。部署之后打开 MySQL 对外服务端口,通过本地工具连接到数据库并创建 ry 数据库和初始化 sql 目录下的 quartz.sqlry_20230223.sql

部署 RuoYi SpringBoot

进入到 团队视图 -> 流水线

1.创建流水线

进入流水线管理,选择 Java Maven 单模块的模版创建。

如果没有 SonarQube 代码扫描步骤可以删除,修改 编译构建物 步骤:

  • 制品目录:ruoyi-admin/target/*.jar

修改 构建镜像 步骤:

  • 脚本命令:

    cp ruoyi-admin/target/*.jar app.jar
    docker login -u ${REPOSITORY_USERNAME} -p ${REPOSITORY_PASSWORD} ${REPOSITORY_URL}
    docker build -t  ${REPOSITORY_URL}/${ORG}/${MODULE}:${DEVOPS_VERSION} .
    docker push ${REPOSITORY_URL}/${ORG}/${MODULE}:${DEVOPS_VERSION}

在流水线的变量内,指定 Docker 相关的环境变量用于打包镜像和推送镜像:

  • REPOSITORY_URL:镜像仓库地址,如:registry.cn-hangzhou.aliyuncs.com
  • ORG:镜像仓库组织,例如:goodrain
  • REPOSITORY_USERNAME:镜像仓库用户名
  • REPOSITORY_PASSWORD:镜像仓库密码

2.创建应用服务

  • 服务编码:唯一的
  • 服务名称:自定义
  • 流水线:选择流水线模版
  • 仓库配置:填写仓库地址,如:http://gitlab.test.com/root/ruoyi.git
  • 认证配置:可选用户密码或Token

创建应用服务后,可在 GitLab 仓库内看到多了两个文件 Dockerfile.gitlab-ci.yml ,这是由流水线插件服务自动生成并提交到仓库内。

3.构建服务

进入 代码管理,应用服务选择 ruoyi,点击 构建 按钮开始构建。可以在持续集成页面看到构建状态以及步骤,点击步骤可跳转至 GitLab 详情页。

4. 部署后端服务

等待构建完成后,即可在镜像仓库中看到构建的镜像版本,接下来就可以通过该版本进行部署,可选择部署到当前团队下的哪个应用内。

部署完成后,可在部署历史页面看到部署历史,点击部署详情跳转到 Rainbond 组件内。

编辑依赖关系

接下来进入到应用内,切换到编排模式将 ruoyi 服务依赖至 MySQL 服务,并更新 ruoyi 组件。

进入到 ruoyi 组件内 -> 端口,添加 80 端口并打开对外服务,即可通过默认的域名访问到 ruoyi UI。

配置自动构建和自动部署

编辑已经创建的应用服务,打开自动构建和自动部署按钮,下次提交代码时将会自动触发整个流程。

最后

通过流水线插件可以更灵活的扩展构建过程,比如增加代码扫描、构建成功后的消息通知等等。流水线插件也会持续迭代,欢迎大家安装使用!

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
监控 前端开发 测试技术
如何实现前端工程化的持续集成和持续部署?
通过以上步骤,可以建立一套完整的前端工程化 CI/CD 流程,实现前端代码从开发、测试、构建到部署的全自动化,提高开发效率、保证代码质量,快速响应用户需求和市场变化。
|
5月前
|
存储 文字识别 自然语言处理
通义大模型在文档自动化处理中的高效部署指南(OCR集成与批量处理优化)
本文深入探讨了通义大模型在文档自动化处理中的应用,重点解决传统OCR识别精度低、效率瓶颈等问题。通过多模态编码与跨模态融合技术,通义大模型实现了高精度的文本检测与版面分析。文章详细介绍了OCR集成流程、批量处理优化策略及实战案例,展示了动态批处理和分布式架构带来的性能提升。实验结果表明,优化后系统处理速度可达210页/分钟,准确率达96.8%,单文档延迟降至0.3秒,为文档处理领域提供了高效解决方案。
678 1
|
7月前
|
弹性计算 机器人 应用服务中间件
一键部署开源Qwen3并集成到钉钉、企业微信
Qwen3系列模型现已正式发布并开源,包含8款“混合推理模型”,其中涵盖两款MoE模型(Qwen3-235B-A22B与Qwen3-30B-A3B)及六个Dense模型。阿里云计算巢已支持Qwen3-235B-A22B和Qwen3-32B的私有化部署,用户可通过计算巢轻松完成部署,并借助AppFlow集成至钉钉机器人或企业微信。文档详细介绍了从模型部署、创建应用到配置机器人的全流程,帮助用户快速实现智能助手的接入与使用。
622 19
一键部署开源Qwen3并集成到钉钉、企业微信
|
6月前
|
JSON 缓存 并行计算
NVIDIA 实现通义千问 Qwen3 的生产级应用集成和部署
阿里巴巴近期开源了通义千问Qwen3大语言模型(LLM),包含两款混合专家模型(MoE)235B-A22B与30B-A3B,以及六款稠密模型(Dense)从0.6B到32B不等。开发者可基于NVIDIA GPU使用TensorRT-LLM、Ollama、SGLang、vLLM等框架高效部署Qwen3系列模型,实现快速词元生成和生产级应用开发。
|
9月前
|
人工智能 Kubernetes jenkins
容器化AI模型的持续集成与持续交付(CI/CD):自动化模型更新与部署
在前几篇文章中,我们探讨了容器化AI模型的部署、监控、弹性伸缩及安全防护。为加速模型迭代以适应新数据和业务需求,需实现容器化AI模型的持续集成与持续交付(CI/CD)。CI/CD通过自动化构建、测试和部署流程,提高模型更新速度和质量,降低部署风险,增强团队协作。使用Jenkins和Kubernetes可构建高效CI/CD流水线,自动化模型开发和部署,确保环境一致性并提升整体效率。
|
4月前
|
物联网 Linux 开发者
快速部署自己私有MQTT-Broker-下载安装到运行不到一分钟,快速简单且易于集成到自己项目中
本文给物联网开发的朋友推荐的是GMQT,让物联网开发者快速拥有合适自己的MQTT-Broker,本文从下载程序到安装部署手把手教大家安装用上私有化MQTT服务器。
1351 5
|
6月前
|
人工智能 安全 Shell
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
Jupyter MCP服务器基于模型上下文协议(MCP),实现大型语言模型与Jupyter环境的无缝集成。它通过标准化接口,让AI模型安全访问和操作Jupyter核心组件,如内核、文件系统和终端。本文深入解析其技术架构、功能特性及部署方法。MCP服务器解决了传统AI模型缺乏实时上下文感知的问题,支持代码执行、变量状态获取、文件管理等功能,提升编程效率。同时,严格的权限控制确保了安全性。作为智能化交互工具,Jupyter MCP为动态计算环境与AI模型之间搭建了高效桥梁。
456 2
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
|
9月前
|
人工智能 Java API
支持 40+ 插件,Spring AI Alibaba 简化智能体私有数据集成
通过使用社区官方提供的超过 20 种 RAG 数据源和 20 种 Tool Calling 接口,开发者可以轻松接入多种外部数据源(如 GitHub、飞书、云 OSS 等)以及调用各种工具(如天气预报、地图导航、翻译服务等)。这些默认实现大大简化了智能体的开发过程,使得开发者无需从零开始,便可以快速构建功能强大的智能体系统。通过这种方式,智能体不仅能够高效处理复杂任务,还能适应各种应用场景,提供更加智能、精准的服务。
1342 89
|
9月前
|
弹性计算 人工智能 应用服务中间件
一键部署开源DeepSeek并集成到企业微信
DeepSeek近期发布了两款先进AI模型V3和R1,分别适用于通用应用和推理任务。由于官方API流量过大,建议通过阿里云的计算巢进行私有化部署,以确保稳定使用。用户无需编写代码即可完成部署,并可通过AppFlow轻松集成到钉钉、企业微信等渠道。具体步骤包括选择适合的机器资源、配置安全组、创建企业微信应用及连接流,最后完成API接收消息配置和测试应用。整个过程简单快捷,帮助用户快速搭建专属AI服务。
1769 7
一键部署开源DeepSeek并集成到企业微信
|
存储 监控 Devops
DevOps实践:持续集成/持续部署(CI/CD)的实战指南
DevOps实践:持续集成/持续部署(CI/CD)的实战指南