设为首页 收藏本站
查看: 2133|回复: 0

[经验分享] Jenkins+GIT+Maven+Shell 实现项目一键发布

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-5 08:52:56 | 显示全部楼层 |阅读模式
一、前言

众所周知,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

wKioL1hBNu3QhcgSAAD-7MkJKzc213.jpg
        选择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:测试连接
wKioL1hBOd_wLyfjAADklZzAl8s700.jpg
wKiom1hBOrKTrWmsAABRXUiA5K0931.jpg 通过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

   wKiom1hBPXqSJ9EPAAClodct5-Q560.jpg
2.maven构建,生成war包
wKiom1hBPc2gdXbTAAAv_EMfKgE424.jpg

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

wKioL1hBPfWQxIEFAACdv-RnuL0286.jpg
wKiom1hBPfbi2AyAAAByFsQZhKs465.jpg


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-309768-1-1.html 上篇帖子: Android-小项目之迷你英文词典-使用existing sqlite database-github第三库android-sqlite-asset-help 下篇帖子: GitLab安装配置使用总结 项目
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表