最近公司在弄自动化打包工具,因为之前自己也没有搞过,所以也是通过查资料以及问同事,然后自己慢慢研究,最终才学会了这一套东西,话不多说,下面就给大家分享一下整个集成流程.
1.首先要拿到一个项目的git地址以及账号密码登录(一般公司都会有的,没有账号的话,找同事帮你开).
2.安装 配置 GitLab Runner
下载runner到本地sudo curl --output /usr/local/bin/gitlab-ci-multi-runner https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-ci-multi-runner-darwin-amd64
//修改目录权限sudo chmod +x /usr/local/bin/gitlab-ci-multi-runner
3.本地注册Runner需要GitLab项目的CI地址和Token,打开到GitLab,进入对应项目选择 Settings-CI/CD-Runners settings-Expand打开,就能找到CI地址和Token
4.注册Runner,接下来就是一些列注册Runner的命令
gitlab-ci-multi-runner register
WARNING: Runninginuser-mode.
WARNING: The user-mode requires you to manually start builds processing:
WARNING: $ gitlab-runner run WARNING:
Use sudoforsystem-mode: WARNING:
$ sudo gitlab-runner...
//输入之前的URL
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/ci): https://xxxx.com/ci
//输入token
Please enter the gitlab-ci tokenforthis runner:
//描述,这个随意了,一般用默认的就好
Please enter the gitlab-ci descriptionforthis runner:
[Your-Mac\'s-Name.local]:
//runner的tag,这个是用于执行脚本时指定runner用的,所以最好起一个比较容易区分的
Please enter the gitlab-ci tags for this runner (comma separated):
Registering runner... succeeded runner=724a60b5
//runner的执行器,因为Xcode项目需要用xcodebuild来执行,所以选shell
Please enter the executor: virtualbox, ssh, shell, parallels, docker, docker-ssh:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
以上还有一些是false和true的命令,直接回车就好,默认值,包括tag,不用填直接回车,这时候再刷新GitLab项目的 Runner 界面就会看到一个 Active Runner 了
确认好了之后可以启动 Runner 了。
gitlab-ci-multi-runner start
5.配置Xcode
Xcode唯一需要配置的就是要将你运行的scheme设置成Shared。
打开Xcode项目
选择Product > Scheme > Manage Schemes
将对应的scheme勾选上Shared
6.搭建Fastlane
6.1.环境准备
首先 xcode-select --install 确保安装了最新版本的Xcode Command Tools.
然后可以通过 [sudo] gem install fastlane -NV 来安装fastlane;
如果安装了homebrew也可以通过 brew cask install fastlane 进行安装。
6.2.简单使用
安装成功后,在命令行Terminal中切换到项目所在目录,
举个栗子:项目工程在Desktop中的Test中,则 cd Desktop/Test;此时ls,应该看到了项目文件Test.xcodeproj等文件。
然后输入 fastlane init 会进行fastlane的初始化配置,然后会出现一些配置选项:1为自动截屏,主要为了不同设备下的截图,可以做为itune connect中的App信息截图使用;2为自动打包并发布到TestFlight;3为自动打包并上传到itune connect中;4位手动安装。
选择2和3时需要配置一些apple账户和密码。
由于个人只是为了进行打包使用,我选择4,当然也可以选择2或3,然后对生成的Fastlane文件进行修改去掉上传的action就可以了
以下是我的项目中对Fastfile进行修改,因为项目中用到多个Target(区分服务器环境sit、uat、pro),解释一下,sit是lane的名称,里面的gym是配置打包的参数,很容易看懂,pgyer是上传蒲公英的命令.其中api_key和user_key是两个参数,在蒲公英应用中可以找到.
lane :sit do
gym(scheme: "NaXinHaoDai-SIT",
export_method:"development",
output_directory: "./build", # 打包后的 ipa 文件存放的目录
output_name: "NaXinHaoDai-SIT" # ipa 文件名
)
pgyer(api_key: "ac8be42e49f45b4ef59f9e78937d7bd8", user_key: "87111b3236744819daa7117c3d7e0456", update_description: "1.0版本发布")
end
7创建.gitlab-ci.yml文件,这个文件可以在gitlab上生成,而且是在项目根目录下.文件内容如下,- fastlane sit这一句命令就是触发打包上传的, - echo "xxx"就是发送邮件的命令,分别指邮件内容,这里我给的是一个蒲公英下载链接,mail -s是邮件标题,最后是邮件地址,先给自己来一封.artifacts:这个是打包上传到gitlab,上传好后可以下载.
stages:
- build
variables:
LC_ALL: "en_US.UTF-8"
LANG: "en_US.UTF-8"
build_project:
stage: build
script:
- fastlane sit
- echo "https://www.pgyer.com/aadd1b891ca9e0e4cc789b1b116ef28a" | mail -s "iOS安装包已发布,请点击链接下载" [email protected]
artifacts:
paths:
- ./build/NaXinHaoDai-SIT.ipa
8.到这里整个流程已经完成了,接下来只要提交代码,就会去自动化打包,然后上传到蒲公英平台,最后发邮件通知相关人员下载.
整个流程集成大概就是这样,是不是简化了打包程序,变得很简单,如果有哪里写的不清楚或者不好的地方,欢迎大家学习指正,Email:[email protected],喷子勿喷!