【教程】Unity CI/CD流程

测试机:红帽 Linux8
源码仓库:Gitee - MrRiver/Unity Example

系统环境准备


1)yum 源

sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
sudo sed -i 's/\$releasever/8/g' /etc/yum.repos.d/CentOS-Base.repo  # 强制指定RHEL8版本

使用公网的 yum 源作为首选项。若需要离线部署,则应当自行准备以下内容:

  • Jenkins
  • java-17-openjdk-devel
  • git

如何准备 rpm 包,可参考 【教程】准备离线可用的 RPM 包。

2)准备工具集

sudo dnf groupinstall -y "Development Tools"
sudo dnf install -y git wget unzip curl which

注意!git 是CI/CD流程中必备的工具。

3)JAVA 环境

sudo dnf install -y java-17-openjdk-devel

注意:存在系统已安装 Java-jdk 的情况。请确保版本至少在11以上。当系统存在多版本 JAVA-JDK 时,应考虑 Jenkins 使用的 JAVA-JDK 版本对象,否则会出现 Jenkins 启动失败问题。

4)部署 Jenkins

# 导入 Jenkins 仓库
# 来源 Jenkins 官方关于 Redhat 稳定版的仓库配置文件
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo# 验证软件包完整性/真实性的GPG密钥
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key# 安装
sudo dnf install -y jenkins
# 服务自启动与立即运行
sudo systemctl enable jenkins --now
sudo systemctl start jenkins

访问 Jenkins 地址:主机地址:8080
Jenkins 配置环境+账户参考:【教程】Jenkins 基础环境配置 + 账号管理

5)部署 Unity 2021.3.22

# 访问 Unity 官网下载 Unity Hub 
# 以 Unity 2022.3.62f1c1 为准
# 补充 LInux Build Support(IL2CPP)模块

建议使用图形界面安装。

Jenkins 环境准备


1)插件安装

Unity3d  - 核心插件

2)配置全局环境

指引:Manage Jenkins / System Configuration / Tools
Jenkins 需要指导 Git Unity3d 工具源。因此需要配置其启动程序!

图1 Git 源配置
图2 Unity 源配置

3)配置任务

指引:Jenkins / Create New Item / Freestyle project

图1 Git 拉取仓库
图2 使用 Unity 自动化构建源码工程内容

关于 Git

要求 Jenkins 可访问 Git 仓库地址。若仓库存在于公网,则需保证网络可达!

关于 Unity3d
-batchmode -quit -nographics -projectPath ${WORKSPACE}/CICD -executeMethod BuildScript.PerformBuild -logFile ${WORKSPACE}/CICD/build.log
  • -batchmode:无交互式界面
  • -quit:执行完成后退出
  • -nographics:禁用图形渲染
  • -projectPath ${WORKSPACE}/CICD:默认情况下,Jenkins 任务对应存储至其 WORKDSPACE 下。这意味着你的任何 Git 文件均是基于该目录下存储。故 ${WORKSPACE} ☞ Jenkins工作空间。如所示我的工作空间为目录下 CICD 目录。
  • -executeMethod BuildScript.PerformBuild:调用构建方法
  • -logFile ${WORKSPACE}/CICD/build.log:日志输出路径
对于 Unity 源码
见 https://gitee.com/River314588804/unity-example/blob/master/CICD/Assets/Editor/BuildScript.cs

Unity3d 插件执行构建要求源码工程路径 Asset/Editor/BuildScript.cs 文件存在,并严格要求 PerformBuild 静态方法。

关于推送即构建


如 Gitee 为例。需要安装 Gitee Plugin。

图1 Gitee 插件
图2 构建配置中的触发器 & Webhook
图3 Gitee 配置 Webhook

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/94502.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/94502.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文献阅读 | Briefings in Bioinformatics | Hiplot:全面且易于使用的生物医学可视化分析平台

文献介绍文献题目: Hiplot:一个综合且易于使用的 Web 服务,用于增强出版物准备的生物医学数据可视化 研究团队: Openbiox/Hiplot 社区 发表时间: 2022-07-05 发表期刊: Briefings in Bioinformatics 影响因…

【数字图像处理系列笔记】Ch04:灰度变换与空间域图像增强(2)

