最近闲来无事,搭建一个Jenkins脚本自动打包Flutter端IOS版本安装包ipa,遇到了几点小问题,以Jenkins版本2.263为例部署服务,记录一下.
1 安装jenkins
在命令行Terminal中输入 brew install jenkins,即安装jenkins服务.
上个厕所回来,在Terminal中输入jenkins start,如果看见hudson.WebAppMain$3#run: Jenkins is fully up and running,说明Jenkins启动成功,在浏览器中打开http://localhost:8080/就可以看见Jenkins主页面,截图如下:
2 安装插件
Jenkins主页面-系统管理-插件管理-可选插件,搜索插件进行安装,description setter plugin,GitHub Branch Source Plugin,GitLab Plugin,Keychains and Provisioning Profiles Management,SSH Build Agents plugin,Timestamper,Upload to pgyer,Workspace Cleanup Plugin,Xcode integration,插件安装成功后记得启动一下Jenkins服务.
3 配置环境变量
打开Terminal,输入:vim .bash_profile后回车键(如果没有bash_profile文件,输入:touch .bash_profile),截图如下:
打开bash_profile文件后,输入字母i回车Terminal最下面变成insert就可以进行编辑,我的配置文件(擦掉部分是我的电脑名,也是目录文件)截图如下:
配置文件结束后,键盘按ESC退出编辑,再按:(分号)在Terminal中输入wq!后记得回车,退出vim命令完成配置(不熟悉vim命令请自行先学习一下),截图如下:
4 配置IOS开发证书和生产证书
苹果开发者证书名称查找:Mac启动台-钥匙串访问-登陆,截图中上面红色圈圈即是苹果开发者证书名称,下面红色圈圈分别是开发证书,生产证书,推送证书,截图如下:
前往文件夹路径/Users/你的电脑名/Library/Keychains,由于Mac系统的问题,有的系统显示有login.keychain,有的系统显示有login.keychain-db.我的电脑显示是login.keychain-db,复制一份login.keychain-db,重新命名为login.keychain,等会备用.
Jenkins主页面-系统管理-未分类,找到Keychains and Provisioning Profiles Management,有个选择文件按钮,把刚才的login.keychain上传上去,记得点击一下Upload后重启一下Jenkins,截图如下:
文件login.keychain完成后,继续回到Keychains and Provisioning Profiles Management页面,开始配置IOS证书.找到KeyChains模块,可以看见Filename显示为"login.keychain",Password是电脑开机密码.点击Add Code Signing Identity,在Code Signing Identity中输入苹果开发者证书名称,依次配置开发证书,生产证书,推送证书,具体截图如下:
苹果开发者证书配置完成,接着配置证书描述文件,继续回到Keychains and Provisioning Profiles Management页面,最下面找到Provisioning Profiles模块,Provisioning Profiles Directory Path路径输入为"/Users/你的电脑名如XXX/Library/MobileDevice/Provisioning Profiles",点击点击Save保存一下,截图如下:
5 构建项目
Jenkins主页面-新建任务,任务名称自己输入(我起的名字叫Demo_IOS),选择"构建一个自由风格的软件项目",点击"确定".
"参数化构建过程"打钩展开,点击"添加参数"选择"文本参数"进行配置,"BUILD_TYPE"表示测试debug或者release版本,"GIT_BRANCH"表示项目源代码git分支地址,截图如下:
源码管理配置:我的项目源代码是git管理的,Branches to build的作用是Jenkins打包拉取指定git分支,配置截图如下:
构建环境配置:"Keychain"的名称即是之前上传的/Users/你的电脑名/Library/Keychains/login.keychain,"Code Signing Identity"即是IOS开发者证明名,截图如下:
构建执行shell脚本,IOS打包采用fastlane工具,请先安装brew install fastlane,具体脚本如下:
security set-key-partition-list -S apple-tool:,apple: -s -k "你的电脑登陆密码" ~/Library/Keychains/login.keychain
project_path=$(pwd)
flutter clean
flutter build ios --target lib/environment/main_${BUILD_TYPE}.dart --release
cd $project_path/ios
#取当前时间字符串添加到文件结尾
now=$(date +"%Y_%m_%d_%H:%M")
#指定项目的scheme名称
scheme="Runner"
#指定要打包的配置名
configuration="Release"
#指定打包所使用的输出方式,目前支持app-store, package, ad-hoc, enterprise, development, 和developer-id,即xcodebuild的method参数
if [ $BUILD_TYPE == "release" ]
then
export_method="ad-hoc"
else
export_method="development"
fi
#指定项目地址
workspace_path="${project_path}/ios/Runner.xcodeproj"
#指定输出路径
rm -rf "${project_path}/build/ios/ipa"
mkdir -p "${project_path}/build/ios/ipa"
output_path="${project_path}/build/ios/ipa"
#指定输出归档文件地址
archive_path="$output_path/store_${export_method}.xcarchive"
#指定输出ipa地址
ipa_path="$output_path/store_${BUILD_TYPE}_${GIT_BRANCH}.ipa"
#指定输出ipa名称
ipa_name="store_${BUILD_TYPE}.ipa"
commit_msg="$1"
#输出设定的变量值
echo "===workspace path: ${workspace_path}==="
echo "===workspace: ${WORKSPACE}==="
echo "===archive path: ${archive_path}==="
echo "===ipa path: ${ipa_path}==="
echo "===ipa_name: ${ipa_name}==="
echo "===export method: ${export_method}==="
echo "===commit msg: $1==="
#先清空前一次build
fastlane gym --scheme ${scheme} --clean --configuration ${configuration} --archive_path ${archive_path} --export_method ${export_method} --output_directory ${output_path} --output_name ${ipa_name}
构建: 构建-增加构建步骤-Upload to pgyer with apiV1,提前在蒲公英平台注册一个账号,截图如下:
最后,点击Build with Parameters,开始构建项目,成功后扫码安装即可.截图如下:
期间遇到几个问题,苹果开发证书首先应该在Mac电脑中配置好,app-store方式打包的ipa包体积比较大,并且不能安装到Iphone上面,只能上传到AppStore中,谨记这两点.










网友评论