使用App Center作为CI构建
介绍
App Center是微软的一款CI产品,用来构建Android、iOS、React Native应用,并分发。
跟travis比起来,App Center更加傻瓜化,但是功能上还是非常优秀的。
登录后,点击右上角“Add new”按钮

输入应用名称,编译类型等。

新建完成后,进入到刚刚创建好的应用中。
点击左侧功能菜单的“Build”项后,显示需要连接到代码仓库。目前支持Azure、GitHub、Bitbucket、GitLab四家。

这里我连接到我的github仓库,选择一个React Native 的 repo。

连接成功后,将看到所有的分支信息:

将鼠标停留在master分支上,将看到设置按钮,点击设置按钮。
首先设置基本信息,包括XCode版本,Node版本,构建触发方式等。

往下拉是设置环境变量

设置这些环境变量的作用后面会说道。接着下拉看到签名设置,如果需要签名,打开此设置。

iOS应用签名需要用到对应的证书(Certificate)和授权文件(Provisioning Profile)。由于我们在创建时设置的Release Type是beta,因此用到的证书是development证书,同时也要使用development类型的授权文件。
关于证书从哪里获取,这里就不多讲了,先了解苹果证书系统。
是否邮件通知测试员。如果想添加或者删除测试员,需要在[组织名称]->People中设置。

分支构建设置完成后,点击Save按钮即可保存,点击 Save & Build 将保存设置后立即构建。
非付费用户构建需要排队,每个月有一定的免费构建时长。
关于环境变量,App Center自身的环境变量:https://docs.microsoft.com/en-us/appcenter/build/custom/scripts/#app-center-variables
App Center还可以添加自定义脚本:https://docs.microsoft.com/en-us/appcenter/build/custom/scripts/
App Center允许你在编译前后执行自定义脚本。如果想在编译前执行脚本,需要在项目根目录新建名为appcenter-pre-build.sh
的文件。在编译完成后执行,则新建名为appcenter-post-build.sh
的文件。
比如我想在App Center构建完成后,将安装包上传到fir.im上。
添加appcenter-post-build.sh
文件,在编译完成后,安装fir命令行工具,通过命令行工具将文件上传至fir.im上。
#!/usr/bin/env bash
sudo gem install fir-cli
fir p $APPCENTER_OUTPUT_DIRECTORY/$APP_FILE -T $FIR_TOKEN
结合我之前写的一篇文章:
使用fastlane自动化构建iOS应用
我们的代码中默认使用的是开发环境配置,如果我们需要编译的是生产环境的开发包,则需要在编译前将代码切换成生产配置。
添加appcenter-pre-build.sh
文件,如下内容:
#!/usr/bin/env bash
sudo gem install fastlane -NV
if [ "$PLATFORM" == "iOS" ];
then
if [ "$APP_MODE" == "dev" ];
then
echo "build dev"
cd ios && fastlane set_app_mode prod:false
elif [ "$APP_MODE" == "prod" ]
then
echo "build prod"
cd ios && fastlane set_app_mode prod:true
fi
fi