iOS简单CI,Jenkins+Fastlane+蒲公英一条龙

本示例最终效果:Git Push 代码 -> 自动 Jenkins 调用 Fastlane 打包 -> 上传蒲公英

示例环境

  • MacOS 10.14.4
  • Xcode 10.2.1
  • Fastlane 2.121.1
  • Jenkins ver. 2.173
  • Ruby ruby 2.6.0p0 (2018-12-25 revision 66547)
  • java version "1.8.0_91"

主要工具


一、安装


安装 Fastlane

brew cask install fastlane

建议翻羽土墙,我用的是SS,终端输入 export ALL_PROXY=socks5://127.0.0.1:1086 然后该终端的请求都走SS,速度快很多
安装过程可能会遇到各种报错,请根据提示自行搜索解决

安装 Jenkins

  1. 安装 JDK
    下载 1.8
    终端 java -version 确认已有 1.8 版本, 否则进行安装.
    Java 8,也就是 jdk1.8,Jenkins 2.89.2 部分插件不兼容9,不要用 9

  2. 安装 Jenkins
    brew install jenkins

二、配置


Gitlab

这里使用 Gitee,Github 亦可,主要是配置好公钥.

然后 Xcode 新建个项目,自动签名,真机跑一下,Push 上去.
本示例为了模拟日常真实情况,使用 workspace,随便 pod 添加了个库进去.

Fastlane

在 project 目录下,fastlane init 选择 4 回车回车

打开 fastlane/Fastfileplatform :ios doend 中插入

      # 替换 schemeName
      schemeName = "你的project名"
      outputpath = "~/Desktop/#{schemeName}_dev"

      desc "Archive Dev"
      lane :dev do

       gym(scheme: schemeName,
	   #没有workspace的话,使用 project: "#{schemeName}.xcodeproj" 替换下面?   
          workspace: "#{schemeName}.xcworkspace",
          export_method:"development",
          output_directory: outputpath,
          silent: true)
          
       end

保存文件,终端 fastlane ios dev,桌面看到打包的文件即成功.

最后 Push fastlane 相关文件.

Jenkins

安装后 jenkins -v 即可启动
浏览器地址输入:http://localhost:8080 进入 Jenkins ,安装推荐插件

1. 创建凭据

选择 凭据 -> 系统 -> 全局凭据 -> 添加凭据

填写在上面 Gitlab 部分创建的私钥.
填入私钥内容 cat ~/.ssh/id_rsa

2. 新建任务

3. 添加源码

Repository URL 仓库地址
Credentials 选择上面创建的凭据

4. 增加构建步骤

新增 执行 shell

添加

cd $WORKSPACE/
fastlane ios dev

保存,回首页,开始构建

等待一会,可以看到桌面有打包好的文件.

至此,一键打包完成.

三、上传蒲公英


登录 蒲公英,账户设置 -> API信息

在项目目录下,终端

touch archive.sh
chmod +x archive.sh

打开 archive.sh 编辑输入

echo "Start Archive"

fastlane ios dev

# 替换成项目名称
PNAME="FastlaneTest"
USERNAME=$(whoami)
FILEPATH="/Users/${USERNAME}/Desktop/${PNAME}_dev/${PNAME}.ipa"
uKey="替换成上面蒲公英查询到的User Key"
_api_key="替换成上面蒲公英查询到的API Key"

curl -F "file=@${FILEPATH}" -F "uKey=${uKey}" -F "_api_key=${_api_key}" https://www.pgyer.com/apiv1/app/upload

进入 Jenkins 对应项目配置,把原本如下命令

修改成

cd $WORKSPACE/
./archive.sh

保存,构建,稍等片刻,即可看到蒲公英有上传更新.

四、Push 代码触发构建


1. Jenkins 添加 hook 插件

Jenkins 首页 -> 系统管理 -> 插件管理 -> 可选插件
搜索 hook,勾选 Generic Webhook Trigger 直接安装,勾选重启

项目配置,开启 webhookToken 最好随便填点什么,保存.

本文只做最简单示例,在 master 分支上进行构建,正常应该在 dev 分支收到 hook 之后进行构建,更多此插件配置请看

2. 内网穿透

由于本示例的 Jenkins 是搭建在本机上,只有内网 IP,没有独立外网 IP,没有域名,为了实现 Push 代码后,Gitlab 服务器能 webhook Jenkins 服务,这里需要一个动态域名服务,从内网映射到外网.

这里使用 NATAPP 提供的免费服务,注册登录,购买免费隧道

下载客户端

终端 cd 到 natapp 下,赋予权限
chmod a+x natapp

复制 token

启动服务
./natapp -authtoken=你刚才拿到的值

内网穿透成功,此处红线部分,即是本机的外部地址,手机亦可直接访问.

3. Gitlab Webhook

添加 hook

填写 URL

这里 URL 的格式,若在 Jenkins 项目里的 Generic Webhook Trigger

  1. 无设置 Token,则为 NATAPP获取的域名/generic-webhook-trigger/invoke
    http://ia2wvn.natappfree.cc/generic-webhook-trigger/invoke
  2. 有 Token (建议设置),格式为 NATAPP获取的域名/generic-webhook-trigger/invoke?token=自己设置的token
    http://ia2wvn.natappfree.cc/generic-webhook-trigger/invoke?token=XXXABCXXX

添加后,可以看到,已经触发了一次 hook 的记录,亦可手动点测试,进行测试

稍等片刻,查看蒲公英,可看到已有新包,证明整个流程已经走通完成,无需 Push 代码进行测试的.

至此,一条龙服务完毕.

本示例所用 project 下载地址Fastlane 配置文件,sh 脚本代码.

转载于:https://my.oschina.net/jeans/blog/3044840

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值