# 1、配置安卓需要编译的环境节点
参考:CentOS7安装Android SDK | 章工运维 (opens new window)
# 2、发布脚本
代码语言:javascript复制#!/bin/bash
time=`date " %Y%m%d%H%M%S"`
commit_num=`git rev-parse --short HEAD`
project_code=gg
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/gg/$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.xxx: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.xxx: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.xxx: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.xxx: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.xxx: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
mapping_path=/build
dev_build_path=/var/jenkins_home/workspace/$JOB_NAME/build/app/outputs/flutter-apk
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
mapping_path=/build
test_build_path=/var/jenkins_home/workspace/$JOB_NAME/build/app/outputs/flutter-apk
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
mapping_path=/build
release_build_path=/var/jenkins_home/workspace/$JOB_NAME/build/app/outputs/flutter-apk
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
}
run_build1 $1
jenkinsfile脚本
代码语言:javascript复制pipeline {
agent { label "jenkins-slave5" }
parameters {
string(name: 'version_number', defaultValue: '', description: '')
string(name: 'product_code', defaultValue: 'gg', description: '')
choice choices: ['dev', 'test', 'release', 'ALL'], description: '请选择要打包的环境', name: 'choice_value'
gitParameter (branch:'', branchFilter: 'origin/(.*)', defaultValue: 'master', description: '选择将要构建的分支', name: 'TAG', quickFilterEnabled: true, selectedValue: 'TOP', sortMode: 'DESCENDING_SMART', tagFilter: '*', type: 'PT_BRANCH_TAG', useRepository: 'ssh://git@172.16.30.xxx:xxx/gg/scrm_app.git')
}
stages {
stage('CleanWorkspace') {
steps {
cleanWs()
}
}
stage('拉取代码') {
steps {
dir("${WORKSPACE}/"){
script {
try {
checkout([$class: 'GitSCM', branches: [[name: '$TAG']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CloneOption', depth: 1, noTags: false, reference: '', shallow: true]], submoduleCfg: [], userRemoteConfigs: [[url: "ssh://git@172.16.30.xxx:xxx/gg/scrm_app.git"]]])
}catch(exc) {
env.REASON = "拉取代码出错"
throw(exc)
}
}
}
}
}
stage('打包dev环境') {
when {
expression { params.choice_value == 'dev'}
}
steps {
sh label: '', script: '/var/jenkins_home/script/gg/android_build01.sh android_dev'
}
}
stage('打包test环境') {
when {
expression { params.choice_value == 'test'}
}
steps {
sh label: '', script: '/var/jenkins_home/script/gg/android_build01.sh android_test'
}
}
stage('打包release环境') {
when {
expression { params.choice_value == 'release'}
}
steps {
sh label: '', script: '/var/jenkins_home/script/gg/android_build01.sh android_release'
}
}
stage('打包ALL环境') {
when {
expression { params.choice_value == 'ALL'}
}
parallel {
stage('打包dev环境') {
steps {
sh label: '', script: '/var/jenkins_home/script/gg/android_build01.sh android_dev'
}
}
stage('打包test环境') {
// when {
// expression { params.choice_value == 'ALL'}
// }
steps {
sh label: '', script: '/var/jenkins_home/script/gg/android_build01.sh android_test'
}
}
stage('打包release环境') {
// when {
// expression { params.choice_value == 'ALL'}
// }
steps {
sh label: '', script: '/var/jenkins_home/script/gg/android_build01.sh android_release'
}
}
}
// steps {
// sh label: '', script: '/var/jenkins_home/script/gg/android_build01.sh android_dev'
// sh label: '', script: '/var/jenkins_home/script/gg/android_build01.sh android_test'
// sh label: '', script: '/var/jenkins_home/scrip