• 安卓多分支流水线自动打包


    整体思路,提交代码后触发jks  triggers,拉去代码,根据分支名称来区分正式,预发,测试三分支打包流程,打包完成放在nginx指定目录,同时根据各个包下载地址生成对应二维码。

    这边主要为了记录jenkinsfile,step阶段如何定义全局变量。

    最后效果

    直接放jenkinsfile

    pipeline {
      agent {
        label '192.168.1.5'
      }
      parameters {
         string(name:'BUILD_URL_FOR_BODY',defaultValue:"${BUILD_URL}",description:'build uri for body')
      }
      environment {
         ANDROID_DOWNLOAK_URL = 'http://android.xxxxxx.lan/apk/'
         ANDROID_QRCODE_URL = 'http://qrcode_test.xxxxxxx.com/qr_code/'
      }
      triggers{
        gitlab( triggerOnPush: true,
                triggerOnMergeRequest: true,
                branchFilterType: "NameBasedFilter",
                includeBranchesSpec: "ALL",
                secretToken: "028d848ab64f7895443"
            )
      }
      stages {
        stage('Deploy-master') {
          when {
            branch 'master'
          }
          steps {
            script {
                try{
                    sh '''
                     /home/android/gradle-6.3/bin/gradle  assembleRelease
                     if [ "`ls -A /home/android/apk/`" != "" ];
                     then
                        rm -rf /home/android/apk/master/*.apk
                     fi
                     TEMP_NAME=`ls ./DubbingShow/build/outputs/apk/official/release/ | grep apk|awk -F".apk" '{print $1}'`
                     mv ./DubbingShow/build/outputs/apk/official/release/$TEMP_NAME.apk /home/android/apk/master/
                     myqr ${ANDROID_DOWNLOAK_URL}master/$TEMP_NAME.apk -n  $TEMP_NAME.png -v 7 -l L -d "/home/android/er/master/"    
                     echo -n $TEMP_NAME >tempfile
                    '''
                    TEMP_ENVIRONMENT= readFile 'tempfile'
                }catch(err) {
                    echo "${err}"
                    }
                env['ANDROID_BUILD_NMAE']="$TEMP_ENVIRONMENT"
            }
          }
          post {
            success {
              sh 'sh notice.sh "Android打包成功通知" "Dubbing_show" "成功"  "Master" ${BUILD_URL_FOR_BODY} ${ANDROID_BUILD_NMAE} ${ANDROID_DOWNLOAK_URL}master/${ANDROID_BUILD_NMAE}.apk ${ANDROID_QRCODE_URL}master/${ANDROID_BUILD_NMAE}.png'
            }
            failure{
              sh 'sh notice.sh "Android打包失败通知" "Dubbing_show" "失败"  "Master" ${BUILD_URL_FOR_BODY}'
            }  
          }
        }
        stage('Deploy-release') {
          when {
            branch 'release'
          }
          steps {
            script {
                try{
                    sh '''
                     /home/android/gradle-6.3/bin/gradle  assembleRelease
                     if [ "`ls -A /home/android/apk/`" != "" ];
                     then
                        rm -rf /home/android/apk/release/*.apk
                     fi
                     TEMP_NAME=`ls ./DubbingShow/build/outputs/apk/official/release/ | grep apk|awk -F".apk" '{print $1}'`
                     mv ./DubbingShow/build/outputs/apk/official/release/$TEMP_NAME.apk /home/android/apk/release/
                     myqr ${ANDROID_DOWNLOAK_URL}release/$TEMP_NAME.apk -n  $TEMP_NAME.png -v 7 -l L -d "/home/android/er/release/"    
                     echo -n $TEMP_NAME >tempfile
                    '''
                    TEMP_ENVIRONMENT= readFile 'tempfile'
                }catch(err) {
                    echo "${err}"
                    }
                env['ANDROID_BUILD_NMAE']="$TEMP_ENVIRONMENT"
            }
          }
          post {
            success {
              sh 'sh notice.sh "Android打包成功通知" "Dubbing_show" "成功"  "Release" ${BUILD_URL_FOR_BODY} ${ANDROID_BUILD_NMAE} ${ANDROID_DOWNLOAK_URL}release/${ANDROID_BUILD_NMAE}.apk ${ANDROID_QRCODE_URL}release/${ANDROID_BUILD_NMAE}.png'
            }
            failure{
              sh 'sh notice.sh "Android打包失败通知" "Dubbing_show" "失败"  "Release" ${BUILD_URL_FOR_BODY}'
            }  
          }
        }
        stage('Deploy-dev') {
          when {
            branch 'dev'
          }
          steps {
            script {
                try{
                    sh '''
                     /home/android/gradle-6.3/bin/gradle  assembleRelease
                     if [ "`ls -A /home/android/apk/`" != "" ];
                     then
                        rm -rf /home/android/apk/dev/*.apk
                     fi
                     TEMP_NAME=`ls ./DubbingShow/build/outputs/apk/official/release/ | grep apk|awk -F".apk" '{print $1}'`
                     mv ./DubbingShow/build/outputs/apk/official/release/$TEMP_NAME.apk /home/android/apk/dev/
                     myqr ${ANDROID_DOWNLOAK_URL}dev/$TEMP_NAME.apk -n  $TEMP_NAME.png -v 7 -l L -d "/home/android/er/dev/"    
                     echo -n $TEMP_NAME >tempfile
                    '''
                    TEMP_ENVIRONMENT= readFile 'tempfile'
                }catch(err) {
                    echo "${err}"
                    }
                env['ANDROID_BUILD_NMAE']="$TEMP_ENVIRONMENT"
            }
          }
          post {
            success {
              sh 'sh notice.sh "Android打包成功通知" "Dubbing_show" "成功"  "Dev" ${BUILD_URL_FOR_BODY} ${ANDROID_BUILD_NMAE} ${ANDROID_DOWNLOAK_URL}dev/${ANDROID_BUILD_NMAE}.apk ${ANDROID_QRCODE_URL}dev/${ANDROID_BUILD_NMAE}.png'
            }
            failure{
              sh 'sh notice.sh "Android打包失败通知" "Dubbing_show" "失败"  "Dev" ${BUILD_URL_FOR_BODY}'
            }  
          }
        }
      }
    }

     通知脚本notice.sh

    gitAuthor=''
    gitAuthor=`git show --stat | awk '$0~/Author/{print $2}'`
    if [ $6 ];
    then
        response=`curl -X POST -H 'Content-Type:application/json; charset=utf-8' 
        -d '{"msgtype":"markdown",
        "markdown":{"title":"'$1'",
        "text": "## '$1'
    
    **项目名称**:'$2'
    
    **提交人**:'$gitAuthor'
    
    **状态**:'$3'
    
    **分支**:'$4'\n\n有关更多构建的过程、错误信息、请参照 [构建日志]('$5')
    
    点击链接进行下载['$6']('$7')\n\n或扫描二维码进行下载
    
    ![Pandao editor.md]('$8')"
        }}' https://oapi.dingtalk.com/robot/send?access_token=aba71a2b612d58aad0e0xxxxxxxxxxxxxxxxxxxxxxxxxxx30f3f789a23`
        echo $response
    else
        response=`curl -X POST -H 'Content-Type:application/json; charset=utf-8' 
            -d '{"msgtype":"markdown",
            "markdown":{"title":"'$1'",
            "text": "## '$1'
    
    **项目名称**:'$2'
    
    **提交人**:'$gitAuthor'
    
    **状态**:'$3'
    
    **分支**:'$4'\n\n有关更多构建的过程、错误信息、请参照 [构建日志]('$5')"
            }}' https://oapi.dingtalk.com/robot/send?access_token=aba71a2b612d58axxxxxxxxxxxxxxxxxxxxxxxxxxx7350b1530f3f789a23`
            echo $response
    fi
  • 相关阅读:
    Android Context
    Java 字节数组 对比 低速 指针快速
    private、protected、public、published 访问限制(或者叫类成员的可见性)
    读“变革中的思索”
    微软全球资深副总裁张亚勤先生力作——《变革中思索》连载
    这个冬天,我以《监控》下酒
    震撼 中国的史蒂芬金——读小说《监控》有感
    《监控》新派惊悚职场小说
    鱼与飞鸟的距离
    博文视点大讲堂第21期免费讲座:解密Google、百度——搜索引擎揭秘
  • 原文地址:https://www.cnblogs.com/shiji888/p/13091916.html
Copyright © 2020-2023  润新知