一、Jenkins环境部署
1 安装Java环境
Jenkins运行是依赖 Java 环境的,因此,安装之前需要检查是否已安装 Java 包
java -version
如果未安装的话,需要去安装一下 Java 环境。我这边是 M1 芯片,因此选择的 DMG 程序安装
可以看到我这边是已经安装好的,
2 安装 Jenkins
这里有两种安装方式,
1、你可以安装 Docker 容器,然后通过 Docker 容器来安装,不过笔者这边此种方式,后续有一些问题,因此就不推荐这种方式了。感兴趣可以自己尝试一下。
2、点击 macOS,可以看的 Jenkins 的安装命令
安装命令:
- 安装最新的LTS版本:
brew install jenkins-lts
- 安装特定的LTS版本:
brew install jenkins-lts@YOUR_VERSION
- 启动 Jenkins 服务:
brew services start jenkins-lts
- 重新启动 Jenkins 服务:
brew services restart jenkins-lts
- 更新 Jenkins 版本:
brew upgrade jenkins-lts
可以看到这里是通过 Homebrew 来安装的,如果你 brew install jenkins-lts 执行之后,健步如飞,那非常好。如果卡主了,那就移步这篇文章,Homebrew brew update 长时间没反应(或卡在 Updating Homebrew...)
3 启动 Jenkins
终端执行 brew services start jenkins-lts,然后浏览器打开http://localhost:8080,首先要提醒一下,如果是Homebrew全局安装的,那你的 Jenkins目录是在这里,/Users/yd_developer/.jenkins 本地Jenkins安装目录 yd_developer为你的用户名目录,打开 /Users/yd_developer/.jenkins、secrets/initialAdminPassword 目录找到管理员密码输入。然后选择安装推荐的插件。即可完成安装 Jenkins 及 默认插件的配置。
二、项目配置Jenkins
1. 创建项目
2 General
-
添加项目描述。
-
选择GitHub项目,输入你项目路径。
3 源码管理
-
Repository URL - 你的远程仓库地址。
-
Credentials - 添加你仓库账号/密码 或者 ssh秘钥
4 构建环境 (目前是不需要配置此项了,证书从ExportOptions.plist获取,因此此步骤可以忽略)
选择证书
5 构建
点击增加构建步骤,选择执行shell,输入打包脚本
本脚本以企业应用为例,App Store版本可自行配置
-exportArchive有一个文件ExportOptions.plist, 初次打包可选择收到打包,复制手动打包的ExportOptions.plist文件到你脚本目录下
6 执行shell
#!/bin/sh
export LANG=en_US.UTF-8
# 1.设置配置标识,编译环境(根据需要自行填写 release |debug )
configuration="release"
# 工程名(根据项目自行填写)
APP_NAME="Test"
# TARGET名称(根据项目自行填写)
TARGET_NAME="Test"
# ipa前缀(根据项目自行填写)
IPA_NAME="Test"
# 日期
DATE=$(date +%Y%m%d-%H-%M-%S)
# 工程文件路径
ARCHIVE_NAME="${APP_NAME}_${DATE}.xcarchive"
# 存放ipa的文件夹名称(根据自己的喜好自行修改)
IPANAME="${APP_NAME}_${DATE}_IPA"
# 工程根目录#工程源码目录(这里的${WORKSPACE}是jenkins的内置变量表示(jenkins job的路径)
CODE_PATH="${WORKSPACE}"
echo "${WORKSPACE}"
# 要上传的ipa文件路径 ${username} 需要换成自己的用户名
ROOT_PATH="/Users/username/Desktop/JenkinsIpa"
ARCHIVE_PATH="${ROOT_PATH}/Archive/${ARCHIVE_NAME}"
IPA_PATH="${ROOT_PATH}/Export/${IPANAME}"
echo "ARCHIVE_PATH: ${ARCHIVE_PATH}"
echo "IPA_PATH: ${IPA_PATH}"
echo "IPA_PATH:\n${IPA_PATH}">> export_history.txt
# 导包方式(这里需要根据需要手动配 这里以企业应用举例置:AdHoc/AppStore/Enterprise/Development)
EXPORT_METHOD="Enterprise"
# 导包方式配置文件路径(这里需要手动创建对应的XXXExportOptionsPlist.plist文件,并将文件复制到根目录下[我这里在源项目的根目录下又新建了ExportPlist文件夹专门放ExportPlist文件])
EXPORT_METHOD_PLIST_PATH=${CODE_PATH}/ExportOptions/ExportOptions.plist
# 进入工程源码根目录
cd "${CODE_PATH}"
# 执行pod
# pod install --verbose --no-repo-update
# 清除工程
echo "++++++++++++++++clean++++++++++++++++"
xcodebuild clean -workspace ${APP_NAME}.xcworkspace -scheme ${APP_NAME} -configuration ${configuration}
# 将app打包成xcarchive格式文件
echo "+++++++++++++++++archive+++++++++++++++++"
xcodebuild archive -workspace ${APP_NAME}.xcworkspace -scheme ${APP_NAME} -configuration ${configuration} -archivePath ${ARCHIVE_PATH}
# 将xcarchive格式文件打包成ipa
echo "+++++++++++++++++ipa+++++++++++++++++"
xcodebuild -exportArchive -archivePath ${ARCHIVE_PATH} -exportPath "${IPA_PATH}" -exportOptionsPlist ${EXPORT_METHOD_PLIST_PATH} -allowProvisioningUpdates
# 删除工程文件
echo "+++++++++删除工程文件+++++++++"
rm -rf $ARCHIVE_PATH
# # 上传IPA到蒲公英 根据蒲公英官方文档编写 key可以去蒲公英控制台去获取API信息
# file_path="${IPA_PATH}/${IPA_NAME}.ipa"
# echo "正在上传文件"
# echo $file_path
# curl -F "file=@${file_path}" -F "uKey=xxx" -F "_api_key=xxx" https://upload.pgyer.com/apiv1/app/upload
7. 配置远程nginx服务器
系统管理 - 系统配置
执行shell脚本后可以把 ipa 上传至 远程服务器nginx目录下,
配置远程服务器
这里是本地启动的 Jenkins,无法配置 nginx 服务器地址链接。
总结
脚本打包不管是 Jenkins 还是 Fastlane,总是需要你的 Xcode已经是正确的发布证书配置。