以流水线方式部署前端项目,基本思路为在linuxNogui节点上build相关代码后,利用sshPublisher插件传送文件到另一个服务器端构建docker镜像。
其中jenkinsfile内容如下:
pipeline {
agent {
label 'linuxNogui'
}
stages {
stage('构建前端项目') {
steps {
git branch: 'main', credentialsId: '1bc62fb7-2394-417b-b8be-a2221a0fb123', url: 'http://192.168.2.141:9001/root/summer_front.git'
//npm install时官网下载比较慢时,可以设置淘宝源加速install速度
sh 'npm config set registry https://registry.npm.taobao.org'
// --legacy-peer-deps 解决高版本npm无法解析依赖树的报错
sh 'npm install --legacy-peer-deps'
// CI=false 解决build时jenkins ci 判断build运行失败的问题
sh 'CI=false npm run build'
//将package.json,Dockerfile,build,server文件夹的内容传输到linuxNogui2的/jenkins/workspace/summer-front文件夹下
sshPublisher(publishers: [sshPublisherDesc(configName: 'linuxNogui2', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'echo \'zhangzhang\'', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/summer-front/', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'package.json,Dockerfile,build/**,server/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
stage('制作docker镜像') {
agent{
node{
label 'linuxNogui2'
customWorkspace '/jenkins/workspace/summer-front'
}
}
steps {
//生成summer-front镜像文件
sh 'docker build -t summer-front .'
}
}
}
}