Jenkins自动化打包

Jenkins自动化打包

下载安装

我们直接从官网https://www.jenkins.io/download/ 下载所需的Jenkins文件
在这里插入图片描述

如上图所示, 选择Windows版本,下面就是一路安装即可,需要注意的是,选择作为系统服务选项, 不要自己设置账号密码登录.

Web配置

安装完根据提示在浏览器打开 http://localhost:8080/ 即可进入Jenkins部署界面

在这里插入图片描述

按照上图中的红色路径找到initialAdminPassword文件并打开 将文件内容粘贴进去, 点击继续

在这里插入图片描述

这里我们选择推荐的插件进行安装

在这里插入图片描述

等待进度条跑完即可

在这里插入图片描述

我们选择Skip, 跳过设置继续使用admin用户登录

在这里插入图片描述

选择Save and Finish

在这里插入图片描述

选择Start using Jenkins

在这里插入图片描述

Unity每日定时打包

就是Jenkins的web界面, 我们在里面配置一个自动打包流程, 比如一个定时任务, 每天凌晨自动打包. 下面就演示如何操作

在这里插入图片描述

我们选择左边的New Item创建一个任务

在这里插入图片描述

按照上图的步骤1,2,3 点击OK之后创建任务

在这里插入图片描述

在上图中添加上任务描述, 然后滚动到后面的BuildSteps里面选择Execute Windows batch command

在这里插入图片描述

在Command里面填写上要执行的python脚本

在这里插入图片描述

点击Save保存

创建打包C#脚本

using UnityEditor;
using UnityEditor.Build.Reporting;
using UnityEngine;namespace Jenkins
{public class BuildScript{[MenuItem("Build/Build for Android")]public static void BuildForAndroid(){var buildPlayerOptions = new BuildPlayerOptions(){scenes = new[]{"Assets/LemonFramework/Jenkins/Sample/Sample.unity"},locationPathName = "Jenkins.apk",target = BuildTarget.Android,options = BuildOptions.None};var report = BuildPipeline.BuildPlayer(buildPlayerOptions);var summary = report.summary;if (summary.result == BuildResult.Succeeded){Debug.Log("Build succeeded: " + summary.totalSize + " bytes");}if (summary.result == BuildResult.Failed){Debug.LogError("Build failed");}}}
}

创建打包Python脚本

#coding:utf-8
import os
import sys
import subprocess
import time
from pathlib import Path
import subprocess
sys.path.append(os.path.abspath(os.path.join(os.path.realpath(__file__), "../")))CUR_PATH = os.getcwd()
PROJ_PATH = os.path.join(CUR_PATH, "../")
BRANCH = 'gl-master'# Unity的执行路径
unity_path = "C:/Program Files/Unity/Editor/Unity.exe"
# Unity项目的路径
project_path = "E:/Projects/Lemon/Lemon.Framework.Jenkins"
# 要执行的Unity编辑器自定义方法的名称,这个方法在Unity编辑器扩展脚本中定义
method_name = "Jenkins.BuildScript.BuildForAndroid"
# 打包后的APK文件路径
apk_output_path = "E:/Projects/Lemon/Lemon.Framework.Jenkins/Jenkins.apk"# 拼接Unity命令行
cmd = [unity_path,"-quit",  # 表示Unity完成命令后关闭"-batchmode",  # 不显示界面和对话框"-nographics",  # 在支持的平台上不初始化图形设备"-silent-crashes",  # 自动处理崩溃情况"-projectPath", project_path,"-executeMethod", method_name,"-logFile",  # 可以指定日志文件路径,例如"-logFile", "unity.log""-buildOutput", apk_output_path,
]# 杀掉unity进程
def kill_unity():os.system('taskkill /IM Unity.exe /F')def git_reset_pull():os.chdir(PROJ_PATH)cmd = 'git fetch --all' #git 拉取命令result = os.system(cmd)	cmd = 'git reset --hard HEAD' #git reset命令result = os.system(cmd)cmd = r"{0}{1}".format("git checkout ",BRANCH)result = os.system(cmd)cmd = 'git clean -fd' #git clean 命令result = os.system(cmd)cmd = 'git pull --rebase' #git pull命令result = os.system(cmd)if result == 0:print('git update succes')else:print('git update fail')# 调用unity中我们封装的静态函数
def build():    # 执行命令行# subprocess.call(cmd) 注释掉这行,并替换为下面的代码,以阻塞直到命令完成并捕获输出process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)stdout, stderr = process.communicate()if process.returncode == 0:print("Build succeeded")print(stdout.decode("utf-8"))  # 显示标准输出else:print("Build failed")print(stderr.decode("utf-8"))  # 显示错误输出sys.exit(1)if __name__ == '__main__':	now = time.time() kill_unity()#git_reset_pull()build()print(f'total take time {time.time()-now} seconds')print("Done!")

