上一文中,搭建好了Jenkins环境,自动化打包的第一步已经好了。
这时如果测试妹子要打SIT的包,产品要打UAT的包,运营要打PRD的包,怎么搞?
不能改一下代码,提交一下。然后再改动代码,打另外一个包吧。。。
所以,此文就为了解决这个问题。
利用Build Configuration来配置多环境
原理就是一个Scheme对用一套环境(如:sit,uat,prd等等),然后每个环境又对应两个configuration(debug和release)。因此我们需要新建configuration与Scheme。
1.新建configuration
image.png点击加号新建,比如我们的这个项目有两个环境,UAT与PRD,每个环境下面又分debug与release,所以要新建4项。
选中Duplicate "Debug" Configuration输入Debug-UAT。再重复操作,输入Debug-PRD。
选中Duplicate "Release" Configuration输入Release-UAT。再重复操作,输入Release-PRD。
结果如图所示。
2.新建Scheme,点击Manage Schemes。
点击加号,新增Scheme。同时别忘记勾选Shared,如果不勾选Shared,其他同事拉取代码是没有新增的Scheme的。 image.png
3.编辑Scheme,点击Edit Scheme。
这里将Run的Build Configuration设置成debug。Archive设置成Release。同时也勾选Shared。
4.新建User-defined Build Settings
image.png添加CustomAppBundleld和CustomProductName。
image.png
5.进行pod install。
6.配置和获取环境变量
使用GCC预编译头参数GCC_PREPROCESSOR_DEFINITIONS
我们进入到Build Settings里面,可以找到Apple LLVM Preprocessing,这里我们可以找到Preprocessor Macros在这里,我们是可以加一些环境变量的宏定义来标识符。Preprocessor Macros可以根据不同的环境预先制定不同定义的宏。
如上图,圈出来的地方其实就是一个标识符。
因此,在这里我们可以添加我们自己想要的标识符,根据不同的环境,设置不同的标识符。
image.png
iOS判断代码如下
image.png
7.修改Jenkins配置
这里我们实现了不同的Scheme对应不同的环境,但是我们在Jenkins构建之前,需要一个选择框,供测试妹子选择不同的环境。
在参数化构建过程中,添加【选项参数】
image.png image.png
名称:// 参数名
选项:// 选择项,每行一个。第一行的为默认选项。
点击保存,这是进行构建,就会有选择框。在shell脚本中,使用${buildType}就可以取到选择的值。
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
此时,输出多个环境包就好了~~~
网友评论