前言
在软件开发中,需要持续的集成和交付的任务,这里初探游戏开发中基础的CI/CD任务
项目流水线工具
- (推荐)现有的程序集成工具。例如Jenkins
https://github.com/jenkinsci/jenkins - windows任务计划
https://blog.51cto.com/xiaoyuanzheng/5662986 - linux 脚本命令,bat命令
- 自己撸代码
游戏项目会提供几条常用流水线(UE5)
1. 一条负责编译引擎流水线(BuildEngine)
- 主要作用:产生引擎二进制文件,提供给策划、美术或者没有权限的程序使用
- 触发条件:Hooks引擎代码SVN提交/定时
- 交付内容:引擎二进制
2. 一条负责项目编译(BuildProject)
- 主要作用:避免策划和美术编译项目,提前暴露项目Cpp编译错误,及时通知开发人员修复,防止开发阻塞
- 触发条件:Hooks项目Cpp SVN提交/定时
- 交付内容:可直接运行项目
- 参考pipline Jenkinsfile
pipeline {
agent any
stages {
stage('KillEditor') {
steps {
bat "F:/TempJenkinsSVN/BuildEditor/KillEditor.bat"
}
}
stage('SVNUpdate') {
steps {
bat "F:/TempJenkinsSVN/BuildEditor/UpdateSVN.bat"
}
}
stage('BuildProject') {
steps {
bat "F:/TempJenkinsSVN/BuildEditor/BuildProject.bat"
}
}
}
}
3. 一条负责打日构建(主干包)
- 主要作用:产生每日稳定测试包,用于测试人员每日测试,及时暴露包体问题,提高项目稳定性
- 触发条件:定时/主动触发
- 交付内容: 目标平台测试安装包
- 参考pipline Jenkinsfile
pipeline {
agent any
stages {
stage('Change2BaseConfig') {
steps {
bat "F:/TempJenkinsSVN/PackProject/Change2BaseAPKConfig.bat"
}
}
stage('PackBase') {
steps {
bat "F:/TempJenkinsSVN/PackProject/Packbase.bat"
}
}
stage('Change2PakConfig') {
steps {
bat "F:/TempJenkinsSVN/PackProject/Change2PakConfig.bat"
}
}
stage('PackPak'){
steps {
bat "F:/TempJenkinsSVN/PackProject/PackPak.bat"
}
}
}
}
UE Android打包配置
需要准备三个内容
- SDK
- NDK
- JDK
主要是要确认UE4的版本号与相应的Android Studio.
4.26 Android Studio 4.0 并安装在默认位置
如果安装在默认位置,直接到引擎下的Extras目录下执行
Android Setup.bat后进入具体项目在项目设置里,可以配置SDK. NDK. JDK的目录
如果执行了上述批处理工具,就不用再单独下载NDK。
JDK去Java官方下载或者使用AndroidStudio自带的
SDK就是android studio生成的目录
NDK可以自己去下
4. 一条负责打分支稳定包(大版本迭代)
- 主要作用:隔离主干不稳定性,产生可发布包
- 触发条件:定时/主动触发
- 交付内容:目标平台发布安装包
5. 一条负责定时执行一些任务(例如,数据配置,渲染任务,自动化测试等)
- 主要作用:执行一些耗时,容易遗漏,复杂繁琐的流程
- 触发条件:被动触发/定时
其他
Jenkins的使用方法
- 安装(下载jenkins和java)
- 创建Jenkinsfile文件版本仓库Client和Server
- Jenkins安装SVN插件
- 新建一条pipline,设置Jenkinsfile获取方式为SVN,配置对应的SVN仓库路径
- 修改jenkinsfile,并提供每个阶段的命令
- 完成