node {
try{
stage('检出代码'){
git branch: "${BRANCH}",credentialsId: 'taolin', url: "${REPO_URL}"
sh 'ls'
sh 'pwd'
echo "Gradle $GRADLE_HOME"
echo "Java $JAVA_HOME"
}
stage("替换图标") {
sh 'wget -o logo.png ${APPLOGO}'
}
stage('修改配置文件'){
//获取content所在行 CONTENT_URL
def num = getShEchoResult ("sed -n '/content/=' config.xml")
sh "sed -i '${num}d' config.xml"
sh "sed -i '${num}i' config.xml"
//APP_NAME
sh "sed -i 's/.*<\\/name>/${APP_NAME}<\\/name>/g' config.xml"
//APP_ID APP_VERSION
def verNum = getShEchoResult ("sed -n '/' config.xml"
sh "cat config.xml"
}
stage('编译'){
try{
sh 'npm install'
sh 'npm run initial'
sh 'npm run logo'
sh "npx cordova build android"
}catch(e){
}
}
stage('存档'){
echo "参数 ${EMAIL}"
def apk = getShEchoResult ("find ./platforms/android/app/build/outputs/apk/debug -name '*.apk'")
echo "APK ${apk}"
def artifactsDir="artifacts"//存放产物的文件夹
sh "mkdir ${artifactsDir}"
sh "mv ${apk} ${artifactsDir}"
sh 'ls artifacts'
archiveArtifacts "${artifactsDir}/*"
}
stage('通知负责人'){
emailext(body: "构建项目:${BUILD_URL}\r\n构建完成",mimeType: "text/html",subject: '构建结果通知【成功】',to: "${EMAIL}",attachmentsPattern: "artifacts/app-debug.apk")
}
} catch (e) {
emailext( body: "构建项目:${BUILD_URL}\r\n构建失败,\r\n错误消息:${e.toString()}", subject: '构建结果通知【失败】', to: "${EMAIL}")
} finally{
// 清空工作空间
cleanWs notFailBuild: true
}
}
// 获取 shell 命令输出内容
def getShEchoResult(cmd) {
def getShEchoResultCmd = "ECHO_RESULT=`${cmd}`\necho \${ECHO_RESULT}"
return sh (
script: getShEchoResultCmd,
returnStdout: true
).trim()
}