iOS 集成Jenkins pipeline 完整流程

一 创建一个Jenkins pipeline 项目

请添加图片描述

配置分支参数

请添加图片描述

选择参数化构建构成,如上图所示,通过该参数配置分支,然后我们选择 ‘选项参数’ 选项,如下图
请添加图片描述
然后我们填入参数名称和选项
请添加图片描述
请添加图片描述

在工程中添加 ExportOptions.plist 文件

手动进行archive ,获取一个 ExportOptions.plist 文件,然后将该文件放到工程中,
后面进行自动化打包需要用到里面的配置,文件位置如图
请添加图片描述

创建放置打包文件的文件夹

我这里选择放到桌面上, 在桌面上创建一个Jenkins, 并在里面创建一个Archive 和 Export 文件夹
如图
请添加图片描述

在工程里面添加shell脚本文件

为了方便管理,我们将各个步骤的脚本放到同一个文件夹里面,如图
请添加图片描述

请添加图片描述

下面贴出各个shell 脚本文件里面的命令

config.sh

扫描二维码关注公众号,回复: 15680816 查看本文章
#!/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}
                 """
            }
        }
    }
}

构建

请添加图片描述

执行结果
请添加图片描述

猜你喜欢

转载自blog.csdn.net/LIUXIAOXIAOBO/article/details/131338336
今日推荐