iOS配合Jenkins输出多个环境包

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

利用Build Configuration来配置多环境

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

1.新建configuration

iOS配合Jenkins输出多个环境包_第1张图片
image.png

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

iOS配合Jenkins输出多个环境包_第2张图片
image.png

2.新建Scheme,点击Manage Schemes。

iOS配合Jenkins输出多个环境包_第3张图片
image.png

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

iOS配合Jenkins输出多个环境包_第4张图片
image.png

3.编辑Scheme,点击Edit Scheme。

iOS配合Jenkins输出多个环境包_第5张图片
image.png

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

4.新建User-defined Build Settings

iOS配合Jenkins输出多个环境包_第6张图片
image.png

添加CustomAppBundleld和CustomProductName。


iOS配合Jenkins输出多个环境包_第7张图片
image.png

5.进行pod install。

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

iOS配合Jenkins输出多个环境包_第8张图片
1194012-427d4a19e32c41f2.png

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

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


iOS配合Jenkins输出多个环境包_第9张图片
image.png

iOS判断代码如下


iOS配合Jenkins输出多个环境包_第10张图片
image.png

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

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


iOS配合Jenkins输出多个环境包_第11张图片
image.png
iOS配合Jenkins输出多个环境包_第12张图片
image.png

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

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


iOS配合Jenkins输出多个环境包_第13张图片
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

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

你可能感兴趣的:(iOS配合Jenkins输出多个环境包)