Unity Jenkins 自动化打包

Unity设计模式—工厂方法模式(附代码) 是简单工厂模式的延伸,它保留了简单工厂模式优点点,同时还弥补了简单工厂的缺陷:能更好地符合开闭原则要求,在增加新的具体产品对象时无需对已有系统做任何修改。 阅读详情

这里默认大家jenkins和unity打包环境都是搭建好的

如果没有的话自行搜一下 把环境搭建一下

接下来就是配置Jenkins  windows+Android打包

 

到插件列表里把Unity3D插件下载一下

然后去配置一下环境

这里我配置Gradle 因为的项目是先打出android工程 然后gradle打包的

回到这里 把Unity安装路径配置一下

配置好这些就可以创建Jenkins项目了

填写个名字 点击确定

 

这里是构建参数 在这里填写 然后到Unity里接收进行打包

这里是配置好工程地址 我这里使用的是SVN 使用git自行改一下就好

这里强调一下 %WORKSPACE% 是你远程目录的地址 我是把这个python放在了 SVN目录\BuildTools\BuildScript 里

BuildAndroid.py 是我的脚本 

C:\Users\yuzixiao\AppData\Local\Programs\Python\Python35\python.exe 是我的python路径

import sys
import os
import fileinput
import subprocess
 

if __name__ == '__main__':
    
    #Jenkins传递 无需手动修改
    jenkinsParams = {
        'WorkSpace':os.environ['WorkSpace'].strip().replace('\\', '/'),
        'ProductName':os.environ['ProductName'].strip()
    } 
 
    #本地参数 需手动修改
    localParams = {
        'UnityPath':'F:\Unity\u2018420f1\Unity\Editor\Unity.exe',
        'ProjectPath':jenkinsParams['WorkSpace'] + '/unity-east',
        'LogPath':jenkinsParams['WorkSpace'] + '/OutPut/apk_log.txt',
    }
    
    print('Jenkins参数')
    print(jenkinsParams)
    print('本地参数')
    print(localParams)
    
    print('开始构建');
    
    #调用BuildEditor.BuildAPK方法 编译APK    
    cmd = '"' + localParams['UnityPath'] + '" -batchmode -projectPath "' + localParams['ProjectPath'] + '" -nographics -executeMethod CMDBuild.CMDBuildAndroid -logFile "' + localParams['LogPath'] + '" -quit '+ jenkinsParams['ProductName'];
    print(cmd);    
    subprocess.call(cmd);
        
    #在Jenkins中打印Log
    fileHandler = open(localParams['LogPath'], mode='r', encoding='UTF-8')
    report_lines = fileHandler.readlines()
    for line in report_lines:
        print(line.rstrip())
        
    print('结束构建')

unity-east 是我SVN路径下的 unity工程目录 这里是调用了 我工程里

CMDBuild.CMDBuildAndroid   CMDBuild脚本的 CMDBuildAndroid方法

using System;
using System.Collections.Generic;

using UnityEditor;
using UnityEditor.Build.Reporting;

using Debug = UnityEngine.Debug;

public class CMDBuild : Editor
{
    const string LOCATION_PATH_ANDROID = "./android.apk";
    public static void CMDBuildAndroid(){

       
        string ProductName = "";
        


        Debug.Log("------------- 接收命令行参数 -------------");
        List<string> commondList = new List<string>();
        foreach (string arg in System.Environment.GetCommandLineArgs()) {
            Debug.Log("命令行传递过来参数:" + arg);
            commondList.Add(arg);
        }

        try {
            Debug.Log("命令行传递过来参数数量:" + commondList.Count);
            ProductName = commondList[commondList.Count - 1];
           
        }
        catch (Exception e) {
            Debug.Log("接收命令行参数出错: "+e.Message);
        }

        //ProductName Jenkins穿來的參數 自行時使用
        ProjectBuildExecute(BuildTarget.Android);
       
    }


    public static void ProjectBuildExecute(BuildTarget target)
    {
 
        //Switch Platform
        SwitchPlatform(target);
 
 
   
        List<string> scenes = new List<string>();
        foreach (UnityEditor.EditorBuildSettingsScene scene in EditorBuildSettings.scenes)
        {
            if (scene.enabled)
            {
                if (System.IO.File.Exists(scene.path))
                {
                    Debug.Log("Add Scene (" + scene.path + ")");
                    scenes.Add(scene.path);
                }
            }
        }
 
       
        BuildReport report = BuildPipeline.BuildPlayer(scenes.ToArray(), LOCATION_PATH_ANDROID, target, BuildOptions.None);
        if (report.summary.result != BuildResult.Succeeded)
        {
            Debug.LogError("打包失败。(" + report.summary.ToString() + ")");
        }
        
    }
    
    private static void SwitchPlatform(BuildTarget target)
    {
 
        if (EditorUserBuildSettings.activeBuildTarget != target)
        {
            if (target == BuildTarget.iOS)
            {
                EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.iOS, BuildTarget.iOS);
            }
            if (target == BuildTarget.Android)
            {
                EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Android, BuildTarget.Android);
            }
        }
 
    }



}

整体思路就是 Jenkins传递参数给python 然后python调用Unity打包

Unity 基于Jenkins自动化打包流程 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。 阅读详情

相关推荐

Jenkins参数化构建Unity多平台自动化打包实战指南

持续集成与持续交付(CI/CD)是现代软件开发流程的核心实践,旨在通过自动化构建、测试和部署,提升软件交付效率与质量。其核心原理在于将代码变更频繁、自动地集成到主干,并快速、可靠地发布。这项技术的价值在于减少人工错误、加速反馈循环并实现标准化交付。在游戏与应用开发领域,多平台打包是典型的重复性劳动密集型场景。本文聚焦于利用Jenkins这一高度可定制的CI/CD工具,通过参数化构建和Pipeline脚本,实现Unity项目面向iOS、Android、Windows等平台的自动化编译、签名与分发,从而将开发团

weixin_30335353的博客 520

Unity与Jenkins打包机实战

Jenkins是一个开源的持续集成工具,用人话来说就是。一般常见于公司项目用于持续交付。可能有个人开发者对打包机很陌生或者不是很在意(比如在写这篇文章之前的我),项目小,本机写完本机打,甚至能边写边打,也没觉得怎么样。直到后来打包卡电脑没法做其他事情的时候,是时候单拎出来个电脑做个打包机了,要不耽误事情。

u012587406的博客 1397

告别手动打包!用Jenkins+Unity打造手游团队的自动化出包流水线(附完整脚本)

本文详细介绍了如何利用Jenkins与Unity构建手游团队的自动化出包流水线,涵盖分布式构建节点配置、智能版本号管理、多环境差异化打包等核心功能。通过完整的脚本示例和实战技巧,帮助团队实现高效协作,显著提升打包效率并减少人为错误。

weixin_33734785的博客 368

【设计模式】Unity3D 简单工厂、工厂(方法)、抽象工厂模式

unity3d实现简单工厂模式,工厂模式和抽象工厂模式,以及其优缺点和适用场景

qq_36674053的博客 4403

Unity游戏多渠道打包自动化:基于Jenkins与Fastlane的CI/CD实战方案

持续集成与持续部署(CI/CD)是现代软件工程的核心实践,旨在通过自动化构建、测试和部署流程,提升开发效率与软件质量。其核心原理在于将代码变更自动触发一系列标准化操作,减少人工干预,实现快速、可靠的交付。在游戏开发领域,这一技术价值尤为凸显,能够有效应对多平台、多版本、高频次迭代的复杂需求。特别是在Unity移动游戏开发中,面对iOS、Android及众多国内渠道(如华为、小米、TapTap)的SDK集成、证书管理和商店上传等重复性工作,手动处理极易出错且耗时费力。应用自动化流水线,可以将这些繁琐环节串联,

weixin_30487201的博客 358

Unity多渠道多环境自动化打包:Jenkins流水线与配置模板实战

在软件工程领域,持续集成与持续交付(CI/CD)是提升团队协作效率和软件交付质量的核心实践。其基本原理是通过自动化工具链,将代码的构建、测试、打包和部署等环节串联起来,实现快速、可靠且可重复的发布流程。对于Unity移动游戏开发而言,这一技术的价值尤为突出,它能有效解决多平台(如iOS、Android)、多渠道(如应用宝、华为)和多环境(开发、测试、生产)带来的配置管理与打包复杂度问题。通过将可变因素(如渠道标识、API地址、版本号)参数化,并与构建脚本(如Jenkins Pipeline)和配置注入机制结

weixin_33834628的博客 496

Jenkins接入Unity实现自动化打包

这个基本没啥坑可以踩,基本不会出啥问题,大体思路就是,通过Jenkins来调用一些Shall或者Bat命令,这些命令再去调用之前在Unity中写的一些打包脚本就可以了。

m0_56305960的博客 1475

工厂模式在Unity3D中的应用 - 提高菜鸟U3D程序员的技能

以上代码中,我们通过调用敌人工厂的CreateEnemy方法来创建具体的敌人对象。这样,我们可以根据需要动态地创建不同类型的敌人,而无需直接在代码中实例化具体的敌人类。工厂模式是一种创建型设计模式,它提供了一种将对象的创建逻辑封装在一个单独的工厂类中的方式。常见的应用场景包括创建敌人、道具、特效等。然后,我们创建一个敌人工厂类(EnemyFactory),用于创建具体的敌人对象。首先,我们需要创建一个抽象的敌人类(Enemy),作为所有敌人类型的基类。接下来,我们创建具体的敌人类型,继承自抽象敌人类。

JfiqMaster的博客 506

【Jenkins】实现Unity远程自动化打包

使用jenkins工具实现unity远程自动化打包

weixin_45972052的博客 797

【Unity3D】关于unity中spriteAtlas的打包方案及使用时内存状态的多组对照实验

unity项目中使用精灵(Sprite)为了降低性能消耗,我们可以使用精灵图集(Sprite Atlas)技术,它能够将多个纹理合并成一个大纹理

云渊寒烬 5088

LinuxCNC 源码解析:从界面开发到硬件交互的实战指南

本文深入解析LinuxCNC源码架构,从用户界面开发到硬件交互的实战指南。涵盖GTK与Tkinter界面开发、HAL硬件抽象层、G代码解析器改造及运动控制核心等关键模块,提供定制化开发技巧与性能优化方案,助力开发者高效掌握数控系统开发。

weixin_27066963的博客 181

Jenkins基于Unity的自动化打包

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。主要功能包括:1、持续的软件版本发布/测试项目。2、监控外部调用执行的工作。这么说比较官方,说白了,它就是一种集承了多种常用的插件于一身的工具平台,通过这个平台你能很方便的管控你的项目!它的强大之处在于它能直接调用外部的shell指令和bat,那么今天我们一起去解开一点点它的什么面纱,为什么说是一点点呢?因为它太强大了,太深了!

m0_46385244的博客 354

首个FDA认证开源医学影像AI平台Comp2Comp:从CT自动分析到临床部署全解析

深度学习模型在医学影像分析领域正成为变革性力量,其核心原理是通过卷积神经网络自动学习图像特征,实现精准分割与检测。这一技术价值在于将高度依赖医生经验的定性、主观判断,转化为高效、客观、可重复的定量分析,极大提升了诊断的一致性和工作效率。在应用场景上,医学影像AI已广泛渗透于疾病筛查、辅助诊断、预后评估及治疗方案规划等多个环节。本文聚焦于获得FDA 510(k)认证的开源平台Comp2Comp,它集成了主动脉钙化评分和椎体骨密度分析双任务,通过串联式的U-Net分割网络与目标检测模型,构建了从DICOM预处理

weixin_33725126的博客 646

Unity 工具 之 Jenkins 打包自动化工具的下载/安装/基本操作/任务创建执行/Unity打包自动化简单搭建的相关整理

Unity 工具类,自己整理的一些游戏开发可能用到的模块,单独独立使用,方便游戏开发。本节介绍,Jenkins 自动化打包工具,包括下载安装,以及基本的操作等,这里简单说明,如果你有更好的方法,欢迎留言交流。Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。1、持续的软件版本发布/测试项目。2、监控外部调用执行的工作。

仙魁XAN 5378

笔试题-2023-芯原-数字前端设计or验证【纯净题目版】

笔试题-2023-芯原-数字前端设计or验证【纯净题目版】

w0shishabi的博客 5683

使用Python爬虫抓取旅游景点评价数据并进行热度可视化

景点热度通常由景点的评分、评论数以及游客的热情度来决定。高热度的景点通常意味着更高的游客评分和更多的游客评论。热度不仅反映了景点的受欢迎程度,还可以揭示某些景点的潜力和存在的问题。评分:游客对景点的综合评分,通常是0到5分。评论数:景点的评论数量,反映了游客对景点的关注程度。热度变化:在一定时间内,景点的评价和评论数量变化,能够反映景点的热度波动。通过使用Python爬虫技术抓取旅游景点的评价和评论数据,我们能够深入分析景点的热度,并通过数据可视化工具将这些信息展示给用户。

2201_76125261的博客 1280

Unity Mac Jenkins自动化打包之Jenkins+Unity+xcode+fir+钉钉群通知

1.安装Jenkins 这里推荐使用命令行安装,这样基本不会弹出权限问题,如果直接使用dmg包进行安装,在自动化的过程中会弹出很多权限弹窗。 Mac Jenkins下载地址:https://www.jenkins.io/download/lts/macos/ 进入以后出现以下界面 打开终端,复制命令 安装Jenkisn brew install jenkins-lts 等待结束之后就安装成功了。 启动Jenkins 然后输入命令: brew services start jenkins-lts 启

你只管努力,其他的,交给天意! 2235

14、多层螺旋 CT 技术详解

本文详细解析了多层螺旋CT(MSCT)技术的原理与应用,涵盖其相对于单层螺旋CT的优势,包括图像采集速度提升、分辨率提高和噪声降低。文章深入探讨了扫描仪的几何结构、离散投影模型以及关键参数如切片宽度和螺距的影响,并重点介绍了z-滤波重建算法及其离散实现流程。通过流程图和公式推导,系统梳理了从投影获取到图像重建的全过程。同时分析了MSCT在临床中的实际应用案例及未来发展趋势,如更高分辨率、更低辐射剂量和智能化算法等方向,全面展示了MSCT在现代医学影像中的核心价值。

f0g1h2的博客 183

Jenkins基于unity的自动化打包

 Jenkins的使用       关于jenkins的环境配置,这里就不介绍了,百度里面的教程够多。做下搬运工,可以参考这篇文章https://blog.csdn.net/potato512/article/details/52289136   mac下强烈建议 使用 brew 去安装 jenkins,不然会有很多坑brew 安装jenkins 时可能根据需要修改工作目录.修改工作目录的步骤如下...

nankeyixiao的博客 1万+

用 OP-TEE 给 AI 模型“上锁”:密文存储、TEE 解密放行、推理后销毁(实战可落地)

本文提出一种基于OP-TEE的AI模型保护方案,通过两级密钥体系确保模型静态存储为密文,运行时仅在TEE内解密。方案采用KEK+DEK架构,DEK永不出TEE,支持分块解密与可验证擦除。该方案能有效防御静态分析、应用层逆向等威胁,但需承认其物理级攻击的局限性。文章详细描述了端到端架构、文件格式设计及TA实现要点,包括密钥管理、分块解密策略和销毁机制,为设备侧AI部署提供了工程可行的安全解决方案。

Interview_TC的博客 282

26. 如何给 SAP BTP Cloud Foundry 环境分配运行时内存

摘要:本文解答了SAP BTP Cloud Foundry环境中Space可用内存为0MB的问题。指出Space内存配额取决于Org配额分配,其计算方式为Org总配额减去所有运行中应用实例的内存预留总和。详细解释了SAP BTP的资源分配层级(Global account→Subaccount→Environment→Org→Space),并说明如何通过Global account的Entity Assignments查看Memory Plan配额分配(以GB为单位)。最后建议遇到问题的用户检查Subacc

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1238

【游戏开发进阶】教你Unity通过Jenkins实现自动化打包,打包这种事情就交给策划了(保姆级教程 | 命令行打包 | 自动构建)

教你Unity通过Jenkins实现自动化打包,打包这种事情就交给策划了(保姆级教程 | 命令行打包 | 自动构建)

linxinfa的专栏 3万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

unity Jenkins自动化打包

通过以上规范,可实现高效、安全的自动化构建流程。建议配合 Jenkins Pipeline 可视化配置,并通过。实现版本化构建脚本管理。

qq_45927369的博客 338

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Jenkins与Unity自动化打包:从脚本编写到持续集成实战

本文详细介绍了如何利用Jenkins实现Unity项目的自动化打包,从脚本编写到持续集成实战。通过自动化打包,开发者可以减少人为失误、解放生产力并实现标准化输出,显著提升开发效率。文章涵盖了环境配置、脚本编写、Jenkins集成及高级技巧,帮助团队快速构建CI/CD流程。

weixin_30500105的博客 445

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

jenkins打unity包

Jenkins 是一款广泛使用的开源自动化服务器,借助它可以实现 Unity 项目的自动化打包。

游戏全栈,技术合作 1416

使用Jenkins实现远程Unity打包

jenkins,远程打包Unity

张不无的博客 2806
上一篇: Unity BuglySDK + 符号表接入
下一篇: Unity GC垃圾回收
潇潇Ayo
博客等级 码龄9年 64粉丝 49原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值