Jenkins Bitbucket Java 部署
一、环境版本
组件 | 版本 |
---|---|
Ubuntu | 20.04 |
JDK | openjdk 1.8.0_292 |
Maven | 3.6.3 |
Git | 2.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,存在返回0if [ -z "${pid}" ]; thenreturn 1elsereturn 0fi
}#启动方法
start() {is_existif [ $? -eq "0" ]; thenecho "${APP_NAME} is already running. pid=${pid} ."elseecho "starting..."#nohup java -jar $APP_NAME > /dev/null 2>&1 &java -jar $APP_NAME &fi
}#停止方法
stop() {is_existif [ $? -eq "0" ]; thenkill -9 $pidelseecho "${APP_NAME} is not running"fi
}#输出运行状态
status() {is_existif [ $? -eq "0" ]; thenecho "${APP_NAME} is running. Pid is ${pid}"elseecho "${APP_NAME} is not running."fi
}#重启
restart() {stopstart
}#根据输入参数,选择执行对应方法,不输入则执行使用说明
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,存在返回0if [ -z "${pid}" ]; thenreturn 1elsereturn 0fi
}#启动方法
start() {is_existif [ $? -eq "0" ]; thenecho "${APP_NAME} is already running. pid=${pid} ."elseecho "starting..."java -jar $APP_NAME &fi
}#停止方法
stop() {is_existif [ $? -eq "0" ]; thenkill -15 $pidelseecho "${APP_NAME} is not running"fi
}#输出运行状态
status() {is_existif [ $? -eq "0" ]; thenecho "${APP_NAME} is running. Pid is ${pid}"elseecho "${APP_NAME} is not running."fi
}#重启
restart() {stopstart
}#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in"start")start;;"stop")stop;;"status")status;;"restart")restart;;*)usage;;
esac
3、执行编译
4、查看结果
五、参考鸣谢
Jenkins安装及自动部署Maven项目
jenkins 构建springboot项目
Jenkins Bitbucket Java 部署相关推荐
- Jenkins Bitbucket Vue 部署
一.环境版本 组件 版本 Ubuntu 20.04 NodeJS 16.13.0 npm 8.1.0 cnpm 7.1.0 二.安装NodeJS # 指定NodeJS安装版本,修改版本只需修改setu ...
- jenkins+pipeline+Amazon_EKS部署java服务
1.下载安装Kubernetes Continuous Deploy 下载地址 2.配置秘钥连接EKS 如下 当按照下面的方式连接EKS时出现下面报错 script{ kubernetesDeploy ...
- springboot 使用Jenkins实现自动化部署
springboot 使用Jenkins实现自动化部署 简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持 ...
- Jenkins+Pipeline+Docker部署SpringBoot项目到远程服务器
Jenkins部署 前言 Jenkins 安装 nginx配置 jenkins配置 Docker安装 项目部署 项目添加Dockerfile文件 Jenkins新建任务 使用Pipeline部署 结果 ...
- 使用jenkins自动化打包部署Vue项目。详细教程。
此教程 jenkins是直接部署到linux服务器上.服务器系统:CentOS 7.3 64位. 流程:jenkins关联码云仓库,点击立即构建,执行shell进行构建,打包,把打包后的dist目录文 ...
- gitlab与jenkins的自动化部署(通过webhook与ansible)
gitlab与jenkins的自动化部署(通过webhook与ansilble) 1.部署介绍 gitlab服务器:192.168.1.49:80 jenkins服务器:192.168.1.49:81 ...
- 这样用Docker 搭建 Jenkins 实现自动部署,你知道吗?
一.为什么用jenkins 主要是我们现在的项目都是采用手动部署的,每当给项目中新增一个功能就必须执行(打包--测试--上传测试修复的包到指定服务器--部署上线),这个流程操作起来繁杂,不小心就可能 ...
- 使用Jenkins打包和部署Maven工程步骤详解
上节已部署jenkins: https://blog.csdn.net/weixin_39816740/article/details/104943258 并 准备好一个maven项目发布到码云 上节 ...
- Jenkins自动构建部署项目
1. 楔子 在实际开发中,经常需要编译.静态代码检查.自动化测试.打包.部署.启动等一连串重复机械的动作,浪费时间.而且容易出错,而Jenkins就是专门Continuous integration( ...
- 最详细之教你Jenkins+github自动化部署.Net Core程序到Docker目录
环境 centos7.9,.NET5 回到顶部 一.Jenkins搭建 1)下载Jenkins的war包 在\home目录建一个jenkins目录放jenkins的包 #进入\home目录 cd \h ...
最新文章
- 区分 欧几里得距离 曼哈坦距离 明考斯基距离
- 未入选新一轮“双一流”!两所高校官宣
- c#调用Matlab的参数传递
- 【特征工程】特征分箱
- linux安装php pgsql,Linux下apache php+phppgadmin+postgresql安装配置
- Junit4所需jar包
- windows 安装docker_Windows下docker安装 postgresql12.0
- JS中判断某个字符串是否包含另一个字符串的方法
- 【HTTP请求】、详解
- 2019五一联赛建模心得
- Vue 富文本编辑器 vue-quill-editor
- Pano2VR生成的HTML文件打开为黑屏
- mysql max() grou by 的使用小记
- 【笔记】马克思主义哲学(二)-- 唯物论
- CESM mpirun noticed that process rank 1 with PID 0 on node ubuntu exited on signal 11
- OCP4.4 部署EFK-使用local-volume持久化
- 如何在Raspberry Pi和ESP8266中使用MQTT
- win7 DllRgisterServer 的调用失败错误 0x80040200
- 深度分析数据库的热点块问题
- 2021美赛实用模板分享