DevOps / Jenkins

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

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

一、流程介绍

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

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

说明:本文不会详细描述整个过程,只是把大致流程讲一下,将核心的代码贴出来,文章来源(Source):浅时光博客大家可自行根据自己的项目去改造。相关的Jenkinsfile文件已经上传至本人的GitHub仓库,可自行进行克隆下载;如果对您有帮助别忘记点个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. 梦醒时分安徽·合肥2023-2-2 · 9:18

    谢谢楼主分享

  2. K.S广东·广州2023-1-30 · 15:50

    谢谢分享,学习了

  3. 起風了浙江·杭州2023-1-16 · 15:22

    不错不错,学习了。学习一下

  4. 风信子北京2022-12-2 · 9:34

    不错不错,学习了。

  5. MGF广东·深圳2022-11-15 · 10:20

    感谢分享,学习了

  6. weisun未知2022-11-11 · 15:07

    学习学习一下

  7. LLL狐上海2022-11-1 · 11:33

    非常OKK。nice

  8. 迷彩de青春山东·济南2022-10-28 · 22:59

    不错不错,学习了

  9. Q_132四川·成都2022-10-12 · 22:39

    不错不错,学习了。

  10. wx_d9d861c292上海2022-9-26 · 17:16

    不错不错,学习了。