iOS Jenkins

2023-02-16  本文已影响0人  FieryDragon

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)

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
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

参考文档: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)

上一篇 下一篇

猜你喜欢

热点阅读