使用Pipeline多分支选择发布前端代码

  1. 选择使用声明式pipeline,简单直观,同时如果根据需求,可以嵌套以script使用groovy语法
    pipeline脚本的注意事项

声明式脚本中通过script使用groovy语法,需要调用定义的环境变量,需要加env,例如本文中,if (env.Branch == ‘uat’),测试在scrip中,不能通过echo打印定义的环境变量
scp拷贝front目录下的所有文件到远程主机的work目录下: scp -rp /front/* 1.1.1.1:/data/work/;拷贝front文件,则scp -rp /front 1.1.1.1:/data/work/
修改Jenkins的job名字,对应job在workspace下的代码路径也发生改变,所以Jenkinsfile中如有引用路径,需要做出改变
Jenkinsfile中涉及的账密、token都可以通过自带的模块,隐式以凭证的方式调用,增加安全性
telegram报警,使用Jenkins的插件Telegram Bot,出现偶尔不能收到通知的问题,此处直接通过post的方式发送通知
Declarative Pipeline中调用scrip的方式实现:

pipeline {
agent any
parameters {
choice choices: [‘uat’, ‘release’], description: ‘请选择分支,发布到对应的环境!’, name: ‘Branch’
}

environment {
	git_auth = '3f269719-e6a8-46e5-a4bc-bef85a26a00d'
	git_address = 'https://gitlab.abc.club/123/front_h5.git'
}	

stages {
	//第一步
	stage('代码拉取') { 
		steps {
			checkout([$class: 'GitSCM', branches: [[name: '${Branch}']], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_address}"]]]) 
		}
	}
	
	// 第二步
	stage('编译'){
		steps {
			sh 'npm run build'
		}
	}			

	// 第三步
	stage('部署代码至Release'){
		steps {
			//此处部署到不同分支,也可以使用声明式pipeline中的when{},但要分成两个stage,显得臃肿,所以此处使用groovy的if/else if 来实现
			script {
				if (env.Branch == 'uat') {
					echo '正在发布到UAT环境中......'
					sh 'scp -rp /data/jenkins/workspace/ur-live-h5/dist 172.31.12.127:/data/work/live_h5/'
				} else if (env.Branch == 'release') {
					echo '正在发布到release环境中......'
					sh 'scp -rp /data/jenkins/workspace/ur-live-h5/dist 172.31.12.127:/data/work/live_h5/'
				}
			}
		}
	}
	
	// 第四步
	stage('发送telegram通知') {
		steps {
			//使用 withCredentials加密telegram的token以及chat_id
			withCredentials([string(credentialsId: '6b7f2000-ac4c-4423-9283-18d449e56b79', variable: 'Chat_ID'), string(credentialsId: 'aedd248d-13aa-4047-8e3d-1cb2e3e05833', variable: 'Tele_Token')]) {
				sh 'curl -s -X POST https://api.telegram.org/bot$Tele_Token/sendMessage -d chat_id=$Chat_ID -d text="uat_live_H5发布成功, 请测试!"'
			}
		}
	}		
}	

}
使用声明式pipeline中的when来实现如下:

pipeline {
agent any
parameters {
choice choices: [‘uat’, ‘release’], description: ‘请选择分支,发布到对应的环境!’, name: ‘Branch’
}

environment {
	git_auth = '3f269719-e6a8-46e5-a4bc-bef85a26a00d'
	git_address = 'https://gitlab.abc.com/123/h5_h5.git'
}	

stages {
	//第一步
	stage('代码拉取') { 
		steps {
			checkout([$class: 'GitSCM', branches: [[name: '${Branch}']], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_address}"]]]) 
		}
	}
	
	// 第二步
	stage('编译'){
		steps {
			sh 'npm run build'
		}
	}	
	
	// 第三步
	stage('部署代码至UAT'){
		when {
			environment name: 'Branch', value: 'uat'
		}
		steps {
			echo '正在发布到UAT环境中......'
			sh 'scp -rp /data/jenkins/workspace/ur-live-h5/dist 172.31.12.127:/data/work/live_h5/'
		}
	}	

	// 第三步
	stage('部署代码至Release'){
		when {
			environment name: 'Branch', value: 'release'
		}
		steps {
			echo '正在发布到release环境中......'
			//sh 'scp -rp /data/jenkins/workspace/ur-live-h5/dist 172.31.12.127:/data/work/live_h5/'
		}
	}
	
	// 第四步
	stage('发送telegram通知') {
		steps {
			//使用 withCredentials加密telegram的token以及chat_id
			withCredentials([string(credentialsId: '6b7f2000-ac4c-4423-9283-18d449e56b79', variable: 'Chat_ID'), string(credentialsId: 'aedd248d-13aa-4047-8e3d-1cb2e3e05833', variable: 'Tele_Token')]) {
				sh 'curl -s -X POST https://api.telegram.org/bot$Tele_Token/sendMessage -d chat_id=$Chat_ID -d text="uat_live_H5发布成功, 请测试!"'
			}
		}
	}		
}	

}

  1. 使用声明式的pipeline发布前端H5代码,完全通过脚本实现uat、release环境的发布。
    在这里插入图片描述

  2. 使用Jenkins自带的blue ocean发布,简单直观,如下图:
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值