2023-05-19 17:42:32
浏览数 (1)
# android编译
代码语言:javascript
复制#!/bin/bash
time=`date " %Y%m%d%H%M%S"`
commit_num=`git rev-parse --short HEAD`
project_code=saas
product_code=$project_code
versionlib_path=/data/Vsersion_Lib/$project_code
docker_images=
mapping_path=
dev_build_path=
run_build(){
sudo docker run -v /data/jenkins/jenkins_home/workspace/saas/$JOB_BASE_NAME:$mapping_path -v /data/gradle_cache/.gradle:/home/cirrus/.gradle --env GRADLE_USER_HOME=/home/cirrus/.gradle --workdir /build --rm $docker_images sh -c "$build_command"
if [ "$1" == "app_dev" ];then
echo "开始dev打包"
cd $dev_build_path
sudo mkdir -p $versionlib_path
sudo cp -rf app-release.apk $versionlib_path/"$JOB_BASE_NAME"_dev_"$time"_"$commit_num".apk
dev_new_package_name="$JOB_BASE_NAME"_dev_"$time"_"$commit_num".apk
echo $dev_new_package_name
# echo "开始stest打包"
# cd $stest_build_path
# sudo cp -rf app-stest-release.apk $versionlib_path/"$JOB_BASE_NAME"_test_"$time"_"$commit_num".apk
# test_new_package_name="$JOB_BASE_NAME"_test_"$time"_"$commit_num".apk
# echo $test_new_package_name
# echo "开始pro打包"
# cd $pro_build_path
# sudo cp -rf app-pro-release.apk $versionlib_path/"$JOB_BASE_NAME"_pro_"$time"_"$commit_num".apk
# pro_new_package_name="$JOB_BASE_NAME"_pro_"$time"_"$commit_num".apk
# echo $pro_new_package_name
curl -H "Content-Type:application/json" -XPOST http://172.16.30.217:9110/version/modify -d '{"product_code":"'"$project_code"'","version_number":"'"$version_number"'","new_package_name":"'"$dev_new_package_name"'"}'
# curl -H "Content-Type:application/json" -XPOST http://172.16.30.217:9110/version/modify -d '{"product_code":"'"$project_code"'","version_number":"'"$version_number"'","new_package_name":"'"$test_new_package_name"'"}'
# curl -H "Content-Type:application/json" -XPOST http://172.16.30.217:9110/version/modify -d '{"product_code":"'"$project_code"'","version_number":"'"$version_number"'","new_package_name":"'"$pro_new_package_name"'"}'
elif [ "$1" == "app_test" ];then
echo "开始test打包"
cd $test_build_path
sudo mkdir -p $versionlib_path
sudo cp -rf app-release.apk $versionlib_path/"$JOB_BASE_NAME"_test_"$time"_"$commit_num".apk
test_new_package_name="$JOB_BASE_NAME"_test_"$time"_"$commit_num".apk
echo $test_new_package_name
curl -H "Content-Type:application/json" -XPOST http://172.16.30.217:9110/version/modify -d '{"product_code":"'"$project_code"'","version_number":"'"$version_number"'","new_package_name":"'"$test_new_package_name"'"}'
elif [ "$1" == "app_release" ];then
echo "开始release打包"
cd $release_build_path
sudo mkdir -p $versionlib_path
sudo cp -rf app-release.apk $versionlib_path/"$JOB_BASE_NAME"_pro_"$time"_"$commit_num".apk
pro_new_package_name="$JOB_BASE_NAME"_pro_"$time"_"$commit_num".apk
echo $pro_new_package_name
curl -H "Content-Type:application/json" -XPOST http://172.16.30.217:9110/version/modify -d '{"product_code":"'"$project_code"'","version_number":"'"$version_number"'","new_package_name":"'"$pro_new_package_name"'"}'
else
exit 1
fi
}
run_build1(){
if [ "$1" == "android_dev" ];then
docker_images=xxx/library/flutter:latest
mapping_path=/build
dev_build_path=/var/jenkins_home/workspace/$JOB_NAME/build/app/outputs/flutter-apk
build_command="flutter clean && flutter packages get && flutter build apk --no-sound-null-safety --dart-define=APP_ENV=dev"
run_build app_dev
elif [ "$1" == "android_test" ];then
docker_images=xxx/library/flutter:latest
mapping_path=/build
test_build_path=/var/jenkins_home/workspace/$JOB_NAME/build/app/outputs/flutter-apk
build_command="flutter clean && flutter packages get && flutter build apk --no-sound-null-safety --dart-define=APP_ENV=test"
run_build app_test
elif [ "$1" == "android_release" ];then
docker_images=xxx/library/flutter:latest
mapping_path=/build
release_build_path=/var/jenkins_home/workspace/$JOB_NAME/build/app/outputs/flutter-apk
build_command="flutter clean && flutter packages get && flutter build apk --no-sound-null-safety --dart-define=APP_ENV=release"
run_build app_release
else
exit 2
fi
}
function checkBuild(){
product=$1
version=$2
if [[ -z $product ]] || [[ -z $version ]];then
# 参数为空.
return 1
fi
info_path=http://172.16.30.217:9110/version/status
value=`curl -XGET "$info_path?product_code=$product_code&version_number=$version_number" |awk -F'lock_status":' '{print $2}'|awk -F, '{print $1}'`
if [[ $value -eq 0 ]];then
# 可以正常构建.
return 0
else
# 版本已锁定.
return 3
fi
}
res1=$(checkBuild $product_code $version_number)
res2=`echo $?`
if [[ $res2 -eq 1 ]];then
echo "版本号没有输入"
exit $res2
elif [[ $res2 -eq 3 ]];then
echo "对应的版本已锁定"
exit $res2
else
run_build1 $1
fi
# ios编译
代码语言:javascript
复制#flutter build ipa --build-name=0.0.6 --build-number=15 --release --dart-define=APP_ENV=dev --no-sound-null-safety
#flutter build ipa --release --dart-define=APP_ENV=test --no-sound-null-safety
#open ./build/ios/archive/Runner.xcarchive
#flutter build apk --no-sound-null-safety --dart-define=APP_ENV=test
#flutter build ipa --release --dart-define=APP_ENV=dev --no-sound-null-safety
#xcodebuild -exportArchive -exportOptionsPlist ExportOptionsDevelopment.plist -archivePath $PWD/build/ios/archive/Runner.xcarchive -exportPath $PWD/build/ios/ipa/ -allowProvisioningUpdates
#cd ./ios && xcodebuild -workspace Runner.xcworkspace -scheme Runner -sdk iphoneos -configuration Release archive -archivePath $PWD/build/Runner.xcarchive && cd ..
#cd ./ios && fastlane ios build_dev && cd ..
#flutter build ipa --release --dart-define=APP_ENV=test --no-sound-null-safety
#cd ./ios && fastlane ios build_test && cd ..
#flutter build ios --release --dart-define=APP_ENV=dev --no-sound-null-safety
#cd ./ios && fastlane ios build_dev && cd ..
#
#flutter build ios --release --dart-define=APP_ENV=test --no-sound-null-safety
#cd ./ios && fastlane ios build_test && cd ..
#
time=`date " %Y%m%d%H%M%S"`
commit_num=`git rev-parse --short HEAD`
product_code=saas
choice_env=$1
version_number=$2
export LANG=en_US.UTF-8
#JOB_NAME=scrm.ios
run_build(){
if [ "$1" == "app_dev" ];then
fir publish ./build/ios/outputs/saas_dev.ipa -c "jenkins自动打包上传" > /opt/jenkins/logs/saas/saas_dev.log
time=`date " %Y%m%d%H%M%S"`
aa=`cat /opt/jenkins/logs/saas/saas_dev.log | grep Published | awk '{print $9}' | awk -F'/' '{print $4}'`
bb=`cat /opt/jenkins/logs/saas/saas_dev.log | grep Release | awk '{print $10}'`
new_package_name="$JOB_BASE_NAME"_dev_"$time"-"$commit_num"-"$aa"?release_id="$bb"
echo $new_package_name
echo $version_number
curl -H "Content-Type:application/json" -XPOST http://172.16.30.217:9110/version/modify -d '{"product_code":"'"$product_code"'","'"version_number"'":"'"$version_number"'","new_package_name":"'"$new_package_name"'"}'
elif [ "$1" == "app_test" ];then
fir publish ./build/ios/outputs/saas_test.ipa -c "jenkins自动打包上传" > /opt/jenkins/logs/saas/saas_test.log
time=`date " %Y%m%d%H%M%S"`
aa=`cat /opt/jenkins/logs/saas/saas_test.log | grep Published | awk '{print $9}' | awk -F'/' '{print $4}'`
bb=`cat /opt/jenkins/logs/saas/saas_test.log | grep Release | awk '{print $10}'`
new_package_name="$JOB_BASE_NAME"_test_"$time"-"$commit_num"-"$aa"?release_id="$bb"
echo $new_package_name
curl -H "Content-Type:application/json" -XPOST http://172.16.30.217:9110/version/modify -d '{"product_code":"'"$product_code"'","'"version_number"'":"'"$version_number"'","new_package_name":"'"$new_package_name"'"}'
elif [ "$1" == "app_release" ];then
fir publish ./build/ios/outputs/saas_release.ipa -c "jenkins自动打包上传" > /opt/jenkins/logs/saas/saas_pro.log
time=`date " %Y%m%d%H%M%S"`
aa=`cat /opt/jenkins/logs/saas/saas_pro.log | grep Published | awk '{print $9}' | awk -F'/' '{print $4}'`
bb=`cat /opt/jenkins/logs/saas/saas_pro.log | grep Release | awk '{print $10}'`
new_package_name="$JOB_BASE_NAME"_pro_"$time"-"$commit_num"-"$aa"?release_id="$bb"
echo $new_package_name
curl -H "Content-Type:application/json" -XPOST http://172.16.30.217:9110/version/modify -d '{"product_code":"'"$product_code"'","'"version_number"'":"'"$version_number"'","new_package_name":"'"$new_package_name"'"}'
else
exit 1
fi
}
clean_build(){
flutter doctor
flutter clean
rm -Rf ios/Pods
rm -Rf ios/.symlinks
rm -Rf ios/Flutter/Flutter.framework
rm -Rf ios/Flutter/Flutter.podspec
rm ios/Podfile
}
run_build1(){
if [ $choice_env == "ios_dev" ];then
clean_build
flutter build ipa --export-options-plist ./ios/ExportOptionsDevelopment.plist --release --dart-define=APP_ENV=dev --no-sound-null-safety
mkdir -p ./build/ios/outputs
cp -r ./build/ios/ipa/scrm_app.ipa ./build/ios/outputs/saas_dev.ipa
run_build app_dev
elif [ $choice_env == "ios_test" ];then
clean_build
flutter build ipa --export-options-plist ./ios/ExportOptionsDevelopment.plist --release --dart-define=APP_ENV=test --no-sound-null-safety
mkdir -p ./build/ios/outputs
cp -r ./build/ios/ipa/scrm_app.ipa ./build/ios/outputs/saas_test.ipa
run_build app_test
elif [ $choice_env == "ios_release" ];then
clean_build
flutter build ipa --export-options-plist ./ios/ExportOptionsDevelopment.plist --release --dart-define=APP_ENV=release --no-sound-null-safety
mkdir -p ./build/ios/outputs
cp -r ./build/ios/ipa/scrm_app.ipa ./build/ios/outputs/saas_release.ipa
run_build app_release
elif [ $choice_env == "ios_appstore" ];then
cd ./ios && fastlane ios sign_xcarchive_and_publish
else
exit 2
fi
}
function checkBuild(){
product=$1
version=$2
if [[ -z $product ]] || [[ -z $version ]];then
# 参数为空.
return 1
fi
info_path=http://172.16.30.217:9110/version/status
value=`curl -XGET "$info_path?product_code=$product_code&version_number=$version_number" |awk -F'lock_status":' '{print $2}'|awk -F, '{print $1}'`
if [[ $value -eq 0 ]];then
# 可以正常构建.
return 0
else
# 版本已锁定.
return 3
fi
}
res1=$(checkBuild $product_code $version_number)
res2=`echo $?`
if [[ $res2 -eq 1 ]];then
echo "版本号没有输入"
exit $res2
elif [[ $res2 -eq 3 ]];then
echo "对应的版本已锁定"
exit $res2
else
run_build1
fi