Jenkins+Shell+gym+蒲公英实现自动化集成

目标:自动更新代码+打包+上传蒲公英+发二维码到测试人员的邮箱

1、Jenkins的介绍、安装不多说,直接上配置截图和说明

系统配置:

Jenkins+Shell+gym+蒲公英实现自动化集成_第1张图片
1

项目配置:

Jenkins+Shell+gym+蒲公英实现自动化集成_第2张图片
2

Jenkins+Shell+gym+蒲公英实现自动化集成_第3张图片
3
Jenkins+Shell+gym+蒲公英实现自动化集成_第4张图片
4
Jenkins+Shell+gym+蒲公英实现自动化集成_第5张图片
5

2、Shell 脚本和说明,直接上源码

build_using_gym.sh

!/bin/bash

计时

SECONDS=0

假设脚本放置在与项目相同的路径下

project_path=$(pwd)

取当前时间字符串添加到文件结尾

now=$(date +"%Y_%m_%d_%H_%M_%S")

指定项目的scheme名称

scheme="SnapEcgDoctor"

指定要打包的配置名,位于XCode 设置下面,默认有‘Debug’和‘Release’两个,也可以自己创建多个来区分不同环境的版本

configuration="Release"

指定打包所使用的输出方式,目前支持{app-store, ad-hoc, enterprise, development}即xcodebuild的method参数

export_method='development'

代码根目录

baseDir=$(cd "$(dirname "$0")"; pwd)
echo "Base dir is: ${baseDir}"

svn 操作

svn cleanup ${baseDir}

svn update ${baseDir} #svn更新项目文件

cocoapod

cd ${baseDir}

pod install --verbose --no-repo-update

指定项目地址

workspace_path="${baseDir}/SnapEcgDoctor.xcworkspace"

指定输出路径

output_path="${baseDir}/${configuration}/${now}"

指定输出归档文件地址

archive_path="$output_path/${configuration}_${now}.xcarchive"

指定输出ipa地址

ipa_path="$output_path/${configuration}_${now}.ipa"

指定输出ipa名称

ipa_name="${configuration}_${now}.ipa"

获取执行命令时的commit message

commit_msg="$1"

输出设定的变量值

echo "===workspace path: ${workspace_path}==="
echo "===archive path: ${archive_path}==="
echo "===ipa path: ${ipa_path}==="
echo "===export method: ${export_method}==="
echo "===commit msg: $1==="

先清空前一次build

gym --workspace ${workspace_path} --scheme ${scheme} --clean -->configuration ${configuration} --archive_path ${archive_path} --export_method >${export_method} --output_directory ${output_path} --output_name ${ipa_name}

上传到fir

fir publish ${ipa_path} -T fir_token -c "${commit_msg}"

自动化上传蒲公英

蒲公英上的User Key

uKey="e91380a7110fc3852558bda4374f4f6b"

蒲公英上的API Key

apiKey="##################", 项目的apikey值

执行上传至蒲公英的命令

echo "++++++++++++++upload+++++++++++++"
curl -F "file=@${ipa_path}" -F "uKey=${uKey}" -F "_api_key=${apiKey}" >http://www.pgyer.com/apiv1/app/upload

输出总用时

echo "===打包+上传蒲同英成功. 总耗费时间: ${SECONDS}s==="

3、补充说明

我没有使用Jenkins里面的XCode插件,而是用gym直接打包,这是一个ruby环境。gym+ruby安装请百度。

4、打包结果展示

Jenkins+Shell+gym+蒲公英实现自动化集成_第6张图片

Jenkins+Shell+gym+蒲公英实现自动化集成_第7张图片

Jenkins+Shell+gym+蒲公英实现自动化集成_第8张图片

Jenkins+Shell+gym+蒲公英实现自动化集成_第9张图片

Jenkins+Shell+gym+蒲公英实现自动化集成_第10张图片

4、填坑说明

大部分的坑都会出现在代码里,如果发现本地代码和Jenkins下载的代码不同,而且不知道如何解决,那就拷贝一份本地代码进去!
比如我就遇见pod的Header文件夹在Jenkins下面变成了文本,只能替换掉~~~~~~~~~~~
如果遇见了cocoapods问题,就用pod setup解决吧!如果一次不行,那就两次。
其他问题,网上都有答案,我遇见的问题连外国人都没有见过,就不用搜了。

你可能感兴趣的:(Jenkins+Shell+gym+蒲公英实现自动化集成)