Jenkins-iOS自动化打包

Jenkins 是什么?

Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。
Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。

环境部署

Java安装

由于Jenkins 依赖于Java,所以在安装Jenkins前,需要先检查是否已安装Java环境。 在终端输入命令进行检测:

java -version
  • 已安装
java version "1.8.0_341"
Java(TM) SE Runtime Environment (build 1.8.0_341-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.341-b10, mixed mode)
  • 未安装
    建议安装Oracle Java 版本,否则Jenkins配置节点(解决Linux上iOS打包)需要再次升级。
    Java官网下载地址

Jenkins安装

Jenkins官网

1.Homebrew安装(推荐)
Jenkins.png
Jenkins下载.png
Jenkins安装.png
2.下载.war包方式安装

jenkinschina官网下载。建议下载Jenkins 2.263.4版本,因为最新版本存在login.keychain无法上传的bug。

war.png

登录

在浏览器页面输入以下地址,就打开Jenkins管理页面了。

http://localhost:8080/
localhost.png

输入,点击继续


自定义安装插件.png

等待安装完成


等待安装完成.png

可能会失败,点击重试


失败重试.png

安装成功后,创建管理员用户

创建用户.png

实例配置,默认


实例配置.png
就绪.png
首页.jpg

插件管理

插件管理.png
keychains.png

为了支持xcode打包,需要在可选插件中选择我们需要的插件进行安装:
①Xcode integration:打包的插件,所以iOS的打包只能部署在Mac系统
②GIT plugin
③Git Parameter
④GitLab
⑤Keychains and Provisioning Profiles Management: 证书与描述文件的管理

配置项目的访问SSH私钥

如果你的电脑没有配置过SSH,此处以码云为例,可看码云官方文档,配置好SSH后再给Jenkins配置。

Manage Credentials.png

添加凭证


添加凭证.png

创建一个SSH


SSH.png

SSH查看
终端执行一下操作,获取公钥

cat ~/.ssh/id_rsa.pub
结果.png

注意:Username(用户名)是gitlab账号。此处也可以直接配置用户名与密码


用户名密码 .png

配置项目依赖的证书与描述文件

文件上传配置有问题,通过脚本文件上传。

任务

建立任务

新建.png

构建配置

代码库地址


GitHub配置.png

同一时间构建个数及开启构建版本之间的间隔


构建配置.png

旧版本处理策略

旧版本处理策略.png

参数化构建过程

添加参数.png
添加参数.png
Git参数.png
选项参数.png
选项参数.png

源码管理

仓库&凭证.png
分支.png
克隆.png

构建环境

构建环境.png

Delete workspace before build starts:在开始构建之前删除工作区
Add timestamps to the Console Output:向控制台输出添加时间戳

Build Steps

新增.png

shell.png

保存

Jenkins配置节点(解决Linux上iOS打包)

JAVA环境升级

升级最新JDK

MAC 共享

共享.png

新建节点

Manage Jenkins(系统管理) -> Manage Nodes and Clouds(节点管理) -> 新建节点


名称.png
IP.png
可用性.png
节点属性.png
完成.png

项目节点配置

节点配置.png

其它

上传jir

使用的是fir-cli上传,下面几个连接提供参考
介绍:https://github.com/FIRHQ/fir-cli
安装:http://blog.betaqr.com/use-fir-cli-in-jenkins/
使用:https://github.com/FIRHQ/fir-cli/blob/master/doc/publish.md

gem install fir-cli
fir login "API token"
fir me
fir publish "$export_ipa_path/$ipa_name.ipa"
打包完成,发布钉钉群

1.在需要发消息的钉钉群,点击群设置 - 智能群助手 - 添加机器人


添加机器人.png

选择自定义


选择自定义.png

机器人管理


机器人管理.png

获取Webhook