在这里插入图片描述

点击左侧Build Now即可生成Android Apk

定时任务

在Configure里设定每天早上6点定时打包,这样一大早有有热乎的apk给QA做测试了

在这里插入图片描述

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

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

相关文章

iZotope RX 10.4.2 mac激活版 音频修复和增强工具

iZotope RX 10 for Mac是一款专业的音频修复软件,旨在提供强大、精确的工具,让用户能够清晰、纯净地处理音频。以下是其主要功能和特点: 软件下载:iZotope RX 10.4.2 mac激活版下载 强大的降噪功能:iZotope RX 10采用了…

动态住宅IP可以用来注册亚马逊电商吗?

注册亚马逊店铺可以用动态IP,只要是独立且干净的网线就没问题,亚马逊规则要求一个IP地址只能出现一个亚马逊店铺,若使用不当会导致关联账户。所以现在非常多人使用指纹浏览器搭配代理IP 固定ip可以给我们的账户带来更多的安全,要知…

输电线路导线舞动在线监测装置:“舞动”不再!守护电网安全!

输电线路导线舞动会影响输电线路的运行安全,其影响因素主要包括以下几个方面: 1、风力影响:风力是导致输电线路导线舞动的主要原因之一。在风的激励下,会对导线施加较大的侧向压力,导线会随风摆动,发生扭转…

iOS17使用safari调试wkwebview

isInspectable配置 之前开发wkwebview的页面的时候一直使用safari调试,毕竟jssdk交互还是要用这个比较方便,虽说用一个脚本插件没问题。不过还是不太方便。 但是这个功能突然到了iOS17之后发现不能用了,还以为又是苹果搞得bug,每…

Skywalking trace UI页面中字段信息详解,包括端点、跨度类型和Peer

刚上手Skywalking的同学可能对 trace UI 页面信息中的字段信息不是很了解,在这里就给大家一一讲解,重点关注端点、跨度类型和Peer 服务 :服务的名称 实例:服务对应的实例 端点:端点(Endpoint) 对于特定服务所接收的请求路径, 如…

Word莫名其妙开启兼容模式将其永久取消的方法

这是因为Word模板文件被意外更改了 找到Word模板文件,目录在C:\Users\15976\AppData\Roaming\Microsoft\Templates 15976替换成你自己的用户名,不确定的就先点进C/Users看一看, AppData是隐藏文件夹,显示隐藏文件夹才能看见&am…

点餐APP开发需要用到的一些源代码

在数字化日益普及的今天,点餐APP已经成为人们日常生活的重要组成部分,从校园食堂到高级餐厅,从快餐外卖到定制化营养餐,点餐APP的多样性和便利性满足了不同用户的需求,本文将深入探讨在开发一款点餐APP时可能用到的源代…

Vim实战:使用 Vim实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度,DP多卡,EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

企业级大模型的护城河:RAG + 微调

围绕LLM的炒作是前所未有的,但这是有道理的,生成式 AI 有潜力改变我们所知道的社会。 在很多方面,LLM将使数据工程师变得更有价值——这令人兴奋! 不过,向老板展示数据发现工具或文本到 SQL 生成器的炫酷演示是一回事…

