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() }