Tomcat Jenkins iOS自动打包
Tomcat Jenkins iOS自动打包
Jenkins 可以配合测试人员或者 CI 打包,主要作用是提供打包页面选择和参数传递,最后导出 ipa 包。
打包方式有如下几种
- 借助 Jenkins Xcode插件,配置好参数打包
- 自行编写脚本打包(xcodebuild)
- 使用脚本唤起 fastlan 打包
当然首选直接配置了,不过还是会遇到很多配置的坑,我总共打了30次才成功。
前言:使用 brew 安装软件可以避免很多问题,打包失败,多半是配置和路径问题。
注意:需要安装 JDK 环境
JDK安装
由于 Tomcat和 Jenkins 都需要 Java 环境,所以需要安装 JDK
brew tap AdoptOpenJDK/openjdk
brew install adoptopenjdk8
Tomcat 安装
搜索 tomcat
brew search tomcat
安装 tomcat9, 不建议安装最新版本。
brew install tomcat@9
Tomcat 启动方式
- 单次启动, 该运行方式需要保持终端常驻
catalina run
直接执行脚本启动
该方式不需要保持终端常驻,在 Tomcat路径
/usr/local/Cellar/tomcat
下的某个 bin 文件下,如下图brew 启动
brew services start tomcat
打开浏览器,输入 http://localhost:8080/可以查看是否启动成功。
Tips: 不建议使用最新版本 Tomcat, 我使用 Tomcat11时遇到 jenkins 启动总是启动失败。
Jenkins安装
1.Jenkins官网下载 .war 包
- 直接将 jenkins.war 包放在 Tomcat的 webapps 目录下,启动 tomcat 会自动解压和启动,如下图:
此时需要重启一下 Tomcat
打开浏览器,输入 http://localhost:8080/jenkins 可以进入Jenkins 如下图:
如果404请重启或者安装其他tomcat/Jenkins 版本试一试。
可能会遇到的问题
端口被占用,修改 Tomcat 端口或者找出并杀掉占用的服务。
Tips: 以下流程访问参考链接配置,这里我只记录下遇到的问题。
配置详情:iOS-最新 Jenkins 自动化打包配置教程–掘金-老谭泡菜
Jenkins 初始化
如果出现下面这个界面,说明你的软件安装步骤已经完美成功了。
终端cat 提示的路径
获取密码进行初始化。
之后选择安装推荐插件,可能会安装多次。
设置管理员账户信息,之后就算完成 Jenkins 的初始化了。
配置插件
插件推荐:
- Git Parameter Plug-In: 主要用于源码和分支管理和参数化构建的。
- Xcode integration: 非脚本构建必须
- Keychains and Provisioning Profiles Management: 管理要是和证书的,这里我没使用。
安装插件的方式
- 选择
Manage JenKins
- 选择管理插件
- 搜索插件安装或本地上传文件安装
安装完成后,开始配置了。噩梦才刚刚开始。
新建任务
点击 Jenkins首页 > 新建Item。输入任务名称并选中自由风格工程,下一步。
在通用选项里可进行一些描述信息填写和构建包丢弃计划(非必要设置),如图:
之后就是进行插件配置了
Git Parameter Plug-In
该插件主要用于参数化配置和选择,参数可以后面使用和脚本配置使用。
可以配置 git 参数,其他参数,如发版模式 Debug\Release
比如我配置了 git 分支选择,和构建环境选择参数,如下图
这里定义的 brach 和 configuration在后面的环境中就可以作为变量使用${branch}
、${configuration}
打包的时候就可以通过Build with parameters
打包
分支过滤
我们项目每个版本都会创建一个分支,并且会有对应的 bug 分支,每一个开发同学还会自建版本分支,所以会造成 git 远程分支较多,打包的时候难以快速选择到目标分支。这种情况下我们就需要进行分支过滤。
点击插件的高级
过滤示例:只保留 features 下 main 分支和 bufFix 分支
.*
表示任意
|
表示与 参考Jekins 配置多个分支过滤
源码管理
这里需要填写您的账号密码,否则可能不具有拉取代码权限。
构建
执行Shell
由于我主要借助插件打包,所以 执行Shell
部分我只执行了pod install
一开始这里没遇到问题,后来遇到了
遇到的问题
command not found
pod 找不到
libexec/temp/jenkins10049699527950477165.sh: line 2: pod: command not found
解决办法
步骤1:打开 Jenkins, 系统配置 --> 系统设置 --> 全局属性添加环境变量,勾选
步骤2:打开终端,输入echo $PATH
, 复制输出的路径到 jenkins
步骤3:添加键值对,键PATH
,值刚刚复制的
CocoaPods requires your terminal to be using UTF-8 encoding.
解决办法
其实错误提示已经给出方案,在构建脚本种加入
export LANG=en_US.UTF-8
所以最后我的 shell 为
export LANG=en_US.UTF-8
pod install
Jenkins Xcode构建配置
这里的配置是非常重要和细节的,不确定的点击后面问号仔细看。
这里还需要根据项requires a provisioning profile with the Push Notifications and Associated Domains features目特性和需求配置,我的配置如下:
项目配置部分
Tips: 这里的 Configuration 参数可以使用上面定义的变量即:
${Configuration}
达到动态选择打包的效果
导出设置
Code signing & OS X keychain options(非常重要)
这里最容易出错,而且根据项目不同配置不同。
我们证书签名都是统一管理,xcode 项目没有选择 Automatic Signing
所以我选择了 Manual signing(其实我是试过了其他两个不行)
Provisiong profile UUID 怎么找?
由于这一步配置错误,导致总是打包失败。
首先需要知道的是Provisioning porfile位置在那里,大部分人的在:
/Library/MobileDevice/Provisioning Profiles
进入这个目录之后。你会发现有很多个,全部都是 UIID 的,你不知道哪个对应哪个项目,而且还有 Debug 和 Release 的。
我的办法是:全部删除,然后打开xcode项目,重新下载 Release 的 provisioning profile.
Unlock Keychin(非常重要)
这个配置正确,jenkin才有访问钥匙串证书的权限。
我们的xcode项目Signing 没有勾选,所以没有选择 Automatic Signing
遇到问题
Advanced Xcode build options
这里最需要注意的是,如果项目是使用 cocoapods 或者 xcworkspace 工程。则需要填写Xcode Workspace File
遇到的问题
问题1
error: module 'xxxx' not found
某个私有库没有找到
解决
由于配置中没有配置Xcode Workspace File
,所以直接默认编译 xcodeproj,所以这里需要配置。
使用脚本构建(可选)
如果使用 Xcode 插件则不需要以下。
shell 脚本
Date="$(date +"%m%d_%H%M")"
Day="$(date +"%m%d")"workspace_path=$WORKSPACE
archive_path=$JENKINS_HOME/workspace/Packages/项目名cd $workspace_path
pod installcd 项目名.xcodeproj# 我的项目中有配置bugly的脚本,打包时会上传DSYM,影响打包速度。
# 打包给测试使用时,用不到,所以使用perl正则找到配置bugly的脚本,替换为空字符串。
cat project.pbxproj | perl -pe "s/(?<=shellScript = \").*UPLOAD_DSYM_ONLY=1.*(?=(\"))//" > 999.pbxproj
mv -f 999.pbxproj project.pbxprojxcodebuild archive \
-workspace "$workspace_path/项目名.xcworkspace" \
-scheme $Scheme \
-configuration $Configuration \
-archivePath $archive_path/项目名.xcarchivexcodebuild \
-exportArchive \
-archivePath $archive_path/项目名.xcarchive \
-exportPath $archive_path \
-exportOptionsPlist $WORKSPACE/${ExportType}_ExportOptions.plist#删除旧xcarchive
rm -rf archive_path/项目名.xcarchive
#改名
IpaName="${Scheme}_${Configuration}_${Date}.ipa"
mv $archive_path/项目名.ipa $archive_path/$IpaNameif [ $UP_PGY == true ]
then
IPA="$archive_path/$IpaName"
PGYUSERKEY="user_key"
PGYAPIKEY="api_key"
PGYDESC="Jenkins自动打包"#自动上传到蒲公英
curl -F "file=@$IPA" \
-F "uKey=$PGYUSERKEY" \
-F "_api_key=$PGYAPIKEY" \
-F "updateDescription=$PGYDESC" \
"https://qiniu-storage.pgyer.com/apiv1/app/upload"
fi
构建后操作
构建后操作我这里选择归档成品
,这样打包完成后就可以直接在页面上下载 ipa包
遇到的坑
requires a provisioning profile with the Push Notifications and Associated Domains features
这个错误在我一开始打包的时候遇到。没有配置 Xcode Workspace File和 Configuration, 当时 Coding & Signing 也没有配置。
参考
iOS-最新 Jenkins 自动化打包配置教程–掘金-老谭泡菜:比较齐全的安装教程,其中的 jenkins Xcode插件配置非常重要,包含上传包到fir(插件版)
Tomcat+Jenkins iOS 自动打包–花果山松鼠:包含 Tomcat 部分的使用,直接使用 Jenkins.war 放在 Tomcat, 使用脚本打包方式, 还包含上传到蒲公英(脚本版)
Tomcat Jenkins iOS自动打包相关推荐
- ios jenkins配置_Jenkins一:iOS自动打包完整实践
后续文章:Jenkins二:参数化构建iOS自动打包 快捷记录:如果jenkins是用dmg安装,因为权限问题不能访问keychain时,每次新添加一个p12文件都要如此, /Users/管理员用户名 ...
- 自动打包linux,使用Jenkins如何自动打包部署linux
使用Jenkins如何自动打包部署linux 发布时间:2020-11-25 14:47:07 来源:亿速云 阅读:86 作者:Leah 使用Jenkins如何自动打包部署linux?很多新手对此不是 ...
- python项目打包部署到ios_Python iOS 自动打包脚本(包含上传到fir)
Python iOS自动打包脚本 使用说明 1.1 使用python3编写,没有python3 环境的需要下载python3 python官网下载 1.2 通过Homebrew安装Python3 1. ...
- Jenkins配置自动打包app发布蒲公英显示二维码
Jenkins配置自动打包app发布蒲公英显示二维码 搞了一周,终于弄好了,下面就是见证奇迹的时刻. 1.下载Jenkins,去官网点这里选择Windows版本: 2.下载完是个zip解压 安装 一路 ...
- iOS自动打包,并上传蒲公英
1. 下载gitHub文件 : GitHub - xtyzmnchen/ios-autoTool-IPA: ios自动打包工具 2. 配置当前项目路径 \ 项目名称 \ 输出IPA包路径 \ 蒲公英 ...
- iOS自动打包(敲一下enter键,完成iOS的打包工作)
原文地址这里写链接内容 参考iOS自动打包并发布脚本这里写链接内容 作为开发人员,免不了要为测试人员打包,让其测试.而打包这个行为是非常无聊的,特别是在每个新版本上线前一两天,总会出现一些莫名其妙的b ...
- jenkins android md5,Jenkins配置自动打包 -- 遇到的坑
1.把gradle路径设为本地路径 Jenkins部署在远程linux服务器上,使用git将代码下载到服务器路径下后,无法使用gradle命令 因为默认配置都是gradle同步时 实时从网上下载,进入 ...
- iOS Jenkins + fastlane自动打包,蒲公英上传
文章目录 前言 前置工作 1.安装 jenkins 2.jenkins配置 2.1 打开浏览器,进入到 jenkins 初始化 2.2 安装插件 2.3 环境变量配置 3.创建任务 3.1 新建任务 ...
- ios 自动打包命令_iOS:使用jenkins实现xcode自动打包(最新)
参考各种教程实现Jenkins自动化打包遇到点坑,特此把自己成功安装的步骤记录一下. 一.安装jenkins 首先使用osx系统自带的homebrew来安装jenkins. 在终端中运行:$ brew ...
最新文章
- 4.STM32中对USART1_Config()函数的理解(自定义)
- Spring3 MVC Login Interceptor(Spring 拦截器)
- C语言字符串压缩显示
- 数学之美:嵌入式编程凹凸性之妙用(附C代码)
- pytorch l2正则化_吴恩达深度学习 编程作业六 正则化(2)
- mysql数据库加载太慢_使用MySQL数据库很慢
- Windows下编译扩展OpenCV 3.1.0 + opencv_contrib
- mac新手入门:在Mac上怎么使用夜览
- 2011考研数学二第(19)题——拉格朗日中值定理证不等式、单调有界证数列收敛、两问关联
- 米字格图片可打印_练字本米字格模板可打印行楷书
- VDN互联网数据驱动 FOR PB
- 中科方德桌面操作系统_国产操作系统——中科方德桌面操作系统,USB无线网卡配置...
- 怀旧服务器联盟优势,魔兽世界tbc联盟服务器选哪个_wowtbc怀旧服联盟服务器排名_3DM网游...
- chrome浏览器的性能测试--本文引用自 百度百科http://baike.baidu.com/view/1835504.htm
- Ubuntu安装显卡驱动及设置3d桌面
- 国内有哪些比较靠谱的云主机供应商,性价比高一点的?
- python爬虫解决中文乱码和爬取美女图片
- 【教程】枫叶文字效果!
- 新书推荐——信创桌面操作系统的配置与管理(统信UOS版)
- 初探Spark-使用大数据分析2000W行数据