分享好友 最新动态首页 最新动态分类 切换频道
Docker安装Jenkins实现项目自动部署(Java Web项目)
2024-12-26 21:50

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

1、用户提交代码到Git仓库

2、Jenkins服务器从指定Git仓库拉去代码,使用maven编译打包。

3、Jenkins服务器ssh连接应用服务器,将打包好的war或者jar包传送到应用服务器指定位置,例如 tomcat/webapps

4、Jenkins服务器在应用服务器远程执行脚本文件 重启应用服务器tomcat 或者 在应用服务器执行 java -jar 启动当前项目。

〇、Docker安装Jenkins

    安装环境

  • 操作系统 Centos7.3

    • 安装Docker,安装及配置见 《Docker学习——理解Docker与安装(一)》

 

Ⅰ.下载最新的Jenkins LTS:   

 
 

Ⅱ.启动Jenkins前准备

#创建jenkins文件夹,用于和容器内文件夹做磁盘挂载
mkdir /home/jenkins

注意:在安装jenkins时候,挂在文件夹/home/jenkins/的归属用户id必须是1000,否则会抛出无操作权限异常。异常如下

需要修改文件夹的归属者和组

 
 

Ⅳ、启动jenkins

sudo docker run -itd -p 32772:8080 -p 50000:50000 --name jenkins --privileged=true -v /home/jenkins:/var/jenkins_home  -v /etc/localtime:/etc/localtime  -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai  jenkins/jenkins:lts

-p 32772:8080 -p 50000:50000 进行端口映射

--privileged=true 在CentOS7中的安全模块selinux把权限禁掉了,参数给容器加特权。

-v /home/jenkins:/var/jenkins_home 磁盘挂载

-v /etc/localtime:/etc/localtime  修改/etc/localtime,修改容器的时间

-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai   修改jenkins的时区

Ⅴ、查找Jenkins初始密码

首次启动会提示初始密码位置,找到初始密码

[root@iZwz9aa0bof90ijp1bsncbZ globalEnvi]# sudo docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
9e3a37cf78264798878606621db632d3

Ⅵ、安装需要的插件

在jenkins页面“系统管理”-->“管理插件”-->"可选插件"中搜索

Maven Integration 用来支持构建maven项目

Publish Over SSH 用来把构建好的部署包传送到指定服务器的指定位置

GitLab、Gitlab Authentication、Gitlab Hook来获取仓库源码

Ⅶ、配置Jenkins

Maven安装
#1.下载maven并解压
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
tar -zxvf apache-maven-3.6.0-bin.tar.gz

#2.修改maven的远程镜像为阿里云镜像库
vim conf/setting.xml
    ...
       <mirror>  
          <id>nexus-aliyun</id>  
          <mirrorOf>central</mirrorOf>    
          <name>Nexus aliyun</name>  
          <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
      </mirror>
...
#3.在/etc/profile文件末尾增加以下配置 
vim /etc/profile 
#注意这里是maven的安装路径 
M2_HOME=/home/jenkins/globalEnvi/apache-maven-3.6.0   
  
#4.重载/etc/profile这个文件 source /etc/profile
export PATH=${M2_HOME}/bin:${PATH}
JDK安装
#1.将下载完的jdk解压
tar -zxvf jdk-8u191-linux-x64.tar.gz

#2.在/etc/profile文件末尾增加以下配置 
vim /etc/profile 
export JAVA_HOME=/home/jenkins/globalEnvi/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH

#3.更新配置文件 
source /etc/profile
Git安装
#安装依赖 
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc
yum install gcc perl-ExtUtils-MakeMaker

在jenkins页面“系统管理”-->“管理插件”-->”全局工具配置”

 

