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})"
}
}
}
总结
哪一次付出都是努力的结果,加油。