使用 gitlab 自动打包

提及自动化打包工具一般都会想起 Jenkins。使用 Jenkins 配合 Gitlab,svn,github 等就可以配置自动化打包的操作。而且 Jenkins 功能很多很强大,不仅仅可以用于打包。但是如果仅仅是打包的话,而且公司自建有自己的 Gitlab,使用 Gitlab CI 完成自动化打包,可以减少程序员的操作步骤。

Gitlab CI 原文地址

iOS 程序代码的准备

安装 xcpretty 支持 编译 信息友好显示

创建工程

  1. Product > Scheme > Manage Schemes.


    SharedScheme.png
  2. 上传工程到 gitlab 上

使用命令行来 Build iOS 项目

  1. 创建 ExportOptions.plist 文件。该文件包含有开发者账号与项目关联相关的配置,很重要。如果不想自己创建,使用 Xcode build 一次包之后就有了。

  2. 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
  1. 配置 .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 '[email protected]/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 使用高级技巧会专门说这里。

你可能感兴趣的:(使用 gitlab 自动打包)