Jenkins自动化打包iOS配置流程
前提条件:Mac系统,并且已经安装xcode,homedrew,Java,如果项目工程中集成了cocoapod,也需要安装cocoapod
Jenkins打包方式分为两种,一种是xcode插件化配置打包,一种是脚本配置化打包,本人更倾向于脚本打包,因此接下来主要介绍iOS脚本打包配置过程
一.通过homebrew安装Jenkins
打开终端,执行命令行
brew install jenkins(注:目前通过这个命令行下载的Jenkins,安装的插件keychain无法正常上传文件)
建议下载更低版本的Jenkins
brew install jenkins-lts
通过homedrew安装后jenkins安装好后所在的位置:
实际安装位置:/usr/local/Cellar/jenkins/
配置文件所在位置:/usr/local/opt/jenkins/
工作空间位置:/Users/用户/.jenkins
进入工作空间位置:cd ~/.jenkins
二.启动Jenkins
打开一个终端,执行命令
brew services start jenkins-lts
重启Jenkins
brew services restart jenkins-lts
关闭Jenkins
brew services stop jenkins-lts
第一次服务开启成功后,在浏览器中输入http://localhost:8080,会出现一个让你输入Jenkins初始密码的页面
获取Jenkins初始密码
重新打开一个终端,执行命令
Ls -a
找到.jenkins文件,执行命令
cd .jenkins
ls -a
cd secrets
ls -a
直到获取到initialAdminPassword文件,执行命令
cat initialAdminPassword
至此将获取到的初始密码输入Jenkins,重启Jenkins
brew services restart jenkins
重新在浏览器输入http://localhost:8080,会进入配置界面
,击安装建议的插件,耐心等待插件安装过程(时间较长)
(若过程中有插件安装失败,可暂时忽略,进入Jenkins后可根据错误log,重新下载安装)
插件安装成功后,
按要求将所有项目填写成功后,点击保存就可以正常使用Jenkins了
三.接下来创建项目任务,如图
1.新建任务打开后,由于我们是用Git管理代码的,所以源码管理选择Git
2.点击保存,回到任务操作页面,点击立即构建,如果Git项目地址和账号密码没问题,构建完成后就可以在
/Users/用户/.jenkins/workspace看到要打包的项目
四.脚本自动化打包流程
1.项目创建完成后,开始配置构建参数
3.增加构建步骤,选择执行shell
4.以项目为例,脚本命令如下
echo 'start build xxxProject'
pwd
whoami
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
pod install --verbose --no-repo-update
workspace_path=.
# 工程名
APP_NAME="xxxProject"
APP_target="xxxProject"
# 证书,如果自动选择证书,设为“iPhone Developer”即可
CODE_SIGN_DEVELOPER="iPhone Developer"
# info.plist路径
project_infoplist_path="./Info_enterprise.plist"
#取版本号
bundleShortVersion=`xcodebuild -showBuildSettings -target $APP_target | grep MARKETING_VERSION | tr -d 'MARKETING_VERSION ='`
#取build值
bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${project_infoplist_path}")
echo "$bundleShortVersion"
DATE="$(date +%Y%m%d)"
IPANAME="xxxProject_${app_path}_V${bundleShortVersion}_${DATE}"
#要上传的ipa文件路径
IPA_PATH="${WORKSPACE}/package/"
echo ${IPA_PATH}
#echo "${IPA_PATH}">> text.txt
#工程环境路径
project_path=$(pwd)
echo "-----> 工程路径:${project_path}"
#工程名称
project_name=$(ls | grep xcodeproj | awk -F.xcodeproj '{print $1}')
#配置测试环境的.m文件
configureFile=$project_path/$project_name/xxx/xxx/xxx.m
echo "$configureFile"
url='^NSString \*const kBaseUrl.*$'
app_url=''
if [ $app_path = "A" ];then
app_url='NSString *const kBaseUrl = @"http:\/\/xxx\/xxx";'
elif [ $app_path = "B" ];then
app_url='NSString *const kBaseUrl = @"http:\/\/xxx\/xxx";'
elif [ $app_path = "C" ];then
app_url='NSString *const kBaseUrl = @"http:\/\/xxx\/xxx";'
";'
else
echo '**************'
fi
sed -i '' "s/$url/$app_url/g" ${configureFile}
sed -i '' "s/$web_url/$app_web_url/g" ${configureFile}
sed -i '' "s/$vip_url/$app_vip_url/g" ${configureFile}
#集成有Cocopods的用法
echo "=================clean================="
xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_target}" -configuration "${build_configuration}" clean
echo "+++++++++++++++++build+++++++++++++++++"
xcodebuild archive -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_target}" -archivePath "${IPA_PATH}${APP_target}.xcarchive" -configuration "${build_configuration}"
xcodebuild -exportArchive -archivePath "${IPA_PATH}${APP_target}.xcarchive" -exportPath "${IPA_PATH}${IPANAME}" -exportOptionsPlist "${IPA_PATH}exportOptions.plist"
5.需注意,使用exportArchive导出.ipa包时,必须在导出路径内配置exportOptions.plist文件
exportOptions.plist格式如下
6..ipa文件构建成功,如图
首先,. ipa包导出路径必须放在Jenkins工程项目路径下,例如
#要上传的ipa文件路径
IPA_PATH="${WORKSPACE}/package/"
然后,增加构建后的操作,选择归档成品
用于存档的文件选择ipa包路径,如图
注意
1.项目构建时,报错pod: command not found
解决方案:前提是已经安装了cocoapods
第一步:打开Jenkins,然后在Jenkins左侧的菜单中找到 系统管理--->系统设置--->全局属性,然后找到Environment variables(中文:环境变量)并且勾选。
第二步:打开你的终端,在终端中输入echo $PATH
,终端会打印出一串字符串,几个路径,复制该路径,返回到Jenkins中
第三步:会让填写一个键值对,键默认填写PATH
,值填写你从终端复制的那个字符串,点击保存,完成,构建该项目。
2.项目打包成功,但是报错 Step ‘Archive the artifacts’ failed: No artifacts found that match the file pattern
解决方案:
第一步. ipa包导出路径必须放在Jenkins工程项目路径下,例如
#要上传的ipa文件路径
IPA_PATH="${WORKSPACE}/package/"
第二步.增加构建后的操作,选择归档成品
用于存档的文件选择ipa包路径,如图
3.打包报错 ARCHIVE FAILED
error: No profiles for 'com.ts.hjwealth' were found: Xcode couldn't find any iOS App Development provisioning profiles matching 'com.ts.hjwealth'. Automatic signing is disabled and unable to generate a profile. To enable automatic signing, pass -allowProvisioningUpdates to xcodebuild. (in target 'HJInvestment' from project 'HJInvestment')
解决方案:
一般这个报错原因是描述文件和工程bundleID不匹配,检查配置的描述文件,重新配置相对应的profile
Jenkins自动化打包iOS配置流程相关推荐
- gitlab+jenkins自动化打包APK
前置条件: 环境搭建,jenkins需要的插件看这里: gitlab+jenkins自动化打包IOS 配置思路: step1: 搭建sdk,gradle运行环境,参照: CentOS7下安装安装and ...
- iOS - mac环境Jenkins自动化打包并上传蒲公英分发从0到1详细搭建过程,自我的实践记录
第一过程 : 环境的相关配置条: 0. mac 电脑,系统版本为为 10.14.5 1. 升级ruby环境: 我用的是 rvm 1.29.9,可在终端 用 rvm -v 查看当前版本. 2. 安 ...
- Android jenkins 自动化打包
前言:前段时间因项目需要捣拾了一下Jenkins自动化打包,过程中遇到了很多的坑,在此记录一下.因为这篇博客是之后写的,所以有些具体的坑就不能回显了. 一,实现的功能 选择版本号,git 分支,渠道, ...
- Android-使用Jenkins自动化打包详解-Linux篇
文章目录 购买和使用阿里云 安装宝塔面板 安装Tomcat 安装 jenkins 配置jenkins 设置FTP jenkins 常规操作 修改admin密码 购买和使用阿里云 首先购买阿里云,可从以 ...
- 使用jenkins自动化打包部署Vue项目。详细教程。
此教程 jenkins是直接部署到linux服务器上.服务器系统:CentOS 7.3 64位. 流程:jenkins关联码云仓库,点击立即构建,执行shell进行构建,打包,把打包后的dist目录文 ...
- Jenkins自动化打包生成二维码下载链接
在自动化打包流程中,Jenkins是一个不错的工具,可以帮助我们省去很多的打包和部署问题,解放了双手.通常,使用Jenkins 打包好的 apk 文件,我们可以上传到tomcat或者httpd所在服务 ...
- jenkins自动化打包部署,jenkins执行sh脚本不退出问题
介绍 Jenkins是开源软件项目,主要用来自动化打包部署.使用jenkins彻底告别手动部署的麻烦与繁琐. 安装部署jenkins 官方下载地址 启动jenkins war包 登入jenkins 设 ...
- 好玩的东西 Jenkins 自动化打包
官网下载jenkins 左边的windowns 装好后next 点到选择localsystem (第一个选择框)然后设置用户名密码然后连接外网 会打开一个jenkins连接 根据提示安装插件 有一部分 ...
- 无人值守安装linux指定硬盘,Linux无人值守自动化安装详细配置流程!
在生产环境中,往往需要给成百上千台服务器安装系统,手动安装略显蛋疼,网络自动化引导安装就能解决批量安装的问题,从此批量系统安装so easy! 以下配置流程均在CentOS 6.7实现 实现环境: P ...
最新文章
- set RowCount 与 top n
- 【Ubuntu】ubuntu webqq桌面版pywebqq
- php和java整合开发实战_PHP和Java强强联合 PHP与Java集成开发详解
- python零基础系统学习教程之Python 变量类型
- [Luogu1821][USACO07FEB]银牛派对Silver Cow Party
- 关于C#异步编程你应该了解的几点建议
- vux 使用 font-awesome
- 谈谈能带来高薪报酬的软件技术
- NLP判断语言情绪_网易严选nlp预训练语言模型的应用
- 尔雅网络选课 大学计算机知识,2017-2018学年第1学期超星尔雅网络课程选课指南.PDF...
- 自动化测试工程师简历模板
- 知其然,知其所以然——ArrayList.add()详解
- (1)CC3200学习之blinky导入后报编译器版本错误
- 常用应届生Java开发笔试面试题(更新中)
- golang 结构体使用chan
- JupyterLab教程:程序员的笔记本神器v2.0
- 批量创建Azure DevOps Server 的账户
- python版FlappyBird代码解析
- 网易游戏实习电话面试
- 查看并 redis慢日志