stcaac 发表于 2018-8-22 10:33:55

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>
  mv>

  选择add new credential, Username:git, Private Key Enter Directly, 输入刚才创建的>
  然后在gitlab的项目下, 点击右侧配置菜单 -> Deploy Keys, 用刚才创建的>  这样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>  这样两台服务器之间就可以通过ssh进行访问
  五、创建job
  1.源码管理,选择git

  2.maven构建,生成war包

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



页: [1]
查看完整版本: Jenkins+GIT+Maven+Shell 实现项目一键发布