UE构建基础和实践:五、CI/CD平台自动化打包
序言
使用CI/CD平台构建(这里使用蓝盾平台)主要是通过平台脚本运行上一章的py脚本并传递参数(即把py中的参数开放给配置平台脚本配置)。
Build.py 重构
我们需要在py脚本里面解析和设置参数
import sys
import os
import getopt
def main(argv):
ProjectName = ""
ProjectDir = ""
Unrealexe = ""
Platform = ""
ClientConfig = ""
SkipBuildProject = ""
SkipBuildEditor = ""
UATDir = ""
script = ""
EditorIOPort = "54689"
target = "MyBuild"
OutputDir = ""
opts = ""
try:
opts, _ = getopt.getopt(argv, "", ["enginedir=", "projectname=", "projectdir=", "tooldir=", "platform=", "buildcfg=", "skipeditor=", "skipproject="])
except getopt.GetoptError:
print("Build.py argv err!")
for opt, arg in opts:
if opt == "--enginedir":
Unrealexe = rf"{arg}\Engine\Binaries\Win64\UnrealEditor-Cmd.exe"
UATDir = rf"{arg}\Engine\Build\BatchFiles\RunUAT.bat"
if opt == "--projectname":
ProjectName = arg
if opt == "--projectdir":
ProjectDir = arg
if opt == "--tooldir":
script = rf"{arg}\Build.xml"
OutputDir = rf"{arg}\Result"
if opt == "--platform":
Platform = arg
if opt == "--buildcfg":
ClientConfig = arg
if opt == "--skipeditor":
SkipBuildEditor = arg
if opt == "--skipproject":
SkipBuildProject = arg
cmd = f"-set:ProjectName={ProjectName} -set:ProjectDir={ProjectDir} -set:Platform={Platform}" \
f" -set:ClientConfig={ClientConfig} -set:OutputDir={OutputDir} -set:SkipBuildProject={SkipBuildProject}" \
f" -set:SkipBuildEditor={SkipBuildEditor} -set:Unrealexe={Unrealexe} -set:EditorIOPort={EditorIOPort}"
cmd = f"{UATDir} BuildGraph -Script={script} -Target={target} {cmd}"
print(f"cmd: {cmd}")
ret = os.system(cmd)
if ret == 0:
print(f"run build ret val = {ret}")
else:
raise Exception("project build faild!")
if __name__ == "__main__":
main(sys.argv[1:])
input("build succ")
如代码所示,我们把上一章写死的参数变成根据传入参数进行配置。
Build.bat重构
@echo Build.bat Run
python3 Build.py %*
%* 表转发参数
蓝盾(CI/CD)脚本
概览

- 触发方式&参数配置
- 构建Android
- 构建Windows
- 构建完成企微通知
参数配置

构建

使用Batch Scripts任务节点运行工作空间下的构建脚本
构建结果

