与上一篇文章《Jenkins中pipeline方式通用化部署java项目》中1,2一样操作
1、参数化构建,选择 List Git branches (and more),Name 填写好,后面pipeline script代码中需要使用,我这里面使用GIT_BRANCH。
2、流水线选择 Pipeline script
3、pipeline script代码
env.GIT_URL = 'git项目地址'
env.CREDENTIALS_ID = '你的git凭据,在凭据中查看唯一标识'
env.REMOTE_IP = '需要部署的远程服务ip'
env.REMOTE_DIR = 'dist包所在远程服务器目录'
pipeline {
agent any
stages {
stage('拉取代码') {
steps {
checkout scmGit(branches: [[name: "${GIT_BRANCH}"]], extensions: [], userRemoteConfigs: [[credentialsId: "${CREDENTIALS_ID}", url: "${GIT_URL}"]])
}
}
stage('打dist包') {
steps {
// 这个是Jenkins系统配置里面安装的nodejs
nodejs('NodeJS-16.20.0') {
// shell脚本多行的时候需要使用 '''
sh '''
# npm方式
npm install --legacy-peer-deps;
npm run build:test;//环境
# yarn方式
# yarn config set strict-ssl false
# yarn install;
# yarn build:test; //环境
'''
}
}
}
stage('发送服务器启动服务') {
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: "${REMOTE_IP}", transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '这里面执行一些命令,可以删除原dist包,也可以为空', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: "${REMOTE_DIR}", remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'dist/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
}
}