序言

使用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平台自动化打包的更多相关文章

  1. 基于Kubernetes构建企业Jenkins master/slave CI/CD平台

    搭建平台目的: k8s中搭建jenkins master/slave架构,解决单jenkins执行效率低,资源不足等问题(jenkins master 调度任务到 slave上,并发执行任务,提升任务 ...

  2. 【软件工程】《构建之法》 & Git+ & CI/CD

    <构建之法> & Git+ & CI/CD 个人阅读作业#2 项目 内容 本作业所属课程 2020春季软件工程(罗杰 任健) 本作业要求 个人阅读作业#2 我的课程目标 具 ...

  3. devops-5:从0开始构建一条完成的CI CD流水线

    从0开始构建一条完成的CI CD流水线 前文中已经讲述了静态.动态增加agent节点,以动态的k8s cloud为例,下面就以Maven构建Java程序为例,开始构建出一条完整的CI CD流水线. 实 ...

  4. 基于Gogs+Drone搭建的私有CI/CD平台

    请移步 基于Gogs+Drone搭建的私有CI/CD平台

  5. 通读《构建之法》与CI/CD工具尝试

    项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 作业要求 我在这个课程的目标是 积累软件开发经验,提高工程能力 这个作业在哪个具体方面帮助我实现目标 通读课 ...

  6. 使用Docker方式部署Gitlab,Gitlab-Runner并使用Gitlab提供的CI/CD功能自动化构建SpringBoot项目

    1.Docker安装Gitlab,地址:https://www.cnblogs.com/sanduzxcvbnm/p/13814730.html 2.Docker安装Gitlab-runner,地址: ...

  7. 使用 Gitlab CI/CD 实现自动化发布站点到 IIS

    说明 这里先介绍下两个东西 CI/CD.GitLab Runner,当然在此之前你需要对 git 有所了解,关于 git 这里不做说明,可以自行百度. 首先介绍 CI/CD :随着我们开发方式的转变, ...

  8. 使用Gitlab的CI/CD功能自动化推送docker镜像到Nexus仓库出现的问题

    在服务器中可以直接使用命令行登录,推送docker镜像等 但是在使用Gitlab的CI/CD功能中,gitlab-ci.yml文件执行过程中出现如下错误: 原因分析: 服务器上之前使用命令行登陆过Ne ...

  9. Github Packages和Github Actions实践之CI/CD

    概述 Github在被微软收购后,不忘初心,且更大力度的造福开发者们,推出了免费私有仓库等大更新.近期又开放了packages和actions两个大招,经笔者试用后感觉这两个功能配合起来简直无敌. G ...

  10. Gogs+Drone搭建CI/CD平台

    Gogs 是由 Go 语言编写的 Git 服务器,由中国人主导开发的一款开源项目,搭建方便并且拥有完善的中文文档,配合 Drone 可以实现持续集成/持续部署.本文介绍如何通过 Docker 搭建 G ...

随机推荐

  1. python轻量级性能工具-Locust

    Locust基于python的协程机制,打破了线程进程的限制,可以能够在一台测试机上跑高并发 性能测试基础 1.快慢:衡量系统的处理效率:响应时间 2.多少:衡量系统的处理能力:单位时间内能处理多少个 ...

  2. MASA MinimalAPI源码解析:为什么我们只写了一个app.MapGet,却生成了三个接口

    源码解析:为什么我们只写了一个app.MapGet,却生成了三个接口 1.ServiceBase 1.AutoMapRoute 源码如下: AutoMapRoute自动创建map路由,MinimalA ...

  3. JavaScript中的四种枚举方式

    字符串和数字具有无数个值,而其他类型如布尔值则是有限的集合. 一周的日子(星期一,星期二,...,星期日),一年的季节(冬季,春季,夏季,秋季)和基本方向(北,东,南,西)都是具有有限值集合的例子. ...

  4. 2023-02-11:给你两个整数 m 和 n 。构造一个 m x n 的网格,其中每个单元格最开始是白色, 请你用 红、绿、蓝 三种颜色为每个单元格涂色。所有单元格都需要被涂色, 涂色方案需要满足:

    2023-02-11:给你两个整数 m 和 n .构造一个 m x n 的网格,其中每个单元格最开始是白色, 请你用 红.绿.蓝 三种颜色为每个单元格涂色.所有单元格都需要被涂色, 涂色方案需要满足: ...

  5. 2022-08-28:把字符串 s 看作 “abcdefghijklmnopqrstuvwxyz“ 的无限环绕字符串, 所以 s 看起来是这样的: ...zabcdefghijklmnopqrstuv

    2022-08-28:把字符串 s 看作 "abcdefghijklmnopqrstuvwxyz" 的无限环绕字符串, 所以 s 看起来是这样的: -zabcdefghijklmn ...

  6. LeetCode 双周赛 104(2023/05/13)流水的动态规划,铁打的结构化思考

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 往期回顾:LeetCode 单周赛第 344 场 · 手写递归函数的通用套路 T1. 老人的数目(Easy) ...

  7. Windows 11 和 Rocky 9 Linux 平台 MySQL 8.0.33 简易安装教程

    目录 Windows 平台安装 MySQL Linux 平台 Rocky 9 安装 MySQL binary package rpm package yum 源 source package Wind ...

  8. Cesium中监听MOUSE_MOVE事件获取经纬度和高度

    有时候在这个圆球上获取精确的经度纬度还不容易,特别是高度 还好在cesium提供了接口,看 let selft = this; const scene = this.viewer.scene; var ...

  9. 源代码管理工具——Git

    Git是一个开源的分布式版本控制系统,用于管理软件开发中的版本控制和协作.通过Git,开发人员可以记录文件的修改历史.协作开发,以及在多个分支上进行实验性开发.Git已成为现代软件开发中不可或缺的工具 ...

  10. jQuery实时显示日期、时间

    jQuery实时显示日期.时间 html: <span id="time"></span> js: <script src="Js/jque ...