jenkins 构建任务 —— 通过 Publish over SSH 将项目部署到远程服务器

 

部门的项目都是通过jenkins构建的,之前都是jenkins和tomcat以及jdk在一个服务器上,所以构建后的项目也只是在同一个服务器不同文件夹之间调用,最近新项目尝试使用微服务,整个项目有5个微服务项,第一次使用也没什么经验,发布后发现每个小服务竟然在16G内存情况下占比达到10%左右,整个项目5个微服务占比达到了50%左右,对于一个目前并不复杂的项目来说,显然占比有点多,因为之前的服务器有多个单独的项目,占比也有50%左右,所以如果微服务跟原来的项目放在一起整个服务器内存占比瞬间超过了90%以上,这显然有隐患。

 

于是新申请了服务器,微服务只需要安装jdk就好了,而发现新申请的centos7 服务器竟然自带了jdk1.8(不会是之前被用过的服务器回收的吧哈哈哈哈),不过追踪jdk安装路径,竟然是放在/usr/local/java 下。。。

 

回归正题。jenkins发布构建项目之前已经有经验了,现在只是要把新项目部署到新服务器上启动执行。

 

需求:

 jenkins构建项目后部署到新服务器并启动运行。

 

解决方案:

jenkins的构建原理:

jenkins将远程(git或svn服务器上)代码拉取到 /用户/.jenkins/workspace/,该目录下的每个文件夹都对应jenkins上的一个项目,对于maven项目,拉取到代码后会执行项目下的pom.xml文件来构建项目,所以最终项目生成的可执行文件在对应项目/target文件夹下,比如,我这里的jinkins上项目是test-microservice,则对应拉取的代码存放在/root/.jenkins/workspace/test-microservice,执行构建/root/.jenkins/workspace/test-microservice/pom.xml后生成的jar(或war)文件在/root/.jenkins/workspace/test-microservice/target目录。

 

之前的操作是在构建完项目后,直接通过jenkins的构建后操作编写shell代码,将对应jar(或war)移动到tomcat下。

现在新服务器没有tomcat,只有jdk,所以要将构建完后的jar(或war)移动到新服务器,并通过shell执行java -jar 项目名.jar 启动。

 

第一步,将jar(或war)移动到新远程服务器。

多个服务器之间传递文件,需要用到jenkins插件 Publish Over SSH,如果之前没有安装过,需要先安装该插件。

jenkins左侧 系统管理(Manage Jenkins)-->插件管理( GlobalTool Configuration)。

 

 

 

如果没安装过,则在可选插件中搜索 Publish Over SSH 安装。如果之前安装过则在“已安装”中可搜到。

 

 

 

如果没安装过,更多的时候是你当前的jenkins版本已经和推荐的 Publish Over SSH版本不匹配了,类似这样的:

 

 

 

这个时候,你要么更新到最新的jenkins,要么手动安装对应版本的Publish Over SSH插件。这里我选择第二种方式,手动安装Publish Over SSH。

去这里查找下载所需要的版本:http://updates.jenkins-ci.org/download/plugins/publish-over-ssh

因为我的jenkins是2017年安装的,所以找版本根据2017年的下载。下载后是一个 .hpi 文件。

在jenkins插件管理中选择“高级”——>上传插件。

 

 

 

上传完成后需要重启jenkins。

重启后重新进入jenkins查看插件安装成功。

 


 

 

第二步:配置Publish Over SSH。

要在jenkins所在的机器上生成秘钥。生成方式为:

ssh-keygen -t rsa         #产生公钥与私钥对

 

因为没加密码所以一路enter完成。此时在 用户名文件夹/.ssh/文件夹下生成两个文件:

is_rsa 为密钥文件
id_rsa.pub 为公钥文件

 

网上大部分文件都通过以下语句将公钥文件复制到目标服务器:

ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.51.xxx.xxx

 

而我直接用的复制粘贴。。。。还好后面也成功了~

!!!!!!

提示:这里大部分其他文章提示的是在目标服务器上添加 authorized_keys 文件。而我也是这么做的。。。在authorized_keys文件中追加源服务器的公钥。

!!!!!!

 

打开 系统管理——>系统设置,下拉到底部的Publish over SSH区域。

 

 

 

Passphrase:根据网上的资料说这里是生成秘钥时的密码,如果生成秘钥没有加密码,直接enter到底生成的,则这里不用填写。(保存后会有些·········表示空密码)。

