首页 > 代码库 > Jenkins+GIT+Maven+Shell 实现项目一键发布

Jenkins+GIT+Maven+Shell 实现项目一键发布

一、前言


众所周知,Jenkins默认情况下可以实现项目更新(通过SVN,但我们公司使用GIT),和项目发布,通过(MAVEN插件),但是这种情况下发布到一些容器底下(如Tomcat)时,经过多次发布后JVM会报OutOfMemoryError PermGen space,这个原因是由于这些容器在覆盖老项目后并不会释放老项目内存永久区的资源,久而久之,导致系统永久区内存溢出。为解决这个问题,我们只有通过发布后重新启动容器才能解决该问题。那有什么办法可以使容器在发布新项目后自动重启呢?重启过程中,我们希望容器正在处理的作业安全完成后(如quartz作业执行完后),容器再重启,如何做到?本文要与大家分享的便是其中一种便利安全的方法。




二、Jenkins安装与配置


Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能。


安装jenkins稳定版本

       sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo 

       sudo rpm --import http://pkg.jenkins-ci.org/redhat-stable/jenkins-ci.org.key 

       sudo yum install jenkins

       注意:这种方法无法下载rpm,所以使用下面这种方法


       rpm下载地址:https://mirror.tuna.tsinghua.edu.cn/jenkins/redhat-stable/


       上传到指定目录

       yum localinstall jenkins-2.7.2-1.1.noarch.rpm


       在jenkins配置文件增加jdk路径

       vim /etc/rc.d/init.d/jenkins

       /usr/local/java/jre/bin/java


       开启iptables 8080过滤


       启动jenkins


        systemctl start jenkins


访问jenkins

http://192.168.2.64:8080/

     获取密码登录

/var/lib/jenkins/secrets/initialAdminPassword


    安装maven插件


三、安装git插件


  在Jenkins安装的服务器上, 创建一对rsa key, 并配置


ssh-keygen -t rsa -C "jenkins"

# 一路回车, 默认路径和文件名, 不要密码

cd ~/.ssh

mv id_rsa id_rsa_tho

mv id_rsa.pub id_rsa_tho.pub


技术分享

选择add new credential, Username:git, Private Key Enter Directly, 输入刚才创建的 id_rsa_tho 的内容, 注意这个是私钥,并且要把注释也复制进去


然后在gitlab的项目下, 点击右侧配置菜单 -> Deploy Keys, 用刚才创建的 id_rsa_tho.pub 的内容, 创建一个key, 名称为 Readonly Key for Jenkins, 如果有多个项目都需要这个私钥, 则在每个项目的deploy keys下enable这个key即可.

这样git和jenkins这两台服务器就建立了信任关系


四、安装Publish Over SSH插件


安装步骤:


系统管理→管理插件→可选插件→Artifact Uploaders→Publish Over SSH


 系统设置(所有的高级全部展开)

公共配置:


Passphrase:密码(key的密码,如果你设置了)


Path to key:key文件(私钥)的路径


Key:将私钥复制到这个框中


Disable exec:禁止运行命令


私有配置:


SSH Server Name:标识的名字(随便你取什么)


Hostname:需要连接ssh的主机名或ip地址(建议ip)


Username:用户名


Remote Directory:远程目录


Use password authentication, or use a different key:可以替换公共配置(选中展开的就是公共配置的东西,这样做扩展性很好)


私有配置的高级:


Port:端口(默认22)


Timeout (ms):超时时间(毫秒)默认即可


Disable exec:禁止运行命令


Test Configuration:测试连接 

技术分享

技术分享通过ssh访问192.168.2.77服务器,必须将公钥证书导入到客户端服务器上,也就是192.168.2.77上,命令如下:

scp id_rsa_tho.pub root@192.168.2.77:/root/.ssh/authorized_keys

这样两台服务器之间就可以通过ssh进行访问


五、创建job

  1.源码管理,选择git

  技术分享

2.maven构建,生成war包

技术分享


3.选择指定war要发布的服务器

 

技术分享

技术分享


本文出自 “技术文档” 博客,请务必保留此出处http://jiangzm.blog.51cto.com/8314502/1878941

Jenkins+GIT+Maven+Shell 实现项目一键发布