jenkins gitlab maven tomcat实现自动集成、打包、远程部署

版权声明:不为无益之事,何以遣有涯之生。 https://blog.csdn.net/lj402159806/article/details/83821014

jenkins gitlab maven tomcat实现自动集成、打包、部署

jenkins安装看https://blog.csdn.net/lj402159806/article/details/83625607

配置java、git、maven路径

  1. 首先在jenkins服务器上安装java、git和maven
  2. 进入jenkins配置页面
  3. 点击系统管理->全局工具配置进入配置页面
  4. 设置jdk别名和JAVA_HOME
  5. 设置git别名和git可执行文件的路径
  6. 设置maven别名和MAVEN_HOME
  7. 以上三个都不勾选自动安装

安装插件

Gitlab Plugin
#安装之后才可以在系统配置中指定gitlab的IP地址
Git Plugin
Git Client Plugin
#用于jenkins在gitlab中拉取源码
Publish Over SSH
#用于通过ssh部署应用
Maven Integration plugin
#用于新建maven项目

配置gitlab plugin

  1. 点击系统管理->系统设置->找到gitlab
  2. 取消勾选Enable authentication for ‘/project’ end-point
  3. 设置Connection name,比如gitlab
  4. 设置Gitlab host URL,也就是gitlab的地址
  5. 设置Credentials,使用gitlab api token,api token可以在账户settings的Account标签栏中找到(Private token)
  6. 设置完毕点击test connection测试

配置ssh免密登录

  1. 在jenkins服务器上输入ssh-keygen -t rsa -C "[email protected]" -b 4096生成一个ssh key
  2. ssh key生成后~/.ssh/目录下会多出id_rsa(私钥)与id_rsa.pub(公钥)
  3. 将id_rsa与id_rsa.pub复制到jenkins主目录的.ssh目录下sudo mv id_rsa id_rsa.pub /var/lib/jenkins/.ssh/,主目录可以在系统管理->系统设置->主目录查看
  4. 将公钥添加到远程应用服务器sudo ssh-copy-id -i /var/lib/jenkins/.ssh/id_rsa.pub [email protected]

注意不使用ssh-copy-id命令而是直接把id_rsa.pub内容直接复制到远程应用服务器的authorized_keys内下一步操作最后test connection不会成功的

配置publish over ssh plugin

点击系统管理->系统设置->找到Publish over SSH

设置Jenkins SSH Key

  1. Passphrase输入ssh key密码,如果创建ssh key时无密码则可留空
  2. Path to key输入id_rsa的绝对路径/var/lib/jenkins/.ssh/id_rsa
  3. Key输入id_rsa内的密钥(使用cat /var/lib/jenkins/.ssh/id_rsa可查看)
  4. Path to key与Key二选一即可

设置SSH Servers

  1. name用于标识远程服务器名
  2. hostname输入远程服务器ip地址
  3. username输入使用ssh登录远程服务器的用户
  4. remote directory可留空
  5. 设置完毕点击test connection测试

配置部署任务

  1. 点击新建任务,输入任务名称,选中构建一个maven项目后点击确定
  2. General->GitLab Connection选择gitlab plugin内设置的gitlab服务器
  3. 源码管理->git->Repository URL输入git项目地址(如[email protected]:test.git)
  4. Credentials->add->SSH username with private key->Username可随意,Private Key输入jenkins服务器上的id_rsa密钥(使用cat查看)
  5. 构建->增加构建步骤->调用顶层maven目标->Maven 版本选择之前设置的maven别名,目标输入clean package -Dmaven.test.skip=true(该步骤是使用maven编译war包)
  6. 构建->增加构建步骤->send files or execute commands over ssh->Name选择SSH Servers里配置的远程服务器,Source files填**/*.war,Remove prefix填target
  7. 构建后操作->增加构建后操作步骤send build artifacts over ssh->name选择SSH Servers里配置的远程服务器,Exec command填入远程服务器上的部署脚本路径(/opt/deploy.sh)

注意SSH Servers内的remote directory与send files or execute commands over ssh内的Remote directory都留空的话默认就会传输到ssh登录用户的home目录下面,所以这两个目录怎么填写自己尝试

远程服务器部署脚本

在远程服务器上创建脚本

sudo vim /opt/deploy.sh

添加如下内容

#!/bin/sh

tomcat_path=/opt/apache-tomcat-8.0.50
ShutDownTomcat=${tomcat_path}/bin/shutdown.sh
StartTomcat=${tomcat_path}/bin/startup.sh

echo "============删除旧的war包==================="
rm ${tomcat_path}/webapps/test.war

echo "============删除tomcat下旧的文件夹============="
rm -rf ${tomcat_path}/webapps/test

echo "======拷贝编译出来的war包到tomcat下======="
cp /home/gavinandre/test.war  ${tomcat_path}/webapps/test.war

echo "====================关闭tomcat====================="
${ShutDownTomcat}

echo "================sleep 10s========================="
for i in {1..10}
do
        echo $i"s"
        sleep 1s
done

export BUILD_ID=DotKillMe

echo "====================启动tomcat====================="
${StartTomcat}

最后给予执行权限

sudo chmod +x /opt/deploy.sh

总结

jenkins的使用非常不友好,网上博客很多都写得不明不白很多细节都没有提到,在公司没有部署过jenkins并且自己之前也从没接触过jenkins的情况下,完成jenkins的自动部署真的是一件非常不容易的事情

猜你喜欢

转载自blog.csdn.net/lj402159806/article/details/83821014