IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Jenkins自动化打包iOS配置流程 -> 正文阅读

[移动开发]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

?

?

?

?

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-09-11 18:56:29  更:2021-09-11 18:58:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/31 9:53:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码