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 启动方式

  1. 单次启动, 该运行方式需要保持终端常驻
catalina run
  1. 直接执行脚本启动

    该方式不需要保持终端常驻,在 Tomcat路径/usr/local/Cellar/tomcat下的某个 bin 文件下,如下图

  2. brew 启动

brew services start tomcat

打开浏览器,输入 http://localhost:8080/可以查看是否启动成功。

Tips: 不建议使用最新版本 Tomcat, 我使用 Tomcat11时遇到 jenkins 启动总是启动失败。

Jenkins安装

1.Jenkins官网下载 .war 包

  1. 直接将 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: 管理要是和证书的,这里我没使用。

安装插件的方式

  1. 选择Manage JenKins

  1. 选择管理插件

  1. 搜索插件安装或本地上传文件安装

安装完成后,开始配置了。噩梦才刚刚开始。

新建任务

点击 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 foundpod 找不到

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自动打包相关推荐

  1. ios jenkins配置_Jenkins一:iOS自动打包完整实践

    后续文章:Jenkins二:参数化构建iOS自动打包 快捷记录:如果jenkins是用dmg安装,因为权限问题不能访问keychain时,每次新添加一个p12文件都要如此, /Users/管理员用户名 ...

  2. 自动打包linux,使用Jenkins如何自动打包部署linux

    使用Jenkins如何自动打包部署linux 发布时间:2020-11-25 14:47:07 来源:亿速云 阅读:86 作者:Leah 使用Jenkins如何自动打包部署linux?很多新手对此不是 ...

  3. python项目打包部署到ios_Python iOS 自动打包脚本(包含上传到fir)

    Python iOS自动打包脚本 使用说明 1.1 使用python3编写,没有python3 环境的需要下载python3 python官网下载 1.2 通过Homebrew安装Python3 1. ...

  4. Jenkins配置自动打包app发布蒲公英显示二维码

    Jenkins配置自动打包app发布蒲公英显示二维码 搞了一周,终于弄好了,下面就是见证奇迹的时刻. 1.下载Jenkins,去官网点这里选择Windows版本: 2.下载完是个zip解压 安装 一路 ...

  5. iOS自动打包,并上传蒲公英

    1. 下载gitHub文件 :  GitHub - xtyzmnchen/ios-autoTool-IPA: ios自动打包工具 2. 配置当前项目路径 \ 项目名称 \ 输出IPA包路径 \ 蒲公英 ...

  6. iOS自动打包(敲一下enter键,完成iOS的打包工作)

    原文地址这里写链接内容 参考iOS自动打包并发布脚本这里写链接内容 作为开发人员,免不了要为测试人员打包,让其测试.而打包这个行为是非常无聊的,特别是在每个新版本上线前一两天,总会出现一些莫名其妙的b ...

  7. jenkins android md5,Jenkins配置自动打包 -- 遇到的坑

    1.把gradle路径设为本地路径 Jenkins部署在远程linux服务器上,使用git将代码下载到服务器路径下后,无法使用gradle命令 因为默认配置都是gradle同步时 实时从网上下载,进入 ...

  8. iOS Jenkins + fastlane自动打包,蒲公英上传

    文章目录 前言 前置工作 1.安装 jenkins 2.jenkins配置 2.1 打开浏览器,进入到 jenkins 初始化 2.2 安装插件 2.3 环境变量配置 3.创建任务 3.1 新建任务 ...

  9. ios 自动打包命令_iOS:使用jenkins实现xcode自动打包(最新)

    参考各种教程实现Jenkins自动化打包遇到点坑,特此把自己成功安装的步骤记录一下. 一.安装jenkins 首先使用osx系统自带的homebrew来安装jenkins. 在终端中运行:$ brew ...

最新文章

  1. 4.STM32中对USART1_Config()函数的理解(自定义)
  2. Spring3 MVC Login Interceptor(Spring 拦截器)
  3. C语言字符串压缩显示
  4. 数学之美:嵌入式编程凹凸性之妙用(附C代码)
  5. pytorch l2正则化_吴恩达深度学习 编程作业六 正则化(2)
  6. mysql数据库加载太慢_使用MySQL数据库很慢
  7. Windows下编译扩展OpenCV 3.1.0 + opencv_contrib
  8. mac新手入门:在Mac上怎么使用夜览
  9. 2011考研数学二第(19)题——拉格朗日中值定理证不等式、单调有界证数列收敛、两问关联
  10. 米字格图片可打印_练字本米字格模板可打印行楷书
  11. VDN互联网数据驱动 FOR PB
  12. 中科方德桌面操作系统_国产操作系统——中科方德桌面操作系统,USB无线网卡配置...
  13. 怀旧服务器联盟优势,魔兽世界tbc联盟服务器选哪个_wowtbc怀旧服联盟服务器排名_3DM网游...
  14. chrome浏览器的性能测试--本文引用自 百度百科http://baike.baidu.com/view/1835504.htm
  15. Ubuntu安装显卡驱动及设置3d桌面
  16. 国内有哪些比较靠谱的云主机供应商,性价比高一点的?
  17. python爬虫解决中文乱码和爬取美女图片
  18. 【教程】枫叶文字效果!
  19. 新书推荐——信创桌面操作系统的配置与管理(统信UOS版)
  20. 初探Spark-使用大数据分析2000W行数据

热门文章

  1. mciSendString 的两个小坑
  2. Python之目录结构
  3. 【基于libRTMP的流媒体直播之 AAC、H264 推送】
  4. 浅谈RAID写惩罚(Write Penalty)与IOPS计算
  5. 第四条:通过私有构造器强化不可实例化的能力
  6. 维护隐私 搞定最近打开文档的显示
  7. 学习ASP.NET比较完整的流程
  8. Java 集合系列(四)—— ListIterator 源码分析
  9. [剑指Offer] 59.按之字形顺序打印二叉树
  10. 第二章:深入C#数据类型