Path to key:网上说这里填的是私钥的路径,没尝试,因为在下面填写了私钥key。

Key:私钥的值。要将前后的-----BEGIN RSA PRIVATE KEY-----和-----END RSA PRIVATE KEY-----带着。

 

点击SSH Servers的“增加”,新添目标服务器。

Name:你起的可以分辨服务器的名称。

Hostname:目标服务器的ip,一般服务器之间交互的话用内网ip就行。

Username:登录目标服务器的账号。

Remote Directory:将jenkins构建的文件发送到目标服务器的哪个文件夹下。

 

 

 

此时点击 右下角的 Test Configuration,据说有的能成功,反正我的是报错了。于是点开右下角的“高级”按钮。

 

 

 Use password authentication,or use a different key,该选项貌似是必须项,因为要登录目标服务器需要验证密码啊。。。

Passphrase/Password:此处填写目标服务器的登录密码。

Path to key:据说此处填写跟上面一样的私钥路径,这里没用到所以没填。

Key:私钥的值。据说这里填写跟上面一样的Key,而且这里可以覆盖上面的,那我理解这里是不是可以直接只填写这里不填写上面呢?结果验证上面不填是会报错的,但是这里不填只填上面竟然是可以的。

Port:目标服务器的端口,默认是22,根据自己服务器端口填写,我这里不是22一直没通,后来问了it部门才知道给开的别的端口,哭泣。。。

 

 

 

 

 

 

 

 

 

 

 

最终的填写内容如上,测试通过。

PS:刚才写本篇文章,试着删掉了上面的Key,竟然测试连接也成功了????

 

 

如果出问题可以先用 ssh root@10.0.0.1 -p您的端口号(-p和端口号之间没有空格)测试能否登录成功。

 

报错:

jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize SSH connection. Message: [Failed to connect session for config [xiaochengxu]. Message [java.net.ConnectException: Connection refused (Connection refused)]]

是可能配置的ip或port或账户等不对。

报错:

jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize SSH connection. Message: [Failed to connect session for config [xiaochengxu]. Message [Auth fail]]

是配置的密码不对。

 

 

 

到此,记录一下。

 

原文地址:https://www.cnblogs.com/jying/p/15467956.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


