DevOps / Jenkins

深入实践:在Jenkins上打造Android项目流水线

浅时光博客 · 1月24日 · 2022年 · 8.0w 次已读

一、流程介绍

  1. 开发人员完成代码提交后,将其交由测试团队进行构建流程。
  2. Jenkins平台中,测试人员可以根据具体需求选择适当的构建环境。
  3. 在确认需要进行安全加固时,系统会借助360加固保工具对APK文件进行加固,同时生成适用于多个渠道的APK包。
  4. 构建完成后,制品将被上传至蒲公英平台,并自动调用API接口以获取二维码,方便后续分享。
  5. 多渠道包会在构建完毕后自动进行归档,用户可在Jenkins的Job页面获取相关的下载链接。

下面是我画的一个简单的流程图,仅供参考

说明:本文不会详细描述整个过程,只是把大致流程讲一下,将核心的代码贴出来,大家可自行根据自己的项目去改造。相文章来源(Source):浅时光博客关的Jenkinsfile文件已经上传至本人的GitHub仓库,可自行进文章来源(Source):https://dqzboy.com行克隆下载;如果对您有帮助别忘记点个start

二、核心代码

#!groovy
@Library('jenkinslib') _     

pipeline{
    agent {
        label 'build'
    }

    environment {
        VERSION_CODE = "${VERSION_CODE}"
        APP_VERSION = "${APP_VERSION}"
        //APK包文件名称
        appName = "${appName}"
    }
    
    stages{
        stage("GetCode"){
            steps {
                script {
                    checkout([$class: 'GitSCM', branches: [[name: '${branchName}']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitlab-admin-user', url: '${srcUrl}']]])
                }
            }
        }

        stage("正式包构建") {
            steps{
                script{
                    sh '''
                        gradle assemble -PVERSION_CODE=${VERSION_CODE} -PAPP_VERSION=${APP_VERSION} -PDEBUGGABLE=${DEBUGGABLE}
                    '''                   
                }
            }
        }

        stage('APK加固') {
            steps {
                script {         
                    withCredentials([usernamePassword(credentialsId: '360jiagu-admin-token', passwordVariable: 'passwd', usernameVariable: 'user'), usernamePassword(credentialsId: '360jiagu-keystore-token', passwordVariable: 'aliasPasswd', usernameVariable: 'keyPasswd')]) 
                        sh """
                            java -jar ${jiaguPath} -login ${user} ${passwd}
                            java -jar ${jiaguPath} -importsign ./app/app.jks ${keyPasswd} [这是别名] ${aliasPasswd}
                            ## 可以通过下面的配置单独选择需要加固增强服务配置
                            java -jar ${jiaguPath} -config -update -crashlog -x86
                            ## 生成加固包
                            java -jar ${jiaguPath} -jiagu ${jiaguApkPath} ${outjiaguApk} -autosign -automulpkg
                        """
                    }
                }

            }
        }
        stage('发布普通制品') {
            steps {
                script {
                    sh """
                        cp app/build/outputs/apk/debug/内测版_v*_debug.apk ./${appName}_内测版_v${APP_VERSION}.apk
                        ##上传蒲公英
                        appPath = "./${appName}_内测版_v${APP_VERSION}.apk"
                        reqUrl = "https://upload.pgyer.com/apiv1/app/upload"
                        curl -F "file=@${appPath}" -F "uKey=${ukey}" -F "_api_key=${apikey}" ${reqUrl}
                    """
                }
            }
        }
    }
   
    post {
        success {
            script {
                echo "success"
            }
        }
        failure {
            script {
                echo "failure"
            }
        }
        aborted {           
            script {
                echo "aborted"
            }
        }
    }
}

三、效果展示


本文作者:浅时光博客
原文链接:https://www.dqzboy.com/9674.html
版权声明:知识共享署名-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)协议进行许可,转载时请以>超链接形式标明文章原始出处和作者信息
免责声明:本站内容仅供个人学习与研究,严禁用于商业或非法目的。请在下载后24小时内删除相应内容。继续浏览或下载即表明您接受上述条件,任何后果由用户自行承担。

24 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!

  1. K.S广东·广州2022-6-13 · 15:13

    不错不错,学习了。

  2. 流氓兔辽宁·大连2022-5-17 · 15:22

    学习了 666

  3. kingen上海2022-5-6 · 21:09

    学习学习,楼主666

  4. svsky福建·厦门2022-4-15 · 9:14

    学习 666

  5. 星火广东·深圳2022-4-5 · 0:01

    学习,感谢分享

  6. 亦如当初韩国2022-4-4 · 16:49

    6666,学习了

  7. yanxc安徽·合肥2022-3-1 · 21:08

    学习,感谢分享

  8. 浅时光博客2022-2-24 · 11:25

    凡是评论了之后,刷新看不到内容的,请检查自己登入的账号是否绑定了邮箱,绑定流程可以在公众号输入邮箱获取教程

  9. Steve2022-2-21 · 10:30

    学习学习,楼主666

  10. jobtang上海2022-1-24 · 10:29

    楼主66666