美文网首页
持续集成

持续集成

作者: 纳兰沫 | 来源:发表于2020-05-12 17:17 被阅读0次

手动打包存在的问题

  • 操作繁琐
  • 时间慢
  • 不够逼格

自动化打包

  • shell脚本打包
    shell脚本打包之前最好先bulid发布第一个版本
    需要2个文件(.sh文件和.plist文件)
    在终端执行命令 ./shell.sh 启动shell脚本
#工程名
project_name=

#打包模式 Debug/Release
development_mode=Release

#scheme名
scheme_name=

#plist文件所在路径
exportOptionsPlistPath=./DevelopmentExportOptionsPlist.plist

#导出.ipa文件所在路径
exportFilePath=~/Desktop/$project_name-ipa

echo '*** 正在 清理工程 ***'
#xcodebuild \
#clean -configuration ${development_mode} -quiet  || exit 
echo '*** 清理完成 ***'


echo '*** 正在 编译工程 For '${development_mode}
xcodebuild \
archive -project ${project_name}.xcodeproj \
-scheme ${scheme_name} \
-configuration ${development_mode} \
-archivePath build/${project_name}.xcarchive -quiet  || exit
echo '*** 编译完成 ***'


echo '*** 正在 打包 ***'
xcodebuild -exportArchive -archivePath build/${project_name}.xcarchive \
-configuration ${development_mode} \
-exportPath ${exportFilePath} \
-exportOptionsPlist ${exportOptionsPlistPath} \
-quiet || exit

# 删除build包
if [[ -d build ]]; then
    rm -rf build -r
fi

if [ -e $exportFilePath/$scheme_name.ipa ]; then
    echo "*** .ipa文件已导出 ***"
    cd ${exportFilePath}
    echo "*** 开始上传.ipa文件 ***"
    #此处上传分发应用
    echo "*** .ipa文件上传成功 ***"
else
    echo "*** 创建.ipa文件失败 ***"
fi
echo '*** 打包完成 ***'
plist.png
shell配置
xcodebuild archive -project
xcodebuild archivePath:    配置ipa导出路径
xcodebuild archive   -workspace
xcodebuild  -exportArchive

sh文件发布上线

#scheme名 将XXX替换成自己的sheme名
scheme_name=

#打包模式 Debug/Release
development_mode=Release

#build文件夹路径
build_path=${project_path}/build

#plist文件所在路径
exportOptionsPlistPath=${project_path}/exportAppstore.plist

#导出.ipa文件所在路径
exportIpaPath=${project_path}/IPADir/${development_mode}

echo "请输入你想法发布的方式 ? [ 1:app-store 2:ad-hoc] "

##
read number
    while([[ $number != 1 ]] && [[ $number != 2 ]])
    do
        echo "笨蛋,只能输入 1 or 2"
        echo "请输入你想法发布的方式 ? [ 1:app-store 2:ad-hoc] "
        read number
    done

if [ $number == 1 ];
    then
    development_mode=Release
    exportOptionsPlistPath=${project_path}/exportAppstore.plist
## 证书名字

    else
    development_mode=Release
    exportOptionsPlistPath=${project_path}/exportTest.plist

fi


echo '///-----------'
echo '/// 正在清理工程'
echo '///-----------'
xcodebuild \
clean -configuration ${development_mode} -quiet  || exit


echo '///--------'
echo '/// 清理完成'
echo '///--------'
echo ''

echo '///-----------'
echo '/// 正在编译工程:'${development_mode}
echo '///-----------'
xcodebuild \
archive -workspace ${project_path}/${project_name}.xcworkspace \
-scheme ${scheme_name} \
-configuration ${development_mode} \
-archivePath ${build_path}/${project_name}.xcarchive -quiet  || exit

echo '///--------'
echo '/// 编译完成'
echo '///--------'
echo ''

echo '///----------'
echo '/// 开始ipa打包'
echo '///----------'
xcodebuild -exportArchive -archivePath ${build_path}/${project_name}.xcarchive \
-configuration ${development_mode} \
-exportPath ${exportIpaPath} \
-exportOptionsPlist ${exportOptionsPlistPath} \
-quiet || exit

