Jenkins Bitbucket Java 部署

一、环境版本

组件版本
Ubuntu20.04
JDKopenjdk 1.8.0_292
Maven3.6.3
Git2.25.1
BitBucket

二、Maven

安装Maven

# maven 默认安装位置:/usr/share/maven/bin/mvn
sudo apt-get update
sudo apt-get install maven
# 验证安装
mvn -v
# 安装成功显示
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 1.8.0_292, vendor: Private Build, runtime: /usr/lib/jvm/java-8-openjdk-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.4.0-81-generic", arch: "amd64", family: "unix"

Jenkins配置

主面板->全局工具配置
在这里插入图片描述

三、Jenkins插件

主面板->Manage Jenkins->Manage Plugins->可选插件

1、安装Maven插件

Maven Integration
Pipeline Maven Integration

四、从BitBucket上拉取代码进行编译

1、BitBucket 新应用密码

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
记录生成的密钥

2、Jenkins Maven 项目

主面板->新建任务

在这里插入图片描述

General

在这里插入图片描述

源码管理

添加BitBucket上源码地址
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

构建触发器

(1)触发远程构建

提供接口+令牌方式触发构建,适用于公司后台调用构建

(2)其他工程构建后触发(Build after other projects are build)

项目间有构建顺序和依赖时使用

(3)定时构建(Build periodically)

每天下班前定时统一构建一次,失败的提交要请大家吃零食

(4)轮询SCM(Poll SCM)

BitBucket无法访问内网时使用,定时扫码Git库,查看是否有提交
在这里插入图片描述

#教程
第一颗*表示分钟minute:取值0-59,第几分钟执行
第二颗*表示小时hour:取值0-23,第几小时执行
第三颗*表示日day:取值1-31,第几日执行
第四颗*表示月month:取值1-12,第几月执行
第五颗*表示星期week:取值0-7,每周第几天执行
# 示例
# 每半小时构建一次OR每半小时检查一次远程代码分支,有更新则构建
H/30 * * * *
# 每两小时构建一次OR每两小时检查一次远程代码分支,有更新则构建
H H/2 * * *
# 每天凌晨两点定时构建
H 2 * * *
# 每月15号执行构建
H H 15 * *
# 工作日,上午9点整执行
H 9 * * 1-5
# 每周1,3,5,从8:30开始,截止19:30,每4小时30分构建一次
H/30 8-20/4 * * 1,3,5
(5)WebHook触发构建

BitBucket访问内网Jenkins,主动触发构建

构建环境

在这里插入图片描述

Build

在这里插入图片描述

# Root POM
pom.xml
# Goals and options
clean install -Dmaven.skip.test=true

Post Steps

在这里插入图片描述

# 切换jenkins编译目录
cd /var/lib/jenkins/workspace/hello/target/
# 复制文件到新的位置
cp Hello-0.0.1-SNAPSHOT.jar /usr/local/maven/jar/hello/
cd /usr/local/maven/jar/hello/
# 杀死原来的进程,启动新的进程,参数为restart重启
BUILD_ID=dontKillMe sh hello.sh restart

shell脚本 hello.sh

#!/bin/bash
#这里可替换为你自己的执行程序,其他代码无需更改
APP_NAME=Hello-0.0.1-SNAPSHOT.jar
#使用说明,用来提示输入参数
usage() {
	echo "Usage: sh demo.sh [start|stop|restart|status]"
	exit 1
}
		
#检查程序是否在运行
is_exist() { 
	pid=`ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}' `
	#如果不存在返回1,存在返回0
	if [ -z "${pid}" ]; then
		return 1
	else
		return 0
	fi
}
		
#启动方法
start() {
	is_exist
	if [ $? -eq "0" ]; then
		echo "${APP_NAME} is already running. pid=${pid} ."
	else
		echo "starting..."
		#nohup java -jar $APP_NAME > /dev/null 2>&1 &
		java -jar $APP_NAME &
	fi
}

#停止方法
stop() {
	is_exist
	if [ $? -eq "0" ]; then
		kill -9 $pid
	else
		echo "${APP_NAME} is not running"
	fi
}

#输出运行状态
status() {
	is_exist
	if [ $? -eq "0" ]; then
		echo "${APP_NAME} is running. Pid is ${pid}"
	else
		echo "${APP_NAME} is not running."
	fi
}
		
#重启
restart() {
	stop
	start
}

#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
	"start")
	start
	;;
	"stop")
	stop
	;;
	"status")
	status
	;;
	"restart")
	restart
	;;
	*)
	usage
	;;
esac

如果要把APP_NAME也当做参数传入,则可$1为操作start、stop等,$2为APP_NAME
执行

# 杀死原来的进程,启动新的进程,参数为restart重启
BUILD_ID=dontKillMe sh hello.sh restart Hello-0.0.1-SNAPSHOT.jar
#!/bin/bash
#这里可替换为你自己的执行程序,其他代码无需更改
APP_NAME=$2


#使用说明,用来提示输入参数
usage() {
	echo "Usage: sh demo.sh [start|stop|restart|status]"
	exit 1
}
		
#检查程序是否在运行
is_exist() { 
	pid=`ps -ef | grep $APP_NAME | grep -v -e grep -e $0| awk '{print $2}' `
	#如果不存在返回1,存在返回0
	if [ -z "${pid}" ]; then
		return 1
	else
		return 0
	fi
}
		
#启动方法
start() {
	is_exist
	if [ $? -eq "0" ]; then
		echo "${APP_NAME} is already running. pid=${pid} ."
	else
		echo "starting..."
		java -jar $APP_NAME &
	fi
}

#停止方法
stop() {
	is_exist
	if [ $? -eq "0" ]; then
		kill -15 $pid
	else
		echo "${APP_NAME} is not running"
	fi
}

#输出运行状态
status() {
	is_exist
	if [ $? -eq "0" ]; then
		echo "${APP_NAME} is running. Pid is ${pid}"
	else
		echo "${APP_NAME} is not running."
	fi
}
		
#重启
restart() {
	stop
	start
}

#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
	"start")
	start
	;;
	"stop")
	stop
	;;
	"status")
	status
	;;
	"restart")
	restart
	;;
	*)
	usage
	;;
esac

3、执行编译

在这里插入图片描述

4、查看结果

在这里插入图片描述

五、参考鸣谢

Jenkins安装及自动部署Maven项目
jenkins 构建springboot项目

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值