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安装
1.Homebrew安装(推荐)



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

登录
在浏览器页面输入以下地址,就打开Jenkins管理页面了。
http://localhost:8080/

输入,点击继续

等待安装完成

可能会失败,点击重试

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

实例配置,默认



插件管理


为了支持xcode打包,需要在可选插件中选择我们需要的插件进行安装:
①Xcode integration:打包的插件,所以iOS的打包只能部署在Mac系统
②GIT plugin
③Git Parameter
④GitLab
⑤Keychains and Provisioning Profiles Management: 证书与描述文件的管理
配置项目的访问SSH私钥
如果你的电脑没有配置过SSH,此处以码云为例,可看码云官方文档,配置好SSH后再给Jenkins配置。

添加凭证

创建一个SSH

SSH查看
终端执行一下操作,获取公钥
cat ~/.ssh/id_rsa.pub

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

配置项目依赖的证书与描述文件
文件上传配置有问题,通过脚本文件上传。
任务
建立任务

构建配置
代码库地址

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

旧版本处理策略

参数化构建过程





源码管理



构建环境

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


保存
Jenkins配置节点(解决Linux上iOS打包)
JAVA环境升级
MAC 共享

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





项目节点配置

其它
上传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.在需要发消息的钉钉群,点击群设置 - 智能群助手 - 添加机器人

选择自定义

机器人管理

获取Webhook

gem install fir-cli
fir login "b56f37f4cc0f08feb2e5cb6f5157916f"
fir me
fir publish "$export_ipa_path/$ipa_name.ipa" --dingtalk-access-token="access_token"
问题
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 中填写第一步中输出的结果保存即可.
参考文档:
pod: command not found
参考文档
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)
网友评论