
yyy vue项目 Jenkins流水线
node {
def network = "yyy" // 容器网络
// def publish_parameter ="-p#1001:1002#-p1002:1002" //运行命令的参数部分
// def server = "s1"
def projcetUrl = 'https://www.itzaj.com:325/kh/hswl/vue3.git' // 项目地址
def projectBranch = 'master'
def packageVersion = "${BUILD_NUMBER}" // 项目版本
def harbor_url = "www.itzaj.com:338" //Harbor私服地址
def harbor_username = "root" //Harbor的用户名
def harbor_password = "DFgo1234...." //Harbor的密码
def harbor_project_name = "yyy" //Harbor的项目名称
def serverArray = "${server}".split(',')
// def packageName = "archer-vue2"
// def packageEnv = "prod"
def node // node工具路径
stage('拉取代码') {
checkout scmGit(branches: [[name: "*/${projectBranch}"]], extensions: [], userRemoteConfigs: [[credentialsId: 'd5f3ef0f-e6bb-4871-986f-1723c3b7ea64', url: "${projcetUrl}"]])
}
stage('引用全局工具') { // for display purposes
node = tool 'node181401'
}
stage('打包') {
nodejs('node181401'){
sh '''
node -v
npm -v
npm install pnpm -g
pnpm -v
pnpm install --no-frozen-lockfile
pnpm run build
'''
}
}
stage('构建镜像') {
def dockerfilePath = 'Dockerfile' // 默认Dockerfile路径
echo "${packageEnv}"
if (packageEnv == 'prod') {
dockerfilePath = 'DockerfileProd' // 生产环境的Dockerfile路径
}
if (packageEnv == 'test') {
dockerfilePath = 'DockerfileTest' // 测试环境的Dockerfile路径
}
echo "${dockerfilePath}"
//构建镜像
sh "docker build -t ${packageName} --build-arg JAR_ENV=${packageEnv} -f ./ops/${dockerfilePath} ."
}
stage('推送镜像') {
//给镜像打标签
sh "docker tag ${packageName}:latest ${harbor_url}/${harbor_project_name}/${packageName}:${packageVersion}"
//登录私服
sh "docker login ${harbor_url} -u${harbor_username} -p${harbor_password}"
//推送镜像
sh "docker push ${harbor_url}/${harbor_project_name}/${packageName}:${packageVersion}"
}
stage('清理本地镜像') {
//删除镜像
sh "docker rmi ${harbor_url}/${harbor_project_name}/${packageName}:${packageVersion}"
sh "docker rmi ${packageName}:latest"
}
stage('发布') {
def remoteCommand = """
sh /data/jenkins_publish_1.sh ${packageName} ${packageVersion} ${harbor_url} ${harbor_project_name} ${harbor_username} ${harbor_password} ${publish_parameter} ${network} ${packageEnv}
"""
echo remoteCommand
for(int i=0;i<serverArray.size();i++){
def currentServer = serverArray[i]
sshPublisher(publishers: [sshPublisherDesc(configName: "${currentServer}", verbose: true, transfers: [sshTransfer(cleanRemote: false, execCommand: remoteCommand)])])
}
}
}
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员HoneyZ
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果