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
#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.关闭盖子设备休眠
参考文档
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 构建必备认知