肝了三天,我终于把ruoyi-android-app自动打包apk成功了

jenkins 安装

官网下载启动即可 :https://www.jenkins.io/zh/doc/book/installing/

系统要求

最低推荐配置:

  • 256MB可用内存

  • 1GB可用磁盘空间(作为一个Docker容器运行jenkins的话推荐10GB)

为小团队推荐的硬件配置:

  • 1GB+可用内存

  • 50 GB+ 可用磁盘空间

软件配置:

  • Java 8—无论是Java运行时环境(JRE)还是Java开发工具包(JDK)都可以。

最新的高版本使用jdk 21 比较好。启动之后,配置账号和密码即可。


image.png

插件安装

分析需要哪些插件,打包android 需要android sdk、 java sdk 、grade
还需要 pyger、Pipeline、Pipeline Stage View、Blue Ocean、git
插件地址和步骤:


image.png

步骤是插件安装之后在需要配置


image.png

配置方式:

image.png
image.png

image.png

git 设置密码

不同的平台不一样,我例如gitee 中,如果是公开的这个步骤就跳过即可。

如果是不对外公开需要配置


image.png

添加一个令牌 之后保存下来,之后使用。

开始

创建任务,我写两种普通的模式和流水线模式 ,都是可以打包apk。
然后在发布到 第三方平台上去。

使用普通的模式

image.png

配置是debug 和 release模式


image.png

使用流水线模式

image.png

配置是debug 和 release模式


image.png

流水线内容 我的是windows 系统,如何是liunx 系统或mac 系统需要用sh 来实现

pipeline {
    agent any

    environment {
        // 配置Android SDK路径(根据你的Jenkins环境修改)
        ANDROID_HOME = tool 'Android SDK'
        // 配置JDK(根据你的Jenkins环境中的JDK名称修改)
        JAVA_HOME = tool 'JDK 17'
        // 项目模块名称(根据实际项目修改)
        MODULE_NAME = 'app'
        // 构建类型(release或debug)
        BUILD_TYPE = "${ENV}"
    }

    tools {
        // 使用在Jenkins全局配置中定义的Gradle
        gradle 'Gradle 7.5'
    }

    stages {
        stage('拉取代码') {
            steps {
                echo '从Git仓库拉取最新代码...'
                // 替换为你的Git仓库地址
                git url: 'https://gitee.com/OptimisticDevelopers/Ruoyi-Android-App.git',
                branch: 'ui_1.1.1'
            }
        }

        stage('配置项目') {
            steps {
                echo '配置项目依赖和属性...'
                // 可选:如果需要,可在这里设置签名信息等
                // sh "echo \"MYAPP_RELEASE_STORE_FILE=../keystore.jks\" > ${MODULE_NAME}/gradle.properties"
                // sh "echo \"MYAPP_RELEASE_KEY_ALIAS=myalias\" >> ${MODULE_NAME}/gradle.properties"
                // sh "echo \"MYAPP_RELEASE_STORE_PASSWORD=${STORE_PASSWORD}\" >> ${MODULE_NAME}/gradle.properties"
                // sh "echo \"MYAPP_RELEASE_KEY_PASSWORD=${KEY_PASSWORD}\" >> ${MODULE_NAME}/gradle.properties"
            }
        }

        stage('构建 APK') {
            steps {
                echo "开始构建 ${BUILD_TYPE} 版本的APK..." 
                // 执行Gradle构建命令
                // sh "gradlew ${MODULE_NAME}:clean ${MODULE_NAME}:assemble${BUILD_TYPE.capitalize()}"
                bat "gradlew.bat ${MODULE_NAME}:clean ${MODULE_NAME}:assemble${BUILD_TYPE.capitalize()}"
            }
        }

        stage('归档 APK并重新命名') {
            steps {
                echo '归档生成的APK文件...'
                // 归档构建好的APK
                archiveArtifacts artifacts: "gradle-build/outputs/apk/${BUILD_TYPE}/*.apk",
                              fingerprint: true,
                              onlyIfSuccessful: true
            }
        }

        stage('上传到分发平台') {
            steps {
                echo '上传APK到分发平台(可选)...'
                
                bat "curl.exe -F \"file=@${workspace}\\gradle-build\\${MODULE_NAME}\\build\\outputs\\apk\\${BUILD_TYPE}\\${MODULE_NAME}-${BUILD_TYPE}.apk\" -F \"uKey=xxxx\" -F \"_api_key=xxxxxxx\" https://upload.pgyer.com/apiv1/app/upload"
            }
            when {
                // 只有构建release版本时才执行此步骤 debug 版本跳过
                environment name: 'BUILD_TYPE', value: 'release'
            }
        }
    }

    post {
        success {
            echo 'APK构建成功!'
            // 可选:发送成功通知
            // slackSend channel: '#android-builds', color: 'good', message: "APK构建成功: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})"
        }
        failure {
            echo 'APK构建失败!'
            // 可选:发送失败通知
            // slackSend channel: '#android-builds', color: 'danger', message: "APK构建失败: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})"
        } 
    }
}

总结

哪一次付出都是努力的结果,加油。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容