提交jenkins自动化流水线
This commit is contained in:
Vendored
+10
-14
@@ -1,15 +1,14 @@
|
|||||||
pipeline {
|
pipeline {
|
||||||
agent any
|
agent {label 'master'}
|
||||||
tools {
|
tools {
|
||||||
nodejs 'node22'
|
nodejs 'node22'
|
||||||
gradle 'gradle811'
|
gradle 'gradle811'
|
||||||
}
|
}
|
||||||
environment {
|
environment {
|
||||||
UNIAPP_APP_ID = '__UNI__EDE0E52'
|
UNIAPP_APP_ID = '__UNI__EDE0E52'
|
||||||
ANDROID_ASSETS_DIR = "Android/simpleDemo/src/main/assets/apps/${UNIAPP_APP_ID}/www"
|
ANDROID_APP_DIR = "Android/simpleDemo"
|
||||||
// Android 构建环境
|
ANDROID_ASSETS_DIR = "${ANDROID_APP_DIR}/src/main/assets/apps/${UNIAPP_APP_ID}/www"
|
||||||
ANDROID_SDK = '/opt/android-sdk' // 安卓 SDK 路径
|
ANDROID_SDK = '/opt/android-sdk' // 安卓 SDK 路径
|
||||||
GRADLE_OPTS = '-Dorg.gradle.daemon=false -Dorg.gradle.parallel=true'
|
|
||||||
}
|
}
|
||||||
stages {
|
stages {
|
||||||
stage('打印环境变量') {
|
stage('打印环境变量') {
|
||||||
@@ -57,19 +56,11 @@ pipeline {
|
|||||||
steps {
|
steps {
|
||||||
// 1. 生成 local.properties 指定 SDK 路径
|
// 1. 生成 local.properties 指定 SDK 路径
|
||||||
sh "echo 'sdk.dir=${ANDROID_SDK}' > Android/local.properties"
|
sh "echo 'sdk.dir=${ANDROID_SDK}' > Android/local.properties"
|
||||||
|
|
||||||
// 3. 直接执行编译(核心:Android/gradlew) --offline
|
// 3. 直接执行编译(核心:Android/gradlew) --offline
|
||||||
sh "gradle assembleRelease -g ${WORKSPACE}/gradle-home -p Android"
|
sh "gradle assembleRelease -g ${WORKSPACE}/gradle-home -p Android"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// stage('查看APK & 归档') {
|
|
||||||
// steps {
|
|
||||||
// sh "ls -lh Android/app/build/outputs/apk/release/"
|
|
||||||
// archiveArtifacts artifacts: 'Android/app/build/outputs/apk/release/*.apk', fingerprint: true
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
post {
|
post {
|
||||||
@@ -77,10 +68,15 @@ pipeline {
|
|||||||
echo '流水线已结束'
|
echo '流水线已结束'
|
||||||
}
|
}
|
||||||
success {
|
success {
|
||||||
echo '🎉 项目部署成功!'
|
echo "✅ 构建成功,归档 APK"
|
||||||
|
archiveArtifacts(
|
||||||
|
artifacts: '${ANDROID_APP_DIR}/build/outputs/apk/release/*.apk',
|
||||||
|
fingerprint: true,
|
||||||
|
onlyIfSuccessful: true
|
||||||
|
)
|
||||||
}
|
}
|
||||||
failure {
|
failure {
|
||||||
echo '⚠️ 部署失败,请检查日志!'
|
echo '⚠️ 构建失败,请检查日志!'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
pipeline {
|
||||||
|
agent {label 'macos'}
|
||||||
|
tools {
|
||||||
|
nodejs 'node22'
|
||||||
|
}
|
||||||
|
environment {
|
||||||
|
UNIAPP_APP_ID = '__UNI__EDE0E52'
|
||||||
|
IOS_ASSETS_DIR = "Android/simpleDemo/src/main/assets/apps/${UNIAPP_APP_ID}/www"
|
||||||
|
// ANDROID_SDK = '/opt/android-sdk' // 安卓 SDK 路径
|
||||||
|
}
|
||||||
|
stages {
|
||||||
|
stage('打印环境变量') {
|
||||||
|
steps {
|
||||||
|
echo "使用的 UNIAPP_APP_ID:${env.UNIAPP_APP_ID}"
|
||||||
|
echo "安卓资源目录:${env.IOS_ASSETS_DIR}"
|
||||||
|
sh "node -v" // 打印 NodeJS 版本
|
||||||
|
sh "npm -v" // 打印 NPM
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage('清理旧构建') {
|
||||||
|
steps {
|
||||||
|
sh "rm -rf dist/" // 清理 UniApp 打包生成的 dist 目录
|
||||||
|
sh "rm -rf android/simpleDemo/build/" // 清理 Android 项目构建缓存
|
||||||
|
sh "rm -rf ${ANDROID_ASSETS_DIR}" // 清理旧的 APP 资源文件目录
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage('安装依赖') {
|
||||||
|
steps {
|
||||||
|
echo "✅ 从清华源安装缺失的 uts 二进制包"
|
||||||
|
sh "npm install @dcloudio/uts-linux-x64-gnu --force --registry=https://registry.npmmirror.com"
|
||||||
|
echo "✅ 安装 UniApp 依赖(忽略平台+开权限+强制)"
|
||||||
|
sh "npm install --force --unsafe-perm --ignore-platform"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage('打包uniapp') {
|
||||||
|
steps {
|
||||||
|
sh "npm run build:app-plus:${env.BRANCH_NAME}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage('复制UniApp资源到安卓assets目录') {
|
||||||
|
steps {
|
||||||
|
echo "开始复制 dist 资源到 ${ANDROID_ASSETS_DIR}"
|
||||||
|
// 先创建目标目录(防止目录不存在报错)
|
||||||
|
sh "mkdir -p ${ANDROID_ASSETS_DIR}"
|
||||||
|
// 把 dist 里所有文件 复制 到安卓资源目录(推荐)
|
||||||
|
sh "cp -rf dist/build/app/* ${ANDROID_ASSETS_DIR}/"
|
||||||
|
echo "✅ 资源复制完成"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ====================== 构建 APK ======================
|
||||||
|
stage('配置SDK & 赋予权限 & 编译Android') {
|
||||||
|
steps {
|
||||||
|
// 1. 生成 local.properties 指定 SDK 路径
|
||||||
|
sh "echo 'sdk.dir=${ANDROID_SDK}' > Android/local.properties"
|
||||||
|
// 3. 直接执行编译(核心:Android/gradlew) --offline
|
||||||
|
sh "gradle assembleRelease -g ${WORKSPACE}/gradle-home -p Android"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
post {
|
||||||
|
always {
|
||||||
|
echo '流水线已结束'
|
||||||
|
}
|
||||||
|
success {
|
||||||
|
echo '🎉 项目部署成功!'
|
||||||
|
}
|
||||||
|
failure {
|
||||||
|
echo '⚠️ 部署失败,请检查日志!'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user