Webhook.png
#https://github.com/PGYER/fir-cli/blob/master/doc/publish.md
gem install fir-cli
fir login "****"
fir me
fir publish "$export_ipa_path/$ipa_name.ipa" --dingtalk-access-token="access_token"

curl 'https://oapi.dingtalk.com/robot/send?access_token=****' \
 -H 'Content-Type: application/json' \
 -d '{"msgtype": "markdown","markdown": {"title": "***","text": "#### ***  \n > 版本号:1.0.0\n > ![screenshot](https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png)\n > ###### 10点20分发布 [***](https://www.baidu.com/) \n"},"at": {"isAtAll": true}}'

内容中必须包含关键字

问题

1.权限不足
AutoPackageScript.sh: line 43: ./tiensinstall.sh: Permission denied

解决方案:
到目标脚本的文件夹 执行

chmod 777 ./*.sh

然后回车 输入密码 就行了
参考文档:执行 ./install.sh 报错 Permission denied

2.
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

解决方案:

edy@192 ~ % sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/
Password:
edy@192 ~ % xcodebuild -showsdks
DriverKit SDKs:
    DriverKit 21.4                  -sdk driverkit21.4

iOS SDKs:
    iOS 16.0                        -sdk iphoneos16.0

iOS Simulator SDKs:
    Simulator - iOS 16.0            -sdk iphonesimulator16.0

macOS SDKs:
    macOS 12.3                      -sdk macosx12.3
    macOS 12.3                      -sdk macosx12.3

tvOS SDKs:
    tvOS 16.0                       -sdk appletvos16.0

tvOS Simulator SDKs:
    Simulator - tvOS 16.0           -sdk appletvsimulator16.0

watchOS SDKs:
    watchOS 9.0                     -sdk watchos9.0

watchOS Simulator SDKs:
    Simulator - watchOS 9.0         -sdk watchsimulator9.0

edy@192 ~ % xcrun --sdk iphoneos --show-sdk-path
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.0.sdk

参考文档:xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Deve

3.在手动指定Pofile文件的时获取mobileprovision_name
  • 描述文件-显示简介
  • 终端输入cat Pofile路径回车

参考文档:https://blog.csdn.net/saw471/article/details/111314268

4.pod: command not found

这个情况一般是由于 jenkins 没有设置正确的PATH环境变量导致. 执行

 echo $PATH

PATH,记录下输出的结果
在 jenkins 中系统管理-系统设置中,找到 环境变量(Environment variables)
在 key 中填写 PATH,在 value 中填写第一步中输出的结果保存即可.

sudo vi ~/.bash_profile
//插入
export PATH=/xxxxxxxx(ruby绝对路径)/bin:$PATH//(/Users/edy/.rvm/rubies/ruby-3.0.0/bin:$PATH)
export PATH=/bin:/usr/bin:usr/sbin:usr/local/bin:$PATH //(系统环境有错的也可以修复 本质就是让shell在运行的之后可以去指定路径寻找可执行文件)
//按一下esc 再按shift+z+z 保存退出

terminal 中输入 source ~/.bash_profile 回车刷新配置文件即可

参考文档:
pod: command not found

5.关闭盖子设备休眠

解决 macbook m1 苹果笔记本电脑 关闭盖子 休眠

参考文档

4.虚拟机部署Jenkins
5.Jenkins的使用
iOS Jenkins自动化打包 上传fir、蒲公英、邮件、钉钉提醒
iOS 自动化打包2 Jenkins + GitLab
iOS自动化打包 Jenkins+Gitlab+Fastlane+蒲公英+钉钉
jenkins(1)-部分插件由于缺少依赖无法加载。要恢复这些插件提供的功能,需要修复这些问题并重启Jenkins的解决办法
Jenkins - iOS Build、Archive、Upload
ios 自动打包开发
iOS 底层原理38:自动化打包(一)Xcode + Shell脚本
Jenkins参数化构建(This project is parameterized)
探究 Xcode 命令行用法一:Xcode 构建必备认知

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容