目录 一、空域滤波基础 一、空域滤波的基本概念 二、空域滤波的数学原理 三、空域滤波器的分类与典型示例 (一)线性滤波器(Linear Filter) (二)非线性滤波器(Non-linear Filter&#xff0…

AI浪潮下,FPGA如何实现自我重塑与行业变革

引言:AI 与 FPGA,新时代的碰撞 2025 年,人工智能技术迎来爆发式增长,大模型、生成式 AI 和多模态技术持续突破,人形机器人量产元年正式开启,自动驾驶商业化进程加速,工业数字化转型全面铺开(1)…

系统集成项目管理工程师【第十一章 规划过程组】定义范围、创建WBS、规划进度管理和定义活动篇

系统集成项目管理工程师【第十一章 规划过程组】定义范围、创建WBS、规划进度管理和定义活动篇 一、定义范围:给项目画好"边界线" 定义范围是明确项目和产品"做什么、不做什么"的过程,直接影响后续所有工作的方向。 1. 核心概念与作…

Spring Boot 参数校验全指南

Spring Boot 参数校验全指南 在 Web 开发中,参数校验是保障接口安全性和数据合法性的关键环节。手动编写校验逻辑不仅繁琐,还容易遗漏边界情况。Spring Boot 整合了 validation 工具,提供了一套简洁高效的参数校验方案,可快速实现…

常用技术资料链接

1.team技术 https://zhuanlan.zhihu.com/p/11389323664 https://blog.csdn.net/Lucky_Lu0/article/details/121697151 2.bond切换主备 https://www.xgss.net/3306.html 3.ssh详解: https://cloud.tencent.com/developer/news/105165 https://blog.huochengrm.c…

【Spring Cloud】-- 注册中心

文章目录1. 什么是注册中心2. CPA理论1. 什么是注册中心 注册中心有三种角色: 服务提供者(Server) :提供接口给其他微服务的程序。服务消费者(Client):调用其他微服务提供的接口。**服务注册中…

go-zero 详解

go-zero 详解 go-zero 是一个基于 Go 语言的微服务框架,由字节跳动团队开发并开源,旨在帮助开发者快速构建高可用、高性能的微服务架构。它集成了丰富的组件,简化了微服务开发中的常见问题(如服务注册发现、配置管理、限流熔断等&…

接口自动化框架封装之统一请求封装及通过文件实现接口关联

接口自动化测试框架封装目的:简化自动化框架的落地,提高投入和产出比,只要一个人封装好框架,另外的测试通过写yaml测试用例即可实现接口自动化1.统一请求的封装去除多余重复的代码可跨py文件实现通过一个session来自动关联有cookie的接口设置统一公共参数,统一文件处理,统一异常…

Vue 最佳实践:如何利用唯一 key 值保证 el-table 动态渲染的稳定性

📋 问题描述 在Vue 2.0 ElementUI项目的偏置条件管理页面中,每次切换到"内规拉偏"菜单时,表格样式会发生崩溃,导致表格布局异常、列宽错乱、固定列显示不正确等问题。 🔍 问题分析 通过深入分析代码&#x…

popen开启进程,写入数据

通过管道&#xff08;popen&#xff09;启动 SDIWAN_WEB 进程并写入 JSON 数据的过程可以分为以下步骤&#xff0c;结合代码示例和关键注意事项进行说明&#xff1a;1. 核心代码示例 #include <stdio.h> #include <json-c/json.h>int main() {// 1. 创建 JSON 对象…

计算机视觉的四项基本任务辨析

计算机视觉是使计算机能理解采集设备采集的图像视频的一门学科&#xff0c;目的是让计算机实现人的视觉功能——对客观世界的三维场景的感知、识别和理解。换句话说&#xff0c;要让计算机具备通过二维图像认识三维环境的能力。 目录 三个阶段 视觉层级 基本任务 技术难点…

iostat 系统IO监控命令学习

一、iostat 命令描述 “iostat”命令用于监测系统输入/输出设备的负载情况&#xff0c;其通过观察设备处于活跃状态的时间与平均传输速率之间的关系来实现这一目的。该命令会生成报告&#xff0c;这些报告可用于调整系统配置&#xff0c;以更好地平衡物理磁盘之间的输入/输出负…

jenkins使用ssh方式连接gitee 公钥、私钥配置、指纹

前言 Gitee 提供了基于 SSH 协议的 Git 服务&#xff0c;jenkins可使用ssh方式连接gitee&#xff0c;拉取代码、提交tag等&#xff1b;使用ssh 连接&#xff0c;相比用户名密码方式&#xff0c;可省去因密码变更而引起的jenkins关联修改。 gitee生成、添加 SSH 公钥 生成SSH…

如何在Android设备上删除多个联系人(3种方法)

如果您想清理安卓手机&#xff0c;或者只是想删除旧的、不需要的联系人&#xff0c;或者删除多个联系人&#xff0c;有三种有效的方法可供选择。无论您是想手动删除安卓手机上的联系人&#xff0c;还是使用专用工具&#xff0c;都可以按照以下步骤操作。方法1&#xff1a;如何通…

Angular进阶之十三:Angular全新控制流:革命性的模板语法升级

随着Angular v17的发布&#xff0c;框架带来了革命性的控制流语法&#xff0c;彻底改变了我们编写模板的方式。这些改进不仅仅是语法糖——它们提升了性能、开发体验和代码可维护性。 为什么我们需要新的控制流&#xff1f; 在之前的Angular版本中&#xff0c;我们使用结构指令…

【Redis】string字符串

目录 一.常见命令 1.1.SET 1.2.GET 1.3.MGET 1.4.MSET 1.5.SETNX 二.计数命令 2.1.INCR 2.2.INCRBY 2.3.DECR 2.4.DECYBY 2.5.INCRBYFLOAT 三 . 其他命令 3.1.APPEND 3.2.GETRANGE 3.3.SETRANGE 3.4.STRLEN 四. 字符串类型内部编码 五. 典型使用场…

Nginx 学习

通过网盘分享的文件&#xff1a;Nginx 链接: https://pan.baidu.com/s/1dCc7FoND90H_x7rvRUXJqg 提取码: yyds 通过网盘分享的文件&#xff1a;Tomcat 链接: https://pan.baidu.com/s/1nj_5j_66gS_YHUAX1C25jg 提取码: yyds Nginx安装、启动 安装依赖库 #安装C编译器 yum insta…

Java、Android及计算机基础面试题总结

1. String、StringBuffer、StringBuilder区别特性StringStringBufferStringBuilder可变性不可变可变可变线程安全是是(synchronized)否性能低(频繁操作时)中等高场景字符串常量多线程字符串操作单线程字符串操作2. 接口和抽象类的区别特性接口(Interface)抽象类(Abstract Class…

数据集相关类代码回顾理解 | sns.distplot\%matplotlib inline\sns.scatterplot

【PyTorch】单目标检测项目 目录 os.path.join sns.distplot adjust_brightness os.path.join fullPath2imgos.path.join(path2data,"Training400",prefix,imgName[id_]) 使用os.path.join函数&#xff0c;智能地处理不同操作系统中的路径分隔符问题&#xff0…