可以看到和本地构建一样打出了两个包
结语
这些打包脚本执行了最基本的打包任务,实际项目中会复杂一些,可能会包含一些其他操作(参考第一章附录):
- 拉取各个仓库,如项目工程、美术资产、引擎等
- 处理资源,如转资源,处理表格、协议、DB等
- 版本号处理
- 构建结果归档上传
- ...
UE构建基础和实践:五、CI/CD平台自动化打包的更多相关文章
- 基于Kubernetes构建企业Jenkins master/slave CI/CD平台
搭建平台目的: k8s中搭建jenkins master/slave架构,解决单jenkins执行效率低,资源不足等问题(jenkins master 调度任务到 slave上,并发执行任务,提升任务 ...
- 【软件工程】《构建之法》 & Git+ & CI/CD
<构建之法> & Git+ & CI/CD 个人阅读作业#2 项目 内容 本作业所属课程 2020春季软件工程(罗杰 任健) 本作业要求 个人阅读作业#2 我的课程目标 具 ...
- devops-5:从0开始构建一条完成的CI CD流水线
从0开始构建一条完成的CI CD流水线 前文中已经讲述了静态.动态增加agent节点,以动态的k8s cloud为例,下面就以Maven构建Java程序为例,开始构建出一条完整的CI CD流水线. 实 ...
- 基于Gogs+Drone搭建的私有CI/CD平台
请移步 基于Gogs+Drone搭建的私有CI/CD平台
- 通读《构建之法》与CI/CD工具尝试
项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 作业要求 我在这个课程的目标是 积累软件开发经验,提高工程能力 这个作业在哪个具体方面帮助我实现目标 通读课 ...
- 使用Docker方式部署Gitlab,Gitlab-Runner并使用Gitlab提供的CI/CD功能自动化构建SpringBoot项目
1.Docker安装Gitlab,地址:https://www.cnblogs.com/sanduzxcvbnm/p/13814730.html 2.Docker安装Gitlab-runner,地址: ...
- 使用 Gitlab CI/CD 实现自动化发布站点到 IIS
说明 这里先介绍下两个东西 CI/CD.GitLab Runner,当然在此之前你需要对 git 有所了解,关于 git 这里不做说明,可以自行百度. 首先介绍 CI/CD :随着我们开发方式的转变, ...
- 使用Gitlab的CI/CD功能自动化推送docker镜像到Nexus仓库出现的问题
在服务器中可以直接使用命令行登录,推送docker镜像等 但是在使用Gitlab的CI/CD功能中,gitlab-ci.yml文件执行过程中出现如下错误: 原因分析: 服务器上之前使用命令行登陆过Ne ...
- Github Packages和Github Actions实践之CI/CD
概述 Github在被微软收购后,不忘初心,且更大力度的造福开发者们,推出了免费私有仓库等大更新.近期又开放了packages和actions两个大招,经笔者试用后感觉这两个功能配合起来简直无敌. G ...
- Gogs+Drone搭建CI/CD平台
Gogs 是由 Go 语言编写的 Git 服务器,由中国人主导开发的一款开源项目,搭建方便并且拥有完善的中文文档,配合 Drone 可以实现持续集成/持续部署.本文介绍如何通过 Docker 搭建 G ...
随机推荐
- docker-compose一键部署java开源项目
这一年干的很多事都是为了降低我的开源项目消息推送平台austin使用门槛. 如果想学Java项目的,强烈推荐我的开源项目消息推送平台Austin(8K stars) ,可以用作毕业设计,可以用作校招, ...
- day06-优惠券秒杀02
功能03-优惠券秒杀02 4.功能03-优惠券秒杀 4.4一人一单 4.4.1需求分析 要求:修改秒杀业务,要求同一个优惠券,一个用户只能下一单. 在之前的做法中,加入一个对用户id和优惠券id的判断 ...
- Tomcat总体架构,启动流程与处理请求流程
系列文章目录和关于我 参考书籍<Tomcat架构解析> 一丶Tomcat总体架构 本文沿袭<Tomcat架构解析>中启发式的方式来总结Tomcat总体架构 1 Server S ...
- 几种常见的Python数据结构
摘要:本文主要为大家讲解在Python开发中常见的几种数据结构. 本文分享自华为云社区<Python的常见数据结构>,作者: timerring . 数据结构和序列 元组 元组是一个固定长 ...
- 【JS逆向】【多图+附源码】 2023 python获取某蜂窝 _sn
声明:本文/代码/软件/网站等内容仅供学习交流使用,不涉及任何商业目的或利益.如有侵犯版权或其他问题,请联系作者删除.作者对本文/代码/软件/网站等内容的正确性.完整性.可靠性.安全性等不作任何保证, ...
- Nginx常用基础模块
Nginx常用基础模块 目录 Nginx常用基础模块 目录索引模块 配置方式 nginx的状态模块 配置方式 nginx访问控制模块 配置方式 nginx的访问限制模块 请求限制重定向 Nginx连接 ...
- 2023-05-09:石子游戏中,爱丽丝和鲍勃轮流进行自己的回合,爱丽丝先开始 。 有 n 块石子排成一排。 每个玩家的回合中,可以从行中 移除 最左边的石头或最右边的石头, 并获得与该行中剩余石头值
2023-05-09:石子游戏中,爱丽丝和鲍勃轮流进行自己的回合,爱丽丝先开始 . 有 n 块石子排成一排. 每个玩家的回合中,可以从行中 移除 最左边的石头或最右边的石头, 并获得与该行中剩余石头值 ...
- 2022-03-03:课程表 III。 这里有 n 门不同的在线课程,按从 1 到 n 编号。给你一个数组 courses ,其中 courses[i] = [durationi, lastDayi]
2022-03-03:课程表 III. 这里有 n 门不同的在线课程,按从 1 到 n 编号.给你一个数组 courses ,其中 courses[i] = [durationi, lastDayi] ...
- 在 Transformers 中使用对比搜索生成可媲美人类水平的文本 🤗
1. 引言 自然语言生成 (即文本生成) 是自然语言处理 (NLP) 的核心任务之一.本文将介绍神经网络文本生成领域当前最先进的解码方法 对比搜索 (Contrastive Search).提出该方法 ...
- dnu
背景 作为一个喜欢搬运 YouTube 视频的网友,我发现将视频下载下来再上传到 B 站十分繁琐,因此我决定开发一个小工具,能够方便快捷地将 YouTube 视频下载并上传至 B 站,以节省我的时间和 ...