使用jenkins+gitlab自动构建springboot项目,并部署到远程服务器上

TuskueNeko TuskueNeko     2022-12-14     471

关键词:

前言

最近又重新弄了一下jenkins,虽然之前也有弄过但是都是在本地服务器部署,而且记录的不够详细,因此这次将写下详细部署过程。

 

一、下载并启动Jenkins

下载地址:https://jenkins.io/download/   ,选择下载war包

下载完成后用FTP上传到服务器上输入启动命令:nohup java -jar jenkins.war --httpPort=7070  > jenkins.out 2>&1 & ,后面参数是启动端口。

启动完成后浏览器打开http://ip:7070  进入jenkins操作页面,此时会出现一个页面要求你输入密码,此时回到linux控制台,输入tail -100f jenkins.out 查看启动日志,注意看日志,它会打印你的初始密码,复制初始密码并点下一步,后面的操作按提示来就可以了,可以安装推荐的插件也可以自己选,下面将进入JENKINS配置步骤。

 

二、配置JENKINS

 

点击jenkins 系统管理->插件管理  点击available(可选插件)选项卡 ,在右上角的搜索框搜索并安装如下几个插件:

1、Git plugin  Git client plugin

2、Maven Integration plugin

3、Publish Over SSH

4、Gitlab Hook Plugin(可选)

 

再次点击JENKINS的系统管理 -> 系统设置 ,找到Publish over SSH这一栏,如下图配置要发布到该服务器上的连接配置

参数说明:

  name:可以随便起          hostname:连接IP地址          Remote Directory: 远程文件夹路径,发布的项目将会在此目录下    

  username:账号  password:密码  ,  除了用账号密码连接外还可以通过private key连接,由于麻烦我在这选择了账号密码连接

 

全局工具配置

这个是基础配置,可不能忘了,分别配置它的JDK  GIT  和MAVEN,如果本机已经有了,则输入安装路径即可,如果没有可以使用JENKINS的自动安装功能 ,看下图:

自动安装和手动配置二选一。

 

三、Jenkins任务配置

新建一个Jenkins任务,输入你的任务名称点确定,然后点配置进入该任务的配置页面。

1、配置源码管理:

  

 

找到源码管理点GIT,输入你的项目的GIT URL,如http://localhost:80/project.git  ,下面的Credentials是凭据,点添加然后输入登陆gitlab的账号密码

 

2、配置Build 

  找到Build一栏,分别配置好Root POM和Goals and options  ,root pom是你项目的pom.xml,goals and options是mvn的执行命令,可以填 :install -DskipTests ,不需要填mvn xxx

 

3、配置Post Steps

  选择Add post-build step -> Send files or execute commands over SSH  ,然后如下图 配置:

1、name是之前我们在系统配置里添加的远程服务器配置

2、Source files是哪些文件将被发布到远程服务器,可以使用匹配符如:**/*.jar   or   **/project.jar ,推荐这样填 :**/*.jar,build.sh (将build.sh也打包的因为是发布完可以直接运行该脚本)

3、Remove prefix是要删除的前缀文件夹,例:project/target/p.jar  输入移除前缀:project/target,那么部署后就不会有移除的那些文件夹路径了,推荐不要填,因为它不支持匹配符,只能填死路径 。

4、Exec commond是发布完成后要执行的shell命令,一般用它调用写好的sh脚本,对了如果这里没有Exec command这一栏的话,回到系统配置,找到之前配置远程服务器的地方点开高级配置,把disable exec 取消勾选。

一切准备就绪,最后填写build.sh!

四、Build.sh 重启脚本

 

这个脚本调了我很久,一开始不是没执行完就结束要么就是启动没反应,该脚本的大致作用是查找该目录下的所有jar文件,并使用nohup java -jar 启动,同时保存它的进程PID,下次启动前先获取PID 调用 KILL命令。

下面上脚本 ,代码上面有说明大家可以根据需要修改。

#!/bin/bash -ilex
#jenkin编译时调用的shell,仅使用在测试服务器上
#export BUILD_ID=dontKillMe这一句很重要,这样指定了,项目启动之后才不会被Jenkins杀掉。
source /etc/profile
#用于保存启动服务的PID
pid_path=/pids
#如果PID目录不存在,则创建
if [ ! -d "$pid_path" ]; then
  mkdir $pid_path
fi
#遍历文件夹获取jar
for file in `find  * -name "*.jar"`
do
#Jenkins中编译好的jar名称 
jar_name=$file##*/
#获取运行编译好的进程ID,便于我们在重新部署项目的时候先杀掉以前的进程
pid=$(cat $pid_path/$jar_name.pid) 