CTF-WEB的知识体系

CTF概念 CTF是Capture The Flag的缩写,中文一般译作夺旗赛 CTF起源于1996年DEFCON全球黑客大会 DEFCONCTF是全球技术水平和影响力最高的CTF竞赛 竞赛模式 解题模式:解决网络安全技术挑战(即找到flag),提交后获取相应分值。 攻防赛模式:要求找到其他队…

故障诊断 | 一文解决,CNN卷积神经网络故障诊断(Matlab)

文章目录 效果一览文章概述专栏介绍源码设计参考资料效果一览 文章概述 故障诊断 | 一文解决,CNN卷积神经网络故障诊断(Matlab) 专栏介绍 订阅【故障诊断】专栏,不定期更新机器学习和深度学习在故障诊断中的应用;订阅

TWS耳机产品有哪些芯片?这就告诉你

随着时代发展,越来越多消费者开始追捧TWS耳机,相比其他耳机,TWS耳机轻便易带,小巧精密。为了满足TWS耳机这些特点,需要配备多种核心芯片,那么你知道有哪些芯片吗? 1、主控芯片主控芯片是TWS耳机…

[GN] 23种设计模式 —— 常见设计模式学习总结

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言创建型模式 —— 创建的艺术结构型模式 —— 组合的艺术适配器模式 -- 不兼容结构的协调对象适配器类适配器模式优缺点适用场景 组合模式 -- 树形结构的处理例子…

4. 网络安全基础与网络接入

4.1 实验一:访问控制列表配置实验 4.1.1 实验介绍 4.1.1.1 关于本实验 访问控制列表 ACL(Access Control List)是由一条或多条规则组成的集合。所谓规则,是指描述报文匹配条件的判断语句,这些条件可以是报文的源地址…

数据治理之法读书笔记

数据治理之法 一、数据基础设施 当今,世界正快速由工业经济时代迈向“数化万物、智化生存”的数字经济时代。 数据基础设施尚没有统一的概念。 从狭义上讲,数据基础设施是指支撑数据运转的相关软硬件资源,如数据中台、数据仓库、数据湖等…

【unity小技巧】unity3d创建和实现破碎打破物品,万物可破碎

文章目录 破碎插件可破碎的物品代码控制加入破坏力完结 破碎插件 关于物品破碎,其实之前已经分享过一个免费插件,如果没有碎片化的模型,可以选择使用这个插件: OpenFracture插件实现unity3d物体破裂和切割 可破碎的物品 代码控制…

山石防火墙简单配置

1、设备管理 安全网关支持本地与远程两种环境配置方法,可以通过CLI 和WebUI 两种方式进行配置。CLI 同时支持Console、Telnet、SSH 等主流通信管理协议。 1.1终端console 登录 通过Console 口配置安全网关时需要在计算机上运行终端仿真程序(系统的超级…

数字孪生智慧能源电力Web3D可视化云平台合集

前言 能源电力的经济发展是中国式现代化的强大动力,是经济社会发展的必要生产要素,电力成本变化直接关系到工业生产、交通运输、农业生产、居民生活等各个方面,合理、经济的能源成本能够促进社会用能服务水平提升、支撑区域产业发展&#xf…

【postgres】10、INDEX Types 索引

文章目录 11.2 Index Types11.2.3 GiST https://www.postgresql.org/docs/current/indexes-types.html 11.2 Index Types 11.2.3 GiST GIST索引不是一种单一的索引,而是一种基础设施,在其中可以实现许多不同的索引策略。因此,可以使用GIST索…

为什么每天上班明明没做什么体力活,却仍感觉到身体好累?

​为什么每天上班明明没做什么体力活,却仍感觉到身体好累? 在现代社会,许多人在工作中并不需要从事繁重的体力劳动,然而,他们却常常感到身体疲惫不堪。这种情况不仅发生在办公室工作的人群中,也普遍存在于…