热门标签 | 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

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


推荐阅读
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • C++实现经典排序算法
    本文详细介绍了七种经典的排序算法及其性能分析。每种算法的平均、最坏和最好情况的时间复杂度、辅助空间需求以及稳定性都被列出,帮助读者全面了解这些排序方法的特点。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • MongoDB集群配置:副本集与分片详解
    本文详细介绍了如何在MongoDB中配置副本集(Replica Sets)和分片(Sharding),并提供了具体的步骤和命令,帮助读者理解并实现高可用性和水平扩展的MongoDB集群。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 高效解决应用崩溃问题!友盟新版错误分析工具全面升级
    友盟推出的最新版错误分析工具,专为移动开发者设计,提供强大的Crash收集与分析功能。该工具能够实时监控App运行状态,快速发现并修复错误,显著提升应用的稳定性和用户体验。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 本文探讨了 C++ 中普通数组和标准库类型 vector 的初始化方法。普通数组具有固定长度,而 vector 是一种可扩展的容器,允许动态调整大小。文章详细介绍了不同初始化方式及其应用场景,并提供了代码示例以加深理解。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • andr ... [详细]
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社区 版权所有