背景:我已经有一个ssh公钥和私钥了,绑定的是公司的码云但是绑定github是不允许的所以我需要在生成一个公钥和私钥第一步执行下面的命令, 至于如果生成ssh公钥点击这里ssh-keygen-trsa-C'your_email@example.com'-f~/.ssh/id_rsa_github然后一路回车 这里注意id_srs_g
在服务器程序的部署运维过程中,我们经常需要将文件从一个服务器拷贝到另一个服务器中。可以使用ftp,可以使用samba服务,这里我们介绍scp命令进行文件的拷贝和传输。scp是securecopy的缩写,scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。scp是加
#!/bin/bash#创建一个以.sc结尾的文件,把要操作的主机按顺序填写进去,多个IP另起一行顶格填写例如:#192.168.0.1#192.168.0.2#确保当前操作脚本的主机,已经可以免密到被操作主机,如未完成请自行解决。do_command(){hosts=`sed-n'/^[^#]/p'*.sc`forhost
打开终端安装openssh-server软件包:sudoaptupdatesudoaptinstallopenssh-server安装完成后,SSH服务默认自动启动,你可以通过以下命令校验服务运行状态:sudosystemctlstatusssh如果防火墙开启,则需要让防火墙允许ssh通过sudoufwallowssh注意事项VMware虚拟
环境centos7.9,.NET5一、Jenkins搭建1)下载Jenkins的war包在\home目录建一个jenkins目录放jenkins的包#进入\home目录cd\home#创建jenkins目录mkdirjenkins在jenkins目录下载war包#进入jenkin目录cd\home\jenkins#下载jenkins的war包wgethttp://mirrors.jenkin
dropbear下载地址:https://matt.ucc.asn.au/dropbeareleases/dropbear-2020.81.tar.bz2软件版本号说明opensuse 15.3 ssh8 dropbear2020.81     安装编译器和依赖:zypperinstallzlib-develgcc配置安装目录:./configure--prefix=/
1.前言前面基本上已经都讲完了MHA的原理部分,这小结主要是动手实操一下MHA2.前提准备1.首先下载MHA软件包(1)#下载mha软件mha官网:https://code.google.com/archive/p/mysql-master-ha/github下载地址:https://github.com/yoshinorim/mha4mysql-manager
前期准备确定服务器可以上网apt源配置完毕安装ssh使用apt安装openssh服务。sudoapt-getinstallopenssh-server启动sshroot@cka01:~#sudo/etc/init.d/sshstart#确定22端口存在并存活root@cka01:~#ss-tnl|grep22LISTEN01280.0.0
1.首先你需要在github上或者gitlab上建立了自己的账户,项目组已经将你加入了group。2.打开gitbash,输入命令ls-al~/.ssh如果显示如下图:则表示生成过key,可以去执行第4个步骤。否则的话执行第三个步骤生成key  3.这个时候输入命令ssh-keygen-trsa-C"min~~~~"  这
简述Linux如何远程拷贝,限速和断点续传scp命令 –远程拷贝文件scp拷贝本地文件filename到远程机器192.168.188.188服务器的/datamp目录下scp-P61204-l40000filenameusername@192.168.188.188:/datamp/ -PportSpecifiestheporttoconnecttoontherem
最近两天发现push代码到GitHub上时,发现必须得用SSH或者Token的方式。直接上干货1.SSH方式 1.1在桌面上GitBashHere 1.2检查是否已存在SSH   如果已存在,则直接进入.ssh目录1.3不存在,则创建一个SSHkey(如果不需要设置输入密码,一直回车就好)$ssh-keygen
安装命令yuminstallopenssh-clientsLinuxscp命令用于Linux之间复制文件和目录。scp是securecopy的缩写,scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。scp是加密的,rcp 是不加密的,scp是rcp的加强版。语法scp[-1246BCpqrv][-ccipher][-F
1.环境介绍1.本地为windows2.远程为linux2.本地安装ssh环境我这里下载了git,所以在环境变量里把/git/usr/bin加进去就可以了3.本地vscode安装远程开发插件Remote-development是一个集成插件,安装它就可以了4.生成ssh秘钥对,并将公钥放入远程机#本地机生成秘钥对$s
文章链接故障表现在使用jumperver登录AWSec2实例的时候发现ssh配合秘钥登录的时候无法登录,具体报错如下:ssh-i/path/xx.pemuser@10.0.11.190Permissiondenied(publickey,gssapi-keyex,gssapi-with-mic).问题排查过程在发现无法登录的第一时间等了AWS平台查
1.给root用户设置密码sudopasswdroot2.修改sshd配置文件sudonano/etc/ssh/sshd_config修改PermitRootLoginyes把PermitRootLoginwithout-password或者PermitRootLoginprohibit-password改为PermitRootLoginyes,注意PermitRootLoginwithout-password可能被注
手上有一台12.4的ios机器,通过SecureCrt可以ssh上去,但是每次连接的时候都会报“KeyboardInteractive”错误,skip即可,但是通过ssh客户端连接,却无法正常连接,错误提示如下:@127.0.0.1:Permissiondenied(publickey,password,keyboard-interactive) 开始以为是KeyboardInteract
1、创建私有CA并进行证书申请。1.创建CA所需要文件#生成证书索引数据库文件touch/etc/pki/CA/index.txt#指定第一个颁发证书的序列号echo01>/etc/pki/CA/serial2、生成CA私钥cd/etc/pki/CA/(umask066;opensslgenrsa-outprivate/cakey.pem2048)3、生成CA自签名证书op
克隆两台虚拟机加master三台组成一个集群 所克隆的虚拟机需要修改主机名,ip 永久修改主机名 hostnamectlset-hostnamenode1或node2 ip 方式1: 通过可视化界面直接修改 方式2: vim/etc/sysconfigetwork-scripts/ifcfg-ens33 然后重启网络:servicenetworkrestart
SSH配置文件中加密算法没有指定,默认支持所有加密算法,包括arcfour,arcfour128,arcfour256等弱加密算法。但是目前RC4是不安全算法若数据库安全性要求比较高,这个漏洞还是必须要修复的,下面记录下OracleRAC修复过程,此修复过程不影响现有系统。如有不当欢迎斧正。1、root权限用户才能
问题:通过XShell等客户端使用ssh方式通过root用户连接Ubuntu虚拟机时,出现SSH服务器拒绝了密码,请再试一次。解决:安装ssh,开启root用户登录权限。1安装ssh-serverroot@ubuntu:/etc/apt#apt-getinstallopenssh-server安装ssh-server2安装ssh-clientroot@ubuntu:/etc/apt#ap