# 删除build包
if [[ -d build ]]; then
rm -rf build -r
fi


if [ -e $exportIpaPath/$scheme_name.ipa ];
    then
    echo '///----------'
    echo '/// ipa包已导出'
    echo '///----------'
    open $exportIpaPath
    else
    echo '///-------------'
    echo '/// ipa包导出失败 '
    echo '///-------------'
fi
echo '///------------'
echo '/// 打包ipa完成  '
echo '///-----------='
echo ''

echo '///-------------'
echo '/// 开始发布ipa包 '
echo '///-------------'

if [ $number == 1 ];
    then

    #验证并上传到App Store
    # 将-u 后面的XXX替换成自己的AppleID的账号,-p后面的XXX替换成自己的密码
    altoolPath="/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool"

    #
    #
    #
    "$altoolPath" --validate-app -f ${exportIpaPath}/${scheme_name}.ipa -u  [-p ]
    "$altoolPath" --upload-app -f ${exportIpaPath}/${scheme_name}.ipa -u  -p 
else

    echo "请输入你要发布的平台 ? [ 1:fir 2:蒲公英] "
    ##
    read platform
        while([[ $platform != 1 ]] && [[ $platform != 2 ]])
        do
            echo "笨蛋,只能输入 1 or 2"
            echo "请输入你要发布的平台 ? [ 1:fir 2:蒲公英] "
            read platform
        done

            if [ $platform == 1 ];
                then
                #上传到Fir
                # 将XXX替换成自己的Fir平台的token
                fir login -T 
                fir publish $exportIpaPath/$scheme_name.ipa
            else
                echo "开始上传到蒲公英"
                #上传到蒲公英
                #蒲公英aipKey
                MY_PGY_API_K=
                #蒲公英uKey
                MY_PGY_UK=

                curl -F "file=@${exportIpaPath}/${scheme_name}.ipa" -F "uKey=${MY_PGY_UK}" -F "_api_key=${MY_PGY_API_K}" https://qiniu-storage.pgyer.com/apiv1/app/upload
            fi
fi
echo "\n\n"
echo "已运行完毕>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
exit 0
发布上线
altoolPath
"altoolPath" --validate-app -f ${exportIpaPath}/${scheme_name}.ipa -u  [-p ]
"$altoolPath" --upload-app -f ${exportIpaPath}/${scheme_name}.ipa -u  -p 
发布外网

firm

fir login -T  Fir平台的token
fir publish $exportIpaPath/$scheme_name.ipa

蒲公英

#上传到蒲公英
#蒲公英aipKey
MY_PGY_API_K=
#蒲公英uKey
MY_PGY_UK=
curl -F "file=@${exportIpaPath}/${scheme_name}.ipa" -F "uKey=${MY_PGY_UK}" -F "_api_key=${MY_PGY_API_K}" https://qiniu-storage.pgyer.com/apiv1/app/upload
  • fastlane

安装fastlane

1.xcode-select --install
2.sudo gem install fastlane -NV
3.brew install fastlane

fastlane使用

1.cd 到项目目录
2.fastlane init 初始化(如果已经有fastlane 直接执行fastlane)
fastlane search_plugins 搜索已经安装的插件
fastlane add_plugin pgyer 安装蒲公英插件
fastlane add_plugin firim 安装firim插件
fastlane add_plugin fastlane-plugin-versino 安装版本管理插件
  • Jenkins
1.下载jenkins.war
2.执行命令java -jar jenkins.war --httpPort=8080  
3.网页输入localhost:8080
4.下载插件
5.创建新任务

Jenkins+shell打包

image.png
build.png
拉取代码.png
执行结果.png
设置脚本.png
系统管理
image.png
下载keychain插件.png
image.png
如何查找keychain.png
找到证书名称.png
填写证书名称.png
上传3个描述文件.png
配置项目的证书文件.png
image.png
build的时候会出现bug.png
解决办法
在系统管理-> Keychains and Provisioning Profiles Management里面
修改一下地址
解决办法.png
下载xcode插件.png
image.png
image.png
image.png
image.png
image.png

相关文章

网友评论

      本文标题:持续集成

      本文链接:https://www.haomeiwen.com/subject/rthknhtx.html