提及自动化打包工具一般都会想起 Jenkins。使用 Jenkins 配合 Gitlab,svn,github 等就可以配置自动化打包的操作。而且 Jenkins 功能很多很强大,不仅仅可以用于打包。但是如果仅仅是打包的话,而且公司自建有自己的 Gitlab,使用 Gitlab CI 完成自动化打包,可以减少程序员的操作步骤。
iOS 程序代码的准备
安装 xcpretty 支持 编译 信息友好显示
创建工程
-
Product > Scheme > Manage Schemes.
SharedScheme.png - 上传工程到 gitlab 上
使用命令行来 Build iOS 项目
-
创建 ExportOptions.plist 文件。该文件包含有开发者账号与项目关联相关的配置,很重要。如果不想自己创建,使用 Xcode build 一次包之后就有了。
-
iOS 打包过程分为两步。第一部分,构建 xcarchive 文件。第二部分,导出 ipa 包
# 构建 xcarchive. xcpretty -s 这部分是使用了 xcpretty 解析了 build 过程中的信息使之易读 xcodebuild archive -archivePath ".build/Test.xcarchive" -workspace XXX.xcworkspace -scheme XXX -configuration Release -sdk iphoneos | xcpretty -s # 导出 ipa 包 xcodebuild -exportArchive -archivePath ".build/Test.xcarchive" -exportPath ".build/Test" -exportOptionsPlist ".option.plist" | xcpretty -s
关于生成的 ipa 包的上传问题
我们使用的是蒲公英。改部分可以参考蒲公英的文档
安装 Gitlab runner
# 下载安装 Gitlab runner
sudo curl --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64
# 给 Gitlab runner 添加运行权限
sudo chmod +x /usr/local/bin/gitlab-runner
准备数据。首先确保你是项目的 admin 或者 Owner。然后打开 Setting -> CI/CD,点击 Runner Settings 后面的 Expand,找到下面的数据:
ProjectConfig1.png ProjectConfig2.png runnerconfig.png$ gitlab-runner register # 注意, 这里不能够使用sudo 提权, 否则不会连接到 gitlab 上
WARNING: Running in user-mode.
WARNING: Use sudo for system-mode:
WARNING: $ sudo gitlab-runner...
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
https://你的 Gitlab 地址/
Please enter the gitlab-ci token for this runner:
hYPyyxweyfDT154kgtxx
Please enter the gitlab-ci description for this runner:
[MBP.local]: lma-runner
Please enter the gitlab-ci tags for this runner (comma separated):
TestTag
Whether to run untagged builds [true/false]:
[false]: true
Whether to lock the Runner to current project [true/false]:
[true]: true
Registering runner... succeeded runner=hYPyyxwe
Please enter the executor: docker, parallels, ssh, virtualbox, docker+machine, docker-ssh+machine, docker-ssh, shell, kubernetes:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
$ gitlab-runner install
$ gitlab-runner start
runnerconfigs.png
当看到如下的时候, 配置成功:
runnerconfigsuccess.png
- 配置 .gitlab-ci.yml 文件
stages:
- archive
archive_project:
stage: archive
script:
- export LANG=en_US.UTF-8
- pod install
- xcodebuild archive -archivePath ".build/Test.xcarchive" -workspace XXX.xcworkspace -scheme XXX -configuration Release -sdk iphoneos | xcpretty -s
- xcodebuild -exportArchive -archivePath ".build/Test.xcarchive" -exportPath ".build/Test" -exportOptionsPlist ".option.plist" | xcpretty -s
- curl -F 'file=@.build/Test/XXX.ipa' -F '_api_key=xxxx' -F 'buildInstallType=2' -F 'buildPassword=XXX' https://www.pgyer.com/apiv2/app/upload
artifacts:
paths:
- .build/Product
- .build/Test
expire_in: 2 h
tags:
- TestTag
至此,一个简单的 Gitlab 打包环境就已经配置好了。
关于 Yml 的简介,Gitlab CI 使用高级技巧会专门说这里。
网友评论