Ⅷ、添加SSH Servers(可使用密钥,也可以使用密码,这里我们使用密码

在jenkins页面“系统管理”-->“系统设置”

至此,Jenkins服务器环境如下

环境版本Jenkins2.138.3JDK1.8.0_191Maven3.6.0Git1.8.3.1
Tomcat安装
#1.下载Tomcat并解压
wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.5.35/bin/apache-tomcat-8.5.35.tar.gz
tar -zxvf apache-tomcat-8.5.35.tar.gz

#2.修改Tomcat服务启动端口
JDK安装
#1.将下载完的jdk解压
tar -zxvf jdk-8u191-linux-x64.tar.gz

#2.在/etc/profile文件末尾增加以下配置 
vim /etc/profile 
export JAVA_HOME=/home/jenkins/globalEnvi/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH

#3.更新配置文件 
source /etc/profile

至此,部署应用服务器环境如下

环境版本JDK1.8.0_191Tomcat8.5.35

Ⅰ、新建一个maven项目(没有maven项目选项则需要下载对应插件

Ⅱ、配置源码管理

Ⅲ、配置maven项目编译,maven 执行的命令

 
  
 

Ⅳ、项目构建成功后部署应用服务器的配置

“增加构建后的操作步骤”-->“Send build artifacts over SSH

Ⅴ、部署应用服务器的自动化shell脚本

echo "####################Jenkins针对 项目 放到 /home下,且指向/home/auto-deploy.sh脚本,部署开始#####################"
#1、配置tomcat路径
TOMCAT_HOME=/home/tomcat8
#2、配置tomcat端口
TOMCAT_PORT=8080
#3、配置java项目名,不用写.war
PROJECT_NAME=im-server-1.0.0
pid=$(netstat -nlp | grep :$TOMCAT_PORT | awk '{print $7}' | awk -F"/" '{ print $1 }');
echo "根据端口号查询对应的pid"$pid
#杀掉对应的进程,如果pid不存在,则不执行
if [  -n  "$pid"  ];  then
    kill  -9  $pid;
    echo "杀掉对应的进程"
fi
echo "强制删除tomcat下的项目"$TOMCAT_HOME"/webapps/"$PROJECT_NAME
rm -rf $TOMCAT_HOME"/webapps/"$PROJECT_NAME
echo "强制删除tomcat下的项目"$TOMCAT_HOME"/webapps/"$PROJECT_NAME".war"
rm -rf $TOMCAT_HOME"/webapps/"$PROJECT_NAME".war"
echo '删除完成'
cd $TOMCAT_HOME"/webapps"
echo "查看当前"$TOMCAT_HOME"/webapps目录下的文件"
ls -a
echo "将远程打包的war包放入到"$TOMCAT_HOME"/webapps/下"
mv /home/$PROJECT_NAME".war" $TOMCAT_HOME/webapps
cd $TOMCAT_HOME/bin
https://blog.csdn.net/weixin_34092455/article/details/startup.sh
DATE_N=`date "+%Y-%m-%d %H:%M:%S"`
echo $PROJECT_NAME"  最新构建部署时间:${DATE_N}" >> https://blog.csdn.net/weixin_34092455/deploy_time.log #记录启动日志
echo "########################################"$PROJECT_NAME"启动成功########################################"

Ⅵ、我们回到任务栏,点击任务最后面的“立即构建”按钮。

Ⅶ、构建成功

六、授权策略

Ⅰ、在jenkins页面“系统管理”-->“全局安全配置”-->“授权策略“

最新文章
高清美女写真生成:用AI轻松打造你的虚拟女友!
作为3D数字模型创作软件,Daz 3D提供了丰富的角色库和定制选项,用户可以创建出立体的美女模型。这款工具不仅可以用于静态图片的制作,也可以用于动画角色的设计。与其他2D工具相比,Daz 3D的优越之处在于其可媲美真实人物的细节处理,缺点
用AI绘出魅力无限的美女写真,这些工具你不能错过!
限时免费,点击体验最近超火的AI生图神器,坐拥3000美女的大男主就是你! https://ai.sohu.com/pc/generate/textToImg?_trans_=030001_yljdaimn 在这个智能科技迅猛发展的时代,AI绘画技术已经不仅仅是画家们的玩物,而是成为了许多人实现
Win10系统下的局域网设置与配置指南
一、引言随着科技的不断发展,局域网已成为我们日常生活和工作中不可或缺的一部分。本文将针对Windows 10操作系统下的局域网设置与配置进行详细介绍,帮助用户更好地管理和使用局域网。二、Win10局域网设置步骤1. 启用网络发现在Win10系统
计算机网络安全 —— C# 使用谷歌身份验证器(Google Authenticator)(五)
Google Authenticator是谷歌推出的一款动态口令工具,旨在解决大家Google账户遭到恶意攻击的问题,在手机端生成动态口令后,在Google相关的服务登陆中除了用正常用户名和密码外,需要输入一次动态口令才能验证成功,此举是为了保护用户的信
郑州AI赋能,企业互联网营销关键词优化新篇章
郑州AI关键词优化推广,采用先进人工智能技术,精准定位企业需求,提升网络营销效果。助力企业实现互联网营销新升级,抢占市场先机。随着互联网技术的飞速发展,人工智能(AI)已经渗透到各行各业,成为推动进步的重要力量,在郑州这座充满
东风启辰官宣:加1.9万买新版VX6,15项升级,车里配洗衣机
东风启辰官宣:VX6 诗和远方版正式开售。其基于大平层 520 Pro 版(官方指导价 14.99 万元)打造,以升级改装包的形式发售,升级改装包原价 3 万元,限时权益价 1.8888 万元,升级后整车限时权益价 16.8788 万元,截止日期为 12 月 31 日。
漫蛙漫画app下载免费官网版下载
漫蛙漫画app免费APP是一款免费强大的漫画阅读软件,直接在手机上就可以轻松追漫画了。该软件为用户提供高质量的漫画内容,让你能够享受到精彩的阅读体验。你可以根据个人喜好进行字体和看漫模式的设置,让阅读更符合自己的需求。不管是韩漫
谷歌商店play商店
谷歌商店play商店(Google Play 商店)是一款安全可靠的系统工具软件,软件操作简单,上手容易,是你的贴心小助手,只为你打造高品质生活,在这里,你可轻松找到各种新奇的应用程序、游戏、电影、音乐书籍和小工具,大量的APP都在其中,你可
神马搜索如何提升搜索的时效性?
简介:什么是搜索的时效性?有哪些特征?如何优化?本文分享神马搜索在搜索排序时效性问题上的实践和探索,从基础特征优化开始,通过标注数据进行排序和召回模型优化,以及时效性排序的召回体系
腰酸背痛、盆底肌康复、阴道炎、同房……杨艳医生「悦妈晚答」9月8日QA
1、提问:二胎产后一个月左右严露干净了,一直有母乳喂养,但不太够奶有加奶粉,前天有点点感觉像来月经,但是沒来,当天晚上腰酸痛得很,这两天也酸痛,请问这是什么回事,腰酸痛和像要来月经有关系吗?还有盆底肌康复沒做有沒有和腰酸痛
相关文章
推荐文章
发表评论
0评