文章目录
- 一 创建一个Jenkins pipeline 项目
- 配置分支参数
- 在工程中添加 ExportOptions.plist 文件
- 创建放置打包文件的文件夹
- 在工程里面添加shell脚本文件
- 配置pipeline sript
- 构建
一 创建一个Jenkins pipeline 项目
配置分支参数
选择参数化构建构成,如上图所示,通过该参数配置分支,然后我们选择 ‘选项参数’ 选项,如下图
然后我们填入参数名称和选项
在工程中添加 ExportOptions.plist 文件
手动进行archive ,获取一个 ExportOptions.plist 文件,然后将该文件放到工程中,
后面进行自动化打包需要用到里面的配置,文件位置如图
创建放置打包文件的文件夹
我这里选择放到桌面上, 在桌面上创建一个Jenkins, 并在里面创建一个Archive 和 Export 文件夹
如图
在工程里面添加shell脚本文件
为了方便管理,我们将各个步骤的脚本放到同一个文件夹里面,如图
下面贴出各个shell 脚本文件里面的命令
config.sh
#!/bin/bash -l
APP_NAME="ThePaperBase"
ROOT_PATH="/Users/liubo/Desktop/Jenkins"
CODE_PATH="/Users/liubo/.jenkins/workspace/Pipeline"
#蒲公英上的User Key
uKey="45d2be1046a2db153cda3552207c1a6a"
#蒲公英上的API Key
apiKey="840f54de6357a2b1b8f60cd4a8d107fa"
archive.sh
#!/bin/bash -l
# 设置utf8编码
export LANG=en_US.UTF-8
source ./config.sh
#获取当前版本号
get_build_version=`xcodebuild -showBuildSettings -target ${APP_NAME} | grep CURRENT_PROJECT_VERSION | tr -d 'CURRENT_PROJECT_VERSION = '`
old_build_version=$get_build_version
echo "old_build_version = $old_build_version"
echo "${ROOT_PATH}"
#版本号增加
agvtool new-version $(($old_build_version+1))
DATE=$(date +%Y%m%d-%H-%M-%S)
ARCHIVE_NAME="${APP_NAME}_${DATE}.xcarchive"
ARCHIVE_PATH="${ROOT_PATH}/Archive/${ARCHIVE_NAME}"
IPANAME="${APP_NAME}_${DATE}_IPA"
IPA_PATH="${ROOT_PATH}/Export/${IPANAME}"
EXPORT_METHOD_PLIST_PATH=${CODE_PATH}/ExportOptions/ExportOptions.plist
#删除旧的打包文件夹
rm -rdf "${ROOT_PATH}/Archive"
rm -rdf "${ROOT_PATH}/Export"
# 再创建新的打包文件夹
mkdir "${ROOT_PATH}/Archive"
mkdir "${ROOT_PATH}/Export"
cd "${CODE_PATH}"
echo "代码路径 ${CODE_PATH}"
pod install
echo "begin archive"
xcodebuild archive -workspace ${APP_NAME}.xcworkspace -scheme ${APP_NAME} -configuration Debug -archivePath ${ARCHIVE_PATH}
echo "begin expertipa"
xcodebuild -exportArchive -archivePath ${ARCHIVE_PATH} -exportPath "${IPA_PATH}" -exportOptionsPlist ${EXPORT_METHOD_PLIST_PATH} -allowProvisioningUpdates
uploadpgy.sh
#!/bin/bash -l
source ./config.sh
cd ${ROOT_PATH}
#要上传的ipa文件路径
IPA_PATH=`find $(pwd) -name *.ipa`
#执行上传至蒲公英的命令,这句不需要修改
curl -F "file=@${IPA_PATH}" -F "uKey=${uKey}" -F "_api_key=${apiKey}" https://www.pgyer.com/apiv1/app/upload
gitpush.sh
#!/bin/bash -l
source ./config.sh
#输出新版本号
get_current_build_veresion=`xcodebuild -showBuildSettings -target ${APP_NAME} | grep CURRENT_PROJECT_VERSION | tr -d 'CURRENT_PROJECT_VERSION = '`
current_build_veresion=$get_current_build_veresion
echo "current_build_veresion = $current_build_veresion"
currentBranch=$(git branch --show-current)
git add .
git commit -m "buildVersion${get_current_build_veresion}"
git push -u origin ${currentBranch}
配置pipeline sript
pipeline script 命令
pipeline {
agent any
environment {
shdirect = "CIScript"
archivesh = "./archive.sh"
uploadPgy = "./uploadpgy.sh"
gitpush = "./gitpush.sh"
}
stages {
stage('checkout') {
steps {
git branch: "${params.branch}", url: "https://gitee.com/xxxxxxx.git"
}
}
stage('build') {
steps {
sh """
chmod -R +x ${shdirect}
cd ${shdirect}
${archivesh}
"""
}
}
stage('uploadPgy') {
steps {
sh """
cd ${shdirect}
${uploadPgy}
"""
}
}
stage('gitpush') {
steps {
sh """
cd ${shdirect}
${gitpush}
"""
}
}
}
}
构建
执行结果