#rm -f $www_path/$jar_name
#杀掉以前可能启动的项目进程 
kill -9 $pid 
echo $jar_name
#启动jar,后台启动 
#BUILD_ID=dontKillMe
BUILD_ID=dontKillMe nohup java -Xmx512m -Xms512m -Xmn200m -jar $file > $jar_name%-*.*.*-SNAPSHOT.jar.out 2>&1 & 
#将进程ID存入到ufind-web.pid文件中 (pid统一路径)
echo $! > $pid_path/$jar_name.pid 

done

大功告成,最后点立即构建试试效果吧!

PS:JENKINS支持定时自动构建和检测GITLAB代码变动自动构建,由于我目前使用的是多结构的maven工程,一次变动会导致所有项目重新打包,因此并没有使用这个功能,有需要的朋友可以搜索jenkins + gitlab webhook 通过gitlab的接口触发jenkins自动构建

 

2019-5-21更新升级了shell脚本=======================================

现在支持参数了,根据参数扫描指定的jar包,使用代码如:bash build.sh "service*.jar" "serviceB*.jar"

 

build.sh:

#!/bin/bash -ilex
#export BUILD_ID=dontKillMe这一句很重要,这样指定了,项目启动之后才不会被Jenkins杀掉。
export BUILD_ID=dontKillMe
source /etc/profile
pid_path=/PID
function findJar()

	#遍历文件夹获取jar
	for file in `find  * -name "$1"`
	do
	#Jenkins中编译好的jar名称 
	jar_name=$file##*/
	#获取运行编译好的进程ID,便于我们在重新部署项目的时候先杀掉以前的进程
	pid=$(cat $pid_path/$jar_name.pid) 
	#rm -f $www_path/$jar_name
	#杀掉以前可能启动的项目进程 
	kill -9 $pid 
	#启动jar,后台启动 
	#BUILD_ID=dontKillMe
	BUILD_ID=dontKillMe nohup java -Xmx512m -Xms512m -Xmn200m -jar $file > $jar_name%-*.*.*-SNAPSHOT.jar.out 2>&1 & 
	echo $! > $pid_path/$jar_name.pid 
	done


#如果PID目录不存在,则创建
if [ ! -d "$pid_path" ]; then
  mkdir $pid_path
fi
if [ $# -gt 0 ] ;then
	for regx in $*
	do
	findJar $regx
	done
else
	findJar "*.jar"
fi

文章新地址:https://reiner.host/posts/e259bd66.html

 

 

jenkins高级用法(jenkins集成gitlab自动构建打包发布)(代码片段)

...能1.2.2配置构建触发器编写编译部署脚本2.0配置gitlab参数使用root账户登录到后台,点击AdminArea——》Settings——》Network勾选“Allowrequeststothelocalnetworkfromwebhooksandservices”在项目添加webhook点击项目——》Settings——》Integrations... 查看详情

jenkins自动构建gitlab项目

  安装的plugin: -kubernetes:1.7.1   -workflow-aggregator:2.5   -workflow-job:2.21   -credentials-binding:1.13   -git:3.6.4   查看详情

jenkins结合gitlab实现提交代码自动构建(代码片段)

jenkins可以说是现在非常流行的一个继续集成工具,几乎所有的公司都在用,并且它也基本是devops的连接者,是一个比较核心的工具。主要记录以下两个:利用jenkins和gitlab的webhook结合,实现提交代码之后,自动触发jenkins的构建... 查看详情

使用jenkins+gitlab自动构建springboot项目,并部署到远程服务器上

前言最近又重新弄了一下jenkins,虽然之前也有弄过但是都是在本地服务器部署,而且记录的不够详细,因此这次将写下详细部署过程。 一、下载并启动Jenkins下载地址:https://jenkins.io/download/  ,选择下载war包下载... 查看详情

gitlab+jenkins+hook代码自动构建发布上线

Gitlab+Jenkins+Hook1、gitlab和jenkins的安装见:http://www.cnblogs.com/cuishuai/p/7544663.htmlhttp://www.cnblogs.com/cuishuai/p/7544775.html 2、gitlab配置1)创建一个project,并创建一个monkey的分支。2)对分支进行设置:点击project-> 查看详情

jenkins结合gitlab实现pipline的自动构建部署(代码片段)

部署jenkins与gitlab服务就在这不演示了,可以参考前面的两篇文章。1、jenkins配置自动构建部署1.1、基于sshkey拉取代码先在jenkins服务器上创建个sshkey,在把公钥配置到gitlab上面,再到jenkinsweb界面配置凭据,使jenkins来拉取代码。roo... 查看详情

gitlab自动化触发jenkins构建项目(代码片段)

一、整体流程二、Jenkins安装插件要实现gitlab自动触发的功能,我们需要安装一个插件GitlabHookPlugin。三、重新配置任务在之前的任务里面,在构建触发器多了一项,如下,我们记住上面的接口,地址是我们jenkins的访问地址。四、... 查看详情

企业级docker+jenkins+gitlab自动化流水线构建(代码片段)

...我们都希望通过自动化技术,加快项目的迭代。尤其是当使用微服务系统架构之后,功能的叠加,对应服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化。因此,传统的人工部署已经心有余而力不足,... 查看详情

创建jenkins构建触发器,代码提交至gitlab即自动触发构建

...择安装登录gitLab,生成一个PersonalAccessTokens  进入Jenkins,添加apitoken,路径:首页--》凭据--》添加凭据添加后再次打开,如图所示  然后打开系统管理,进入系统设置,配置gitLab然后进入job,进行配置进入GitLab,打开... 查看详情

jenkins+gitlab集成实现自动构建(代码片段)

Jenkins+gitlab集成后,实现的功能是开发写好代码提交至gitlab上,当开始push到gitlab上之后,jenkins自动帮我们立即构建一、安装gitlab钩子脚本注意:jenkins不论想实现什么功能,都需要安装插件!!依次点击:系统管理==>>插件管... 查看详情

搭建jenkins,gitlab自动化打包部署项目(代码片段)

安装步骤:1.Docker-compose构建jenkins环境2.Docker-compose构建gitlab环境3.Jenkins,Gitlab自动化打包部署项目1.Docker-compose构建jenkins环境1、创建docker在主机的jenkins数据映射目录mkdir-p/data/jenkins_homechown-R777/data/jenkins_home2、用docker- 查看详情

[ci]构建触发器,实现当gitlab有push动作时候,jenkins自动拉代码.

构建触发器,实现当gitlab有push动作时候,jenkins自动拉代码.?拉取gitlab代码库:jenkins安装git插件配置gitlab服务器和jenkins服务器身份互信jenkins服务器生成一对rsakey.复制公钥到gitlabwebdashboard添加 在jenkinsCredentials里添加privatekey. 接下去... 查看详情

linux里面gitlab上传后,为啥要用jenkins构建?

...情况下,开发人员可能希望将代码推送到GitLab存储库后,使用Jenkins自动执行构建、测试和部署任务。这可以帮助他们更快地完成这些任务,并减少手动工作量。此外,使用Jenkins还可以帮助开发人员监控代码更改并进行版本控制... 查看详情

gitlab+jenkins持续集成

构建:  需要将jenkins服务器上 jenkins用户的公钥发送给 目标服务器的gs用户,使得在jenkins上能用gs免密登录目标服务器自动化构建需要配置gitlab的钩子,并在jenkins上做配置 自动构建后,邮件通知 查看详情

《jenkins从零到壹》jenkins集成gitlab自动化构建(java小虚竹建议收藏)(代码片段)

...了,分享给我的粉丝,同时也分享给大家。Jenkins使用教程相关系列目录环境准备安装jenkins:0❤️Jenkins从零到壹❤️:安装-windows使用jenkins.msi安装安装gitlab:《gitlab从零到壹》基于docker-gitlab安装jenkins配置安装插件安装... 查看详情

jenkinsgitlabgitlab自动触发jenkins构建(代码片段)

简介:尽管GitLab有内建的GitLabCI,但它远没有Jenkins那么强大好用。我们向GitLabpush代码,或执行其它一些操作时,GitLab可以将这些事件通知给Jenkins,triggerJenkins工程的构建自动执行。操作步骤:1、Gitlab配置1.1、创建个人访问令牌... 查看详情

docker+harbor+jenkins+gitlab自动化cicd构建

...构简介2.Gitlab部署和实践3.Docker部署4.Harbor私有仓库部署5.Jenkinspipeline项目持续集成实践6.整体架构参考文献1.实现CICD的架构简介本实践介绍了利用Jenkins和docker技术,如何实现CI/CD的各环节的步骤,包括代码检出,构建镜像,应用... 查看详情

使用 Jenkins 构建 GitLab 合并请求

】使用Jenkins构建GitLab合并请求【英文标题】:BuildGitLabmergerequestwithJenkins【发布时间】:2016-07-1113:50:51【问题描述】:我知道GitLab和Jenkins之间都有集成点,但是由于我无法控制的原因,我无法使用任何一个。向作业传递参数很容... 查看详情