一、环境版本

组件 版本
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 部署相关推荐

  1. Jenkins Bitbucket Vue 部署

    一.环境版本 组件 版本 Ubuntu 20.04 NodeJS 16.13.0 npm 8.1.0 cnpm 7.1.0 二.安装NodeJS # 指定NodeJS安装版本,修改版本只需修改setu ...

  2. jenkins+pipeline+Amazon_EKS部署java服务

    1.下载安装Kubernetes Continuous Deploy 下载地址 2.配置秘钥连接EKS 如下 当按照下面的方式连接EKS时出现下面报错 script{ kubernetesDeploy ...

  3. springboot 使用Jenkins实现自动化部署

    springboot 使用Jenkins实现自动化部署 简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持 ...

  4. Jenkins+Pipeline+Docker部署SpringBoot项目到远程服务器

    Jenkins部署 前言 Jenkins 安装 nginx配置 jenkins配置 Docker安装 项目部署 项目添加Dockerfile文件 Jenkins新建任务 使用Pipeline部署 结果 ...

  5. 使用jenkins自动化打包部署Vue项目。详细教程。

    此教程 jenkins是直接部署到linux服务器上.服务器系统:CentOS 7.3 64位. 流程:jenkins关联码云仓库,点击立即构建,执行shell进行构建,打包,把打包后的dist目录文 ...

  6. gitlab与jenkins的自动化部署(通过webhook与ansible)

    gitlab与jenkins的自动化部署(通过webhook与ansilble) 1.部署介绍 gitlab服务器:192.168.1.49:80 jenkins服务器:192.168.1.49:81 ...

  7. 这样用Docker 搭建 Jenkins 实现自动部署,你知道吗?

     一.为什么用jenkins 主要是我们现在的项目都是采用手动部署的,每当给项目中新增一个功能就必须执行(打包--测试--上传测试修复的包到指定服务器--部署上线),这个流程操作起来繁杂,不小心就可能 ...

  8. 使用Jenkins打包和部署Maven工程步骤详解

    上节已部署jenkins: https://blog.csdn.net/weixin_39816740/article/details/104943258 并 准备好一个maven项目发布到码云 上节 ...

  9. Jenkins自动构建部署项目

    1. 楔子 在实际开发中,经常需要编译.静态代码检查.自动化测试.打包.部署.启动等一连串重复机械的动作,浪费时间.而且容易出错,而Jenkins就是专门Continuous integration( ...

  10. 最详细之教你Jenkins+github自动化部署.Net Core程序到Docker目录

    环境 centos7.9,.NET5 回到顶部 一.Jenkins搭建 1)下载Jenkins的war包 在\home目录建一个jenkins目录放jenkins的包 #进入\home目录 cd \h ...

最新文章

  1. 区分 欧几里得距离 曼哈坦距离 明考斯基距离
  2. 未入选新一轮“双一流”!两所高校官宣
  3. c#调用Matlab的参数传递
  4. 【特征工程】特征分箱
  5. linux安装php pgsql,Linux下apache php+phppgadmin+postgresql安装配置
  6. Junit4所需jar包
  7. windows 安装docker_Windows下docker安装 postgresql12.0
  8. JS中判断某个字符串是否包含另一个字符串的方法
  9. 【HTTP请求】、详解
  10. 2019五一联赛建模心得
  11. Vue 富文本编辑器 vue-quill-editor
  12. Pano2VR生成的HTML文件打开为黑屏
  13. mysql max() grou by 的使用小记
  14. 【笔记】马克思主义哲学(二)-- 唯物论
  15. CESM mpirun noticed that process rank 1 with PID 0 on node ubuntu exited on signal 11
  16. OCP4.4 部署EFK-使用local-volume持久化
  17. 如何在Raspberry Pi和ESP8266中使用MQTT
  18. win7 DllRgisterServer 的调用失败错误 0x80040200
  19. 深度分析数据库的热点块问题
  20. 2021美赛实用模板分享

热门文章

  1. Locality Sensitive Hashing ( LSH,局部敏感哈希 ) 详解
  2. c语言复杂万年历带农历,c语言实现农历万年历(48页)-原创力文档
  3. zyb的面试 Hdu6468
  4. 数亿人热血狂欢!EDG含泪加冕,我们是冠军!
  5. 2022年上海办理EDI增值电信经营许可证年检有哪些政策
  6. 《大数据时代》读后感,维克托
  7. 去谷歌面试,竟让扔鸡蛋?
  8. Vue定义全局常量,全局方法
  9. notepad下载(官网进不去)
  10. mysql 事件计划区别_【转】mysql 计划事件