jenkins 自动化部署

时间:2022-11-17 18:19:50

jenkins + gitlab + maven + tomcat 自动化部署

为了实现自动化部署也是折腾了好几天,也参考了很多的博客,走了一些弯路,但是最终自己还是配置成功了,现在就把它记录下来,方便自己查阅,也分享给大家。如果有错误的地方或设置不好的地方请指出,谢谢!

1、安装jdk
2、安装maven
3、安装git
4、安装tomcat
5、安装jenkins

jenkins部署项目

安装完上面的所有软件之后就进入了jenkins ,目前我是已经安装好的了现在就演示一下配置。

1、在使用jenkins 直线需要安装一些插件

SSH plugin 及其相关插件
GitLab Plugin 及其相关插件
GitHub plugin及其相关插件
Publish over SSH

jenkins 自动化部署

jenkins 自动化部署

jenkins 自动化部署

2、进入全局工具配置 具体配置见下图:

jenkins 自动化部署

jenkins 自动化部署

jenkins 自动化部署

3、配置ssh
点击【系统管理】 再点击右侧【系统设置】进入编辑模式
找到Publish over SSH 如果没有请安装插件 具体的配置如下:

jenkins 自动化部署

jenkins 自动化部署

密钥生成命令
进入/etc/sudo

sudo vi /etc/sudoers

在文件中加入登录*限,如我自己的
zdst ALL=(ALL:ALL) ALL
jenkins 自动化部署

使用命令生成密钥

ssh-keygen –t rsa
cd ~/.ssh
sudo touch authorized_keys
cat id_rsa.pub
sudo chmod 777 authorized_keys
sudo vi authorized_keys #把公钥拷贝进去保存
cat id_rsa #查看私钥 ,把它拷贝到上图中的密钥里面去

自此,基本配置告一段落,下面我们开始尝试发布一个maven项目
注意我们把项目构建到jenkins/workspace 目录下需要先给这个目录添加读写权限
我的jenkins安装在/var/lib/jenkins

sudo chmod 777 -R /var/lib/jenkins/workspace

由于我们要发布到tomcat,也需要给tomcat 读写权限

sudo chmod 777 -R /usr/lib/tomcat/apache-tomcat-7.0.76

1、首先点击右侧【新建】进入配置界面,填写“项目名称”和“描述”
jenkins 自动化部署
jenkins 自动化部署

2、填写“git项目路径”和添加拉取项目的权限

jenkins 自动化部署

点击【Add】进入下面的编辑页面
jenkins 自动化部署

3、Build
jenkins 自动化部署

jenkins 自动化部署

具体shell命令

#!/bin/bash 
#copy file and restart tomcat
#此处写BUILD_ID是因为job完成之后会自动关闭tomcat,也没弄清原因
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_121
export BUILD_ID=dontKillMe

#tomcat安装目录
tomcat_path="/usr/lib/tomcat/apache-tomcat-7.0.76"
#项目名称
project=my-maven-demo
#war包名称
war_name=my-maven-demo.war
#jenkins 打包路径 注意workspace后面的目录my-maven-demo是你上面新见的jenkins项目名称
file_path=/var/lib/jenkins/workspace/my-maven-demo/target
#停止tomcat
$tomcat_path/bin/shutdown.sh

sleep 3s
echo "rm -rf ${tomcat_path}/webapps/my-maven-demo*"
#正式环境需要先备份,此处只是演示所有未做此操作
#删除旧的文件
rm -rf ${tomcat_path}/webapps/my-maven-demo*
#拷贝tomcat
cd $file_path
cp ${war_name} ${tomcat_path}/webapps/
cd $tomcat_path/webapps/
unzip ${war_name}
# rm -rf ${war_name}
sleep 5s

#$tomcat_path/bin/startup.sh
cd $tomcat_path/bin/

./startup.sh
echo "server restarted"