Jenkins自动化打包

178 阅读3分钟

一、Jenkins环境部署

1 安装Java环境

Jenkins运行是依赖 Java 环境的,因此,安装之前需要检查是否已安装 Java 包

java -version

如果未安装的话,需要去安装一下 Java 环境。我这边是 M1 芯片,因此选择的 DMG 程序安装

image.png

可以看到我这边是已经安装好的,

image.png

2 安装 Jenkins

Jenkins官网

这里有两种安装方式,

image.png

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. 创建项目

image.png

2 General

  1. 添加项目描述。

  2. 选择GitHub项目,输入你项目路径。 image.png

3 源码管理

  1. Repository URL - 你的远程仓库地址。

  2. Credentials - 添加你仓库账号/密码 或者 ssh秘钥

image.png

4 构建环境 (目前是不需要配置此项了,证书从ExportOptions.plist获取,因此此步骤可以忽略)

选择证书

image.png

5 构建

点击增加构建步骤,选择执行shell,输入打包脚本

image.png

本脚本以企业应用为例,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服务器

系统管理 - 系统配置

image.png

执行shell脚本后可以把 ipa 上传至 远程服务器nginx目录下,

配置远程服务器

image.png

这里是本地启动的 Jenkins,无法配置 nginx 服务器地址链接。

总结

脚本打包不管是 Jenkins 还是 Fastlane,总是需要你的 Xcode已经是正确的发布证书配置。