热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iOS配合Jenkins输出多个环境包

上一文中,搭建好了Jenkins环境,自动化打包的第一步已经好了。这时如果测试妹子要打SIT的包,产品要打UAT的包,运营要打PRD的包,怎么搞?不能改一下代码,提交一下。然后再改

上一文中,搭建好了Jenkins环境,自动化打包的第一步已经好了。
这时如果测试妹子要打SIT的包,产品要打UAT的包,运营要打PRD的包,怎么搞?
不能改一下代码,提交一下。然后再改动代码,打另外一个包吧。。。
所以,此文就为了解决这个问题。

利用Build Configuration来配置多环境

原理就是一个Scheme对用一套环境(如:sit,uat,prd等等),然后每个环境又对应两个configuration(debug和release)。因此我们需要新建configuration与Scheme。

1.新建configuration

《iOS配合Jenkins输出多个环境包》 image.png

点击加号新建,比如我们的这个项目有两个环境,UAT与PRD,每个环境下面又分debug与release,所以要新建4项。
选中Duplicate “Debug” Configuration输入Debug-UAT。再重复操作,输入Debug-PRD。
选中Duplicate “Release” Configuration输入Release-UAT。再重复操作,输入Release-PRD。
结果如图所示。

《iOS配合Jenkins输出多个环境包》 image.png

2.新建Scheme,点击Manage Schemes。

《iOS配合Jenkins输出多个环境包》 image.png

点击加号,新增Scheme。同时别忘记勾选Shared,如果不勾选Shared,其他同事拉取代码是没有新增的Scheme的。

《iOS配合Jenkins输出多个环境包》 image.png

3.编辑Scheme,点击Edit Scheme。

《iOS配合Jenkins输出多个环境包》 image.png

这里将Run的Build Configuration设置成debug。Archive设置成Release。同时也勾选Shared。

4.新建User-defined Build Settings

《iOS配合Jenkins输出多个环境包》 image.png

添加CustomAppBundleld和CustomProductName。

《iOS配合Jenkins输出多个环境包》 image.png

5.进行pod install。

6.配置和获取环境变量
使用GCC预编译头参数GCC_PREPROCESSOR_DEFINITIONS
我们进入到Build Settings里面,可以找到Apple LLVM Preprocessing,这里我们可以找到Preprocessor Macros在这里,我们是可以加一些环境变量的宏定义来标识符。Preprocessor Macros可以根据不同的环境预先制定不同定义的宏。

《iOS配合Jenkins输出多个环境包》 1194012-427d4a19e32c41f2.png

如上图,圈出来的地方其实就是一个标识符。

因此,在这里我们可以添加我们自己想要的标识符,根据不同的环境,设置不同的标识符。

《iOS配合Jenkins输出多个环境包》 image.png

iOS判断代码如下

《iOS配合Jenkins输出多个环境包》 image.png

7.修改Jenkins配置
这里我们实现了不同的Scheme对应不同的环境,但是我们在Jenkins构建之前,需要一个选择框,供测试妹子选择不同的环境。

在参数化构建过程中,添加【选项参数】

《iOS配合Jenkins输出多个环境包》 image.png
《iOS配合Jenkins输出多个环境包》 image.png

名称:// 参数名
选项:// 选择项,每行一个。第一行的为默认选项。

点击保存,这是进行构建,就会有选择框。在shell脚本中,使用${buildType}就可以取到选择的值。

《iOS配合Jenkins输出多个环境包》 image.png

8.修改shell脚本
在xcodebuild archive之前,将scheme_name,development_mode参数,做个if判断,代码如下。

if [ $buildType = UAT ];then
echo '///-----------'
echo '/// 编译环境:UAT环境'
echo '///-----------'
development_mode=Release-UAT
scheme_name=apass-UAT
else
echo '///-----------'
echo '/// 编译环境:PRD环境'
echo '///-----------'
development_mode=Release-PRD
scheme_name=apass-PRD
fi

此时,输出多个环境包就好了~~~


推荐阅读
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 通过将常用的外部命令集成到VSCode中,可以提高开发效率。本文介绍如何在VSCode中配置和使用自定义的外部命令,从而简化命令执行过程。 ... [详细]
  • 在 CentOS 6.4 上安装 QT5 并启动 Qt Creator 时,可能会遇到缺少 GLIBCXX_3.4.15 的问题。这是由于系统中的 libstdc++.so.6 版本过低。本文将详细介绍如何通过更新 GCC 版本来解决这一问题。 ... [详细]
  • 基于Linux开源VOIP系统LinPhone[四]
    ****************************************************************************************** ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
  • 在Ubuntu上安装MySQL时解决缺少libaio.so.1错误及libaio在MySQL中的重要性分析
    在Ubuntu系统上安装MySQL时,遇到了缺少libaio.so.1的错误。本文详细介绍了如何解决这一问题,并深入探讨了libaio库在MySQL性能优化中的重要作用。对于初学者而言,理解这些依赖关系和配置步骤是成功安装和运行MySQL的关键。通过本文的指导,读者可以顺利解决相关问题,并更好地掌握MySQL在Linux环境下的部署与管理。 ... [详细]
  • EST:西湖大学鞠峰组污水厂病原菌与土著反硝化细菌是多重抗生素耐药基因的活跃表达者...
    点击蓝字关注我们编译:祝新宇校稿:鞠峰、袁凌论文ID原名:PathogenicandIndigenousDenitrifyingBacte ... [详细]
  • 本文介绍了如何使用Flume从Linux文件系统收集日志并存储到HDFS,然后通过MapReduce清洗数据,使用Hive进行数据分析,并最终通过Sqoop将结果导出到MySQL数据库。 ... [详细]
  • 本文总结了一些开发中常见的问题及其解决方案,包括特性过滤器的使用、NuGet程序集版本冲突、线程存储、溢出检查、ThreadPool的最大线程数设置、Redis使用中的问题以及Task.Result和Task.GetAwaiter().GetResult()的区别。 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • addInstrumentedPackage 方法不支持指定单一类进行 instrumentation ... [详细]
  • .NET Core 托管服务优化与实践
    在.NET Core应用中,托管服务的形式主要分为进程内托管(InProcess)和进程外托管(OutOfProcess)。这两种托管方式各有优缺点,本文将深入探讨它们的特点,并结合实际案例,介绍如何根据具体需求选择合适的托管模式,以实现性能优化和资源利用的最大化。此外,文章还将分享一些实用的配置技巧和最佳实践,帮助开发者提升应用的稳定性和可维护性。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 深入浅出 webpack 系列(二):实现 PostCSS 代码的编译与优化
    在前一篇文章中,我们探讨了如何通过基础配置使 Webpack 完成 ES6 代码的编译。本文将深入讲解如何利用 Webpack 实现 PostCSS 代码的编译与优化,包括配置相关插件和加载器,以提升开发效率和代码质量。我们将详细介绍每个步骤,并提供实用示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文深入解析了WCF Binding模型中的绑定元素,详细介绍了信道、信道管理器、信道监听器和信道工厂的概念与作用。从对象创建的角度来看,信道管理器负责信道的生成。具体而言,客户端的信道通过信道工厂进行实例化,而服务端则通过信道监听器来接收请求。文章还探讨了这些组件之间的交互机制及其在WCF通信中的重要性。 ... [详细]
author-avatar
展翅翱翔512
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有