Jenkins & uniapp の build
基于 HBuilderX
软件提取的打包命令编写的脚本,稳定、可靠,可用于生产环境。
网上大部分此类教程是根据uniapp
官网提供的HBuilderX 工程转换为 vue-cli 工程进行的,据了解其有弊端、集成Jenkins
稍显啰嗦且我没最终成功过,故出此教程备忘。
1.文件准备
-
HBuilderX安装目录下的plugins目录下的
uniapp-cli
compile-node-sass
-
https://github.com/sass/node-sass/releases
服务器执行以下命令根据打印的版本号去下载对应的版本
node -p process.versions | grep modules
解压后重命名为
binding.node
,并移动到指定目录# 末尾目录名对应版本号,这里以93为例 mkdir -p ./compile-node-sass/node_modules/node-sass- china/vendor/linux-x64-93 mv ./binding.node ./compile-node-sass/node_modules/node-sass- china/vendor/linux-x64-93/
-
将以上三个目录上传至
/root/uniapp-compile
2.打包脚本
cd uniapp-cli
PROJECT_PATH=xxx
export UNI_INPUT_DIR=$PROJECT_PATH
export UNI_OUTPUT_DIR=$PROJECT_PATH/unpackage/dist/build/h5
export NODE_ENV=production
node --max-old-space-size=2048 ./bin/uniapp-cli.js
3. Jenkins 流水线脚本
pipeline {
agent any
tools {nodejs "nodejs"}
environment{
COMPILE_PATH = "/root/uniapp-compile"
WEBSITE_DIR = "mojospy.love"
}
stages {
stage("拉代码") {
steps{
sh'''
rm -rf ./*
'''
checkout scmGit(branches: [[name: '*/dev']], extensions: [], userRemoteConfigs: [[credentialsId: 'placeholder', url: 'placeholder']])
}
}
stage("打包") {
steps{
sh'''
PROJECT_DIR=`pwd`
cd $COMPILE_PATH/uniapp-cli
PROJECT_PATH=$PROJECT_DIR
export UNI_INPUT_DIR=$PROJECT_PATH
export UNI_OUTPUT_DIR=$PROJECT_PATH/unpackage/dist/build/h5
export NODE_ENV=production
node --max-old-space-size=2048 ./bin/uniapp-cli.js
'''
}
}
stage("传输"){
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'placeholder', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: "$WEBSITE_DIR", remoteDirectorySDF: false, removePrefix: 'unpackage/dist/build/h5', sourceFiles: 'unpackage/dist/build/h5/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
}
}