部署Jenkins参照另一篇博客:

centos7安装Jenkins及其卸载

一、jenkins相关插件的安装

1、安装Publish Over SSH插件用于SSH连接远程的服务器。

登录 jenkins 管理系统首页,打开“系统管理”--“管理插件”  搜索 Publish Over SSH 然后勾选安装

2、安装 NodeJs插件 用于vue项目打包构建。

打开“系统管理”--“管理插件”  搜索 nodejs 然后勾选安装

打开“系统管理”--“Global Tool Configuration”   拉到底部 配置  node 版本,如图:

二、配置远程服务器的连接

1、打开“系统管理”--“系统设置”  找到 “Publish over SSH” 项 ,如果是帐号密码登录的Passphrase填写密码Username填写用户名,path to key 为空就可以了。也可以通过远程服务器用的是ssh登录,通过ppk密钥进行连接。点击 Test Configuration 按钮测试连接是否成功

三、配置自动部署任务

1、新建任务:点击“新建”--填写任务名称,选择“构建一个自由风格的软件项目”然后保存,如图:

2、配置git,进入任务配置,选择源码管理 ,我这里是git下载项目,所以选择 git ,因为是开源的,所以没有填写账号密码,如图

3、设置构建环境,选择 Provide Node & npm bin/ folder to PATH  然后选择之前安装插件时候配置的node版本,如图

4、配置项目自动化打包,选择 增加构建步骤 ---Excute shell  这个是运行相关的sh命令

cd /var/lib/jenkins/workspace/test
npm install -g cnpm --registry=https://registry.npm.taobao.org
rm -rf dist
rm -rf finance
rm -rf finance.tar.gz
cnpm install
cnpm run build
mv dist finance
tar -zcvf finance.tar.gz finance

5、把打包好的项目文件发布到远程服务器

选择“构建后操作步骤”---“Send build artifacts over SSH” 。

Name:第三步创建的远程服务器名称

Source files:本地需要传输过去的文件路径

Remove prefix:过滤掉的目录名

Remote directory:远程服务器的保存路径

Exec command:传输完成后在远程服务器执行的sh命令

**/dims.tar.gz

/tomcat/webapps

cd /usr/local/src/tomcat/apache-tomcat-8.0./webapps/
rm -rf finance
tar zxvf finance.tar.gz
rm -rf finance.tar.gz

6、保存后点击“立即构建”查看任务是否构建完成,Console Output 菜单可以查看构建日志。

四、遇到的问题

1、拉取代码超时报错

[test] $ /bin/sh -xe /tmp/jenkins5540140486901721898.sh
+ cd /var/lib/jenkins/workspace/test
+ rm -rf dist
+ npm install > yorkie@2.0. install /var/lib/jenkins/workspace/test/node_modules/yorkie
> node bin/install.js CI detected, skipping Git hooks installation > node-sass@4.9. install /var/lib/jenkins/workspace/test/node_modules/node-sass
> node scripts/install.js Downloading binary from https://github.com/sass/node-sass/releases/download/v4.9.3/linux-x64-72_binding.node
Cannot download "https://github.com/sass/node-sass/releases/download/v4.9.3/linux-x64-72_binding.node": HTTP error Not Found Hint: If github.com is not accessible in your location
try setting a proxy via HTTP_PROXY, e.g. export HTTP_PROXY=http://example.com:1234 or configure npm proxy via npm config set proxy http://example.com:8080 > electron@4.0. postinstall /var/lib/jenkins/workspace/test/node_modules/electron
> node install.js

需要用到淘宝镜像做代理,否则连接不上,参考:http://npm.taobao.org/

2、推送远程服务器内存溢出

报错信息如下:

SSH: Connecting from host [localhost.localdomain]
SSH: Connecting with configuration [] ...
SSH: Disconnecting configuration [] ...
FATAL: GC overhead limit exceeded
java.lang.OutOfMemoryError: GC overhead limit exceeded
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:)
Finished: FAILURE

报错信息二:

java.lang.OutOfMemoryError: Java heap space
at com.jcraft.jzlib.Deflate.deflateInit(Deflate.java:)
at com.jcraft.jzlib.Deflate.deflateInit(Deflate.java:)
at com.jcraft.jzlib.Deflater.init(Deflater.java:)
at com.jcraft.jzlib.Deflater.<init>(Deflater.java:)
at com.jcraft.jzlib.Deflater.<init>(Deflater.java:)
at com.jcraft.jzlib.GZIPOutputStream.<init>(GZIPOutputStream.java:)
at com.jcraft.jzlib.GZIPOutputStream.<init>(GZIPOutputStream.java:)
at com.jcraft.jzlib.GZIPOutputStream.<init>(GZIPOutputStream.java:)
at hudson.console.AnnotatedLargeText.writeHtmlTo(AnnotatedLargeText.java:)
at hudson.console.AnnotatedLargeText.writeLogTo(AnnotatedLargeText.java:)
at org.kohsuke.stapler.framework.io.LargeText.doProgressText(LargeText.java:)
at hudson.console.AnnotatedLargeText.doProgressiveHtml(AnnotatedLargeText.java:)
at java.lang.invoke.LambdaForm$DMH/.invokeVirtual_L3_V(LambdaForm$DMH)
at java.lang.invoke.LambdaForm$BMH/.reinvoke(LambdaForm$BMH)
at java.lang.invoke.LambdaForm$MH/.invoker(LambdaForm$MH)
at java.lang.invoke.LambdaForm$MH/.invokeExact_MT(LambdaForm$MH)
at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:)
at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:)
at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:)
at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:)
at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:)
at org.kohsuke.stapler.MetaClass$.doDispatch(MetaClass.java:)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:)
at org.kohsuke.stapler.MetaClass$.doDispatch(MetaClass.java:)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:)
at org.kohsuke.stapler.MetaClass$.dispatch(MetaClass.java:)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:)
Caused: javax.servlet.ServletException
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:)
at org.kohsuke.stapler.MetaClass$.doDispatch(MetaClass.java:)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:)
at org.kohsuke.stapler.MetaClass$.dispatch(MetaClass.java:)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:)
at org.kohsuke.stapler.MetaClass$.doDispatch(MetaClass.java:)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:)
at org.kohsuke.stapler.Stapler.service(Stapler.java:)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:)
at hudson.util.PluginServletFilter$.doFilter(PluginServletFilter.java:)
at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:)
at hudson.util.PluginServletFilter$.doFilter(PluginServletFilter.java:)
at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:)
at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:)
at hudson.security.ChainedServletFilter$.doFilter(ChainedServletFilter.java:)
at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:)
at hudson.security.ChainedServletFilter$.doFilter(ChainedServletFilter.java:)
at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:)
at hudson.security.ChainedServletFilter$.doFilter(ChainedServletFilter.java:)
at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:)
at hudson.security.ChainedServletFilter$.doFilter(ChainedServletFilter.java:)
at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:)
at hudson.security.ChainedServletFilter$.doFilter(ChainedServletFilter.java:)
at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:)
at hudson.security.ChainedServletFilter$.doFilter(ChainedServletFilter.java:)
at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:)
at hudson.security.ChainedServletFilter$.doFilter(ChainedServletFilter.java:)
at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:)
at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:)
at hudson.security.ChainedServletFilter$.doFilter(ChainedServletFilter.java:)
at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:)
at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:)
at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:)
at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:)
at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:)
at org.eclipse.jetty.server.Server.handle(Server.java:)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:)
at org.eclipse.jetty.io.ChannelEndPoint$.run(ChannelEndPoint.java:)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:)
at java.lang.Thread.run(Thread.java:)

未找到问题的解决办法,但是换了另一种方法推送到远程服务器,写一个脚本文件,采用远程复制的方法(scp)

记录一下具体的操作步骤

工程配置信息如下:

注意:从本地仓库gitlab拉取代码需要配置git凭证,参考我的另一篇文章:

tomcat部署Jenkins并配置jdk、maven、git

构建环境选择nodejs

构建执行的shell命令

cd /var/lib/jenkins/workspace/design
npm install -g cnpm --registry=https://registry.npm.taobao.org
rm -rf design
cnpm install
cnpm run build
mv dist design
cd /var/lib/jenkins/workspace/
bash module.sh design

module.sh脚本文件如下:

[root@localhost ~]# cd /var/lib/jenkins/workspace/
[root@localhost workspace]#
[root@localhost workspace]# ls
design design@tmp dims dims@tmp jsnk module.sh WEB-INF
[root@localhost workspace]#
[root@localhost workspace]# cat module.sh
#!/bin/bash
server2=('192.168.2.226' '192.168.2.227')
if [[ $ == "dims" || $ == "design" || $ == "jsnk" ]]; then
echo "开始复制 $1..."
cp -r /var/lib/jenkins/workspace/WEB-INF /var/lib/jenkins/workspace/$/$
echo "成功复制 $1..."
echo "开始移动 index.html $1..."
mv /var/lib/jenkins/workspace/$/$/index.html /var/lib/jenkins/workspace/$/$/WEB-INF
echo "成功移动 index.html $1..."
for server in "${server2[@]}";do
echo "开始删除远程服务器$1原文件"
ssh root@${server} "rm -rf /usr/local/tomcat/webapps/$1"
echo "远程服务器$1原文件已经被删除"
echo "开始上传到远程服务器 ${server}..."
scp -r /var/lib/jenkins/workspace/$/$ root@${server}:/usr/local/tomcat/webapps
echo "上传到远程服务器 ${server}成功。。。"
done
echo 'build success...'
else
echo "传入了错误的参数,目前只支持【dims,jsnk,design】..."
fi
[root@localhost workspace]#

在执行脚本推送到远端服务器上的时候报错了,信息如下:

报错信息一:

Host key verification failed.
lost connection
Build step 'Execute shell' marked build as failure
Finished: FAILURE

报错信息二:

Warning: Permanently added '192.168.2.227' (ECDSA) to the list of known hosts.
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
lost connection
Build step 'Execute shell' marked build as failure
Finished: FAILURE

根据报错信息,需要添加ssh信任,实现无密传输即秘钥传输

远程服务器秘钥信息226

[root@tomcat1 ~]# cd .ssh/
[root@tomcat1 .ssh]#
[root@tomcat1 .ssh]# ll
total
-rw-------. root root Jun : authorized_keys
-rw-------. root root Jun : id_rsa
-rw-r--r--. root root Jun : id_rsa.pub
-rw-r--r--. root root Jun : known_hosts
[root@tomcat1 .ssh]#
[root@tomcat1 .ssh]# cat id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAugoSUxtt32aAKvqiug5AoepqUFGYjcxrIZdJyX7BrloneBIG
ZWGR4IozHmbRJaylxOyzZwOjL3gS8tE/C6SOLKpmqJOR5FtQMLOMZWYjtNxBQhR4
h/E0IvSPxewx+9N2SHzBsHhN1A8eVo0ncFmeKgi2y+NbCHkBlvJ4amCBK0fg8s27
R0B+z3FlL4VkD4qQNWkon4RcaImojt2GW4xNbPBc/kkWEDYUlvhO/wAplKKnRJ4C
H4JrafLBYF4DqADkhPgrGZZbrwilv5XbgDGIcXhfT2Q3qJxsOEMHQEtTrweEwyLh
PRAXdrNMaDxIwxiDdNXqJVd3Aop/zEE8voN/6wIDAQABAoIBAQCdnkzaNqIHJUuv
njviUJL326iJNih+8tNNWWU9nvQvaNiJxRPAL0Mtr0kSF+BZAAZOapCw1Ycbf6rm
KNw2XAvM0e46IxT3GVo+eNCZVEkqQXXUq41W98fJWdS5xpyulAFh9rkPb03ZPZnh
kKP6byMuz8U3xv9olUUAg5v73JlzdXaHK8HwssSPT0Gi9NxBPMFzXwL657VJTnDR
sqSKK0ymjiyLHuVs6ZDAWqTv/yrltfkkaBv1w6yZ+NvQKiqEmVdq0Zpyp7X07TRo
KNeVHid+ZMfYz7sLOaTe4wLoY7eG+YTUdNMhIbkSOAU0SZM+8FSVXunAHscrPFcT
9pORacuxAoGBAO1wimt44FWCj32m/cTr1SDklFzJmj2nUd+aYe4SDZUSnEi4bZRu
6qN0yOlp5d8HTPjQScKMmXE/DCTU7Qabc5R3Lcxd8FD/96jOtu08qDCvh58t/Kqa
ZjBvWTVcxX1PhG8N6sZHz20MVO//BFK1YvcrCi253+zsg4jAq+Ytryz5AoGBAMiU
8rgUnlVNjBWLpOp/jPEiTw1cZWVQd/CkUTkTZnu+UDXjDmZJLZ0B/OoqJtBdPieS
SYXFFWcUTEBy+lsyf1MDWicqZvP0oR7/S8liYwWWCaMXMbD+ri5IYHRbipiJuwLx
cF/LJAFy6CnQRjlDeX5NIIE4aXwy9LqZh44H0QEDAoGBAME3qryIUe3j4Aa9ZJbh
3r70o7LaL9TqGtseE4EbWcgsq9cVlb6LgA9h0rj2/yO+GioDvXI+3gLk7mnuh6+v
wp9XWIKNEymnEo9hIETv7mIoBPJJBuqB2JSjl/Gvu9ocYkXJCnsuJqKzvU7LtGXl
y1IdyRuqvYlccjFPsNMP7BRpAoGAPHibTF/69CCy8PPuvjvCFBiR2KdYclj2L/h5
/EkbBodzyysu9ittsv4cb8RRe1QBHxD9VXT7ZN47ttpzG/d3Z2GFVnV0IGxJ/vxc
rtQYomB/e0nM012UyaNMYQgQGri7RsHfbSHjMwSfdauy4CS1hhxehlaphqYeHfuX
YHx+yF0CgYEAnxMCwNBCkgrHFHm1baOkbMrWHWoS4GCs0fArDdwlfs4rjJTRwc/F
guD05725L+ERCakdir5s4FfcaT0OPnjpwDW1zTBPPf1rp5Hdim9M6KxuCp8nK3WZ
2CdjwTXOJSljRGev7Iz3mH1k0tBEpubTz0CUgpXRROhPvSJDbuP3+2w=
-----END RSA PRIVATE KEY-----
[root@tomcat1 .ssh]#
[root@tomcat1 .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6ChJTG23fZoAq+qK6DkCh6mpQUZiNzGshl0nJfsGuWid4EgZlYZHgijMeZtElrKXE7LNnA6MveBLy0T8LpI4sqmaok5HkW1Aws4xlZiO03EFCFHiH8TQi9I/F7DH703ZIfMGweE3UDx5WjSdwWZ4qCLbL41sIeQGW8nhqYIErR+DyzbtHQH7PcWUvhWQPipA1aSifhFxoiaiO3YZbjE1s8Fz+SRYQNhSW+E7/ACmUoqdEngIfgmtp8sFgXgOoAOSE+CsZlluvCKW/lduAMYhxeF9PZDeonGw4QwdAS1OvB4TDIuE9EBd2s0xoPEjDGIN01eolV3cCin/MQTy+g3/r root@tomcat1
[root@tomcat1 .ssh]#
[root@tomcat1 .ssh]# cat known_hosts
192.168.2.230 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLd5yD0VDlRutV7gyxiH3LZaIUqVLvAM8y9Yb33DMabevXMgbwfDWSvdl3W7bSEiceGGOfQeB1CrmidCXdHNzrE=
[root@tomcat1 .ssh]#
[root@tomcat1 .ssh]# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4WXCLfU36bQug31Ob65QUaRJCJhivlYHuDHlPfntAf3BDCEtTpiBzGgKOTg+ZmWAyHzyA0W8+BKSGBYiWyYxBfmh3PJLDc6Gw5y+RERu2+9XnKIyT/gQQ/cQ7jiA4VaGTYkK0Ei/0HfsCB+I2vrhfSPsor0zvfQcDO5fI/0QnoOLH9DnpLPST53li28K3jaglIFBoL8jH7cXAD0NtbGVl9R7vI57HRM0Bi0fofG5sLaF2FqrUJAc50d2AbIprpv7xAdCCjmvHjNsZgeP0JWVC/MJqNqC4BpjQq0heQZG4zCvPhiYhfYHp8ZuP1ON5wmB024nq6lvbvWsXjlm1tIKP gjx@cnbisoft.com
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDgAxa9DsphdOT8l3TeuJXp+bmu9P/gY6hIsMUaCdfEqD1DXVGv+2tipsX4IDmNIGBmseSJrVcOtMM8X7tMaPPzzUXXNP6vvDmHPOh57F77FEI89PvghdzcdiKnmGEbtmxwXwX8oad5TMWmLAyA0rrrXGUdrh44aMR+sDZymOh6p82xcULZKgmzwxcU+cN/egEP7dWiY6rbFpLMrXPryKDqiMQamRR786v4bQNLAs750dg4OFoEx9beY05QklSTotZ7pSpt2P3nzm14Ed9g2bync31ELi2HKfbtdw9Yi4qpJyrI/peKr4MOqi2Cvf4vksu6izGYXt2gtnhNAWaVkxuB jenkins@localhost.localdomain
[root@tomcat1 .ssh]#

Jenkins服务器230秘钥信息

root用户:

[root@localhost ~]# cd .ssh/
[root@localhost .ssh]#
[root@localhost .ssh]# ll
total
-rw-------. root root Jun : authorized_keys
-rw-------. root root Jun : id_rsa
-rw-r--r--. root root Jun : id_rsa.pub
-rw-r--r--. root root Jun : known_hosts
[root@localhost .ssh]#
[root@localhost .ssh]# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6ChJTG23fZoAq+qK6DkCh6mpQUZiNzGshl0nJfsGuWid4EgZlYZHgijMeZtElrKXE7LNnA6MveBLy0T8LpI4sqmaok5HkW1Aws4xlZiO03EFCFHiH8TQi9I/F7DH703ZIfMGweE3UDx5WjSdwWZ4qCLbL41sIeQGW8nhqYIErR+DyzbtHQH7PcWUvhWQPipA1aSifhFxoiaiO3YZbjE1s8Fz+SRYQNhSW+E7/ACmUoqdEngIfgmtp8sFgXgOoAOSE+CsZlluvCKW/lduAMYhxeF9PZDeonGw4QwdAS1OvB4TDIuE9EBd2s0xoPEjDGIN01eolV3cCin/MQTy+g3/r root@tomcat1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDVBiE6i7yQO7HVDKeBn6JzpQqHzfxVjMg1UxycvoTjneNyPw7wG18LVFEqR/2MZ+n990WY0LBPhOHCYTx1jx2dVURdqqQkDsMLfy3OWjc/gbM/kITKYqNkdi2aYCQvU2GqRl9DBkQ3r6m8bSJzoEJyZEKHfJHRkntiGUiqDbPixwdoOaQNlmsjJvll4xTCpGjlCIYhasRs76ldMWc+d4PM/wPw/N5TaSaR4oFcD9M4KnotbPLXY2K38lyEyvGXoj6Ckj4/wGEEJsKvEmzu8jJUYPVeWmEY1riWrhvHenN8K/XtlGqw0GCPYW/dl+SNpjrBAaTrFizCHc0u/cSEa60F root@tomcat2
[root@localhost .ssh]#
[root@localhost .ssh]# cat id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAuFlwi31N+m0LoN9Tm+uUFGkSQiYYr5WB7gx5T357QH9wQwhL
U6YgcxoCjk4PmZlgMh88gNFvPgSkhgWIlsmMQX5odzySw3OhsOcvkREbtvvV5yiM
k/4EEP3EO44gOFWhk2JCtBIv9B37AgfiNr64X0j7KK9M730HAzuXyP9EJ6Dix/Q5
6Sz0k+d5YtvCt42oJSBQaC/Ix+3FwA9DbWxlZfUe7yOex0TNAYtH6HxubC2hdhaq
1CQHOdHdgGyKa6b+8QHQgo5rx4zbGYHj9CVlQvzCajaguAaY0KtIXkGRuMwrz4Ym
IX2B6fGbj9TjecJgdNuJ6upb271rF45ZtbSCjwIDAQABAoIBAQCh76cmURcLkXhy
g1rtjz4Pw9CPHOn4ayusUXbKtr9MA+Y4a/PHchn1Ifb2zGl1sr5GqRu7yL2gS/G9
7OR0GG3FJmZbv3Dokg2J2Tr2goHG9meK3BrI8Yze5BvZeNqiwc3iKqGPjp5jIWbZ
/NTg5B4PTYuazIqXoUtkspd9r4ZOC8z5DtljLcZx2M8p5hvCTcM2CmHzpKuIWd2W
aJN4cGkDDiZLtGdKZqFR0M/d2gH+Sq9bUMbjrZr+FD9dwrXsWGNilMt/3JzIxr5u
ARvSLDtl8y6QSfGr2Xd/eXBOQmB6ZMyZOZYEnSsfTJvURGWQVW5N6E7Paku/9m2N
t1nTxalRAoGBAPGWjDv7BZzXy7KojhlmfQlCecQvVLcJOtBT1xBdkekWjP/LtojI
5GzlUYZeDpMQ5k6ifS1cPqES66UQHVMSbdtHbf+Bdianou91zwLGJjkSdaVDPAiF
MLpjw07yFqhcjgoy1MgIqJehtq8wlWkKKAOpOavwYlHl7o+ciSFZGkQHAoGBAMNY
wvMzL4fwsPRM3GyX38GqOflKIQImVvi/bG/fU13NhLDlwRdVQTMsSFWL3I/DcDWW
rob113fzGNY68nF37DuBqWs2lvrTPlRVHKFxIEEqG8GLmYQKvx8pqU5WE7/IjZeF
FpS5uxWsHJ4YTVb9zK4YcJaoM8HbpqRtlRzrdHs5AoGAC3BEXYaqIl35UBE5ASzg
GLMkDszq5uux9DE0CptTkES4Elhz4RAZ+Kn27TTA3ee779cztBUdBgVeUOdtbASA
XRSJucJIdNYVGd9rGMeHAcbE+Tkwu3qK7xhQJAnEVt5i/0qe1oXKbbuDadIUEPAh
KuM1TtXH4fbQD86qk4CjhLsCgYAuuDnX5HQHtR79LqzBJAmVzdqTrpD6bKT8VPvg
Pa84jgCgNjLaG7++N2cNXqffkkRx7JnNGVrxCyjzg6GcVawgB0C3rZSqZH9RuBFi
4yVtsF53CaYrmE5ha5tcauXKRnLmvCPMaic+Za1qejF1Dro3IQ08WvoV8SyHwtWY
1w9CsQKBgEcdE+KGtYn57v3QqeR3OrAwF7PnRR2NA80dhyuRyY3CjoQDYDQ8oK4d
XPT0eGa8f40mLKjVbFoYkeJ+cgraPtCrtGYYgTNuSErwf+SXXce6e4bBqeuncf82
XsqyHOjO71pdU6mk66jq51ywfGrV4O/TLrY8zKG5nvg1qrksHVNo
-----END RSA PRIVATE KEY-----
[root@localhost .ssh]#
[root@localhost .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4WXCLfU36bQug31Ob65QUaRJCJhivlYHuDHlPfntAf3BDCEtTpiBzGgKOTg+ZmWAyHzyA0W8+BKSGBYiWyYxBfmh3PJLDc6Gw5y+RERu2+9XnKIyT/gQQ/cQ7jiA4VaGTYkK0Ei/0HfsCB+I2vrhfSPsor0zvfQcDO5fI/0QnoOLH9DnpLPST53li28K3jaglIFBoL8jH7cXAD0NtbGVl9R7vI57HRM0Bi0fofG5sLaF2FqrUJAc50d2AbIprpv7xAdCCjmvHjNsZgeP0JWVC/MJqNqC4BpjQq0heQZG4zCvPhiYhfYHp8ZuP1ON5wmB024nq6lvbvWsXjlm1tIKP gjx@cnbisoft.com
[root@localhost .ssh]#
[root@localhost .ssh]# cat known_hosts
git.cnbisoft.com,192.168.1.104 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOvUdt2Oh75XhRPNrR7BSexICh6FMQ5sCt2EhqIQf8VZ4OavYaXyS5NqlpmTF3NFv4zIKQ8ZH9pw3HOWzhMpTWI=
192.168.2.226 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPqesXk2I6REAzQgM157kwyvmqV/arsi0HtHl2CzgBGUvBn1wVmng6fDYyKpG5piQF0iO1R6vmvuXwIkkAygoJg=
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6ChJTG23fZoAq+qK6DkCh6mpQUZiNzGshl0nJfsGuWid4EgZlYZHgijMeZtElrKXE7LNnA6MveBLy0T8LpI4sqmaok5HkW1Aws4xlZiO03EFCFHiH8TQi9I/F7DH703ZIfMGweE3UDx5WjSdwWZ4qCLbL41sIeQGW8nhqYIErR+DyzbtHQH7PcWUvhWQPipA1aSifhFxoiaiO3YZbjE1s8Fz+SRYQNhSW+E7/ACmUoqdEngIfgmtp8sFgXgOoAOSE+CsZlluvCKW/lduAMYhxeF9PZDeonGw4QwdAS1OvB4TDIuE9EBd2s0xoPEjDGIN01eolV3cCin/MQTy+g3/r root@tomcat1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDVBiE6i7yQO7HVDKeBn6JzpQqHzfxVjMg1UxycvoTjneNyPw7wG18LVFEqR/2MZ+n990WY0LBPhOHCYTx1jx2dVURdqqQkDsMLfy3OWjc/gbM/kITKYqNkdi2aYCQvU2GqRl9DBkQ3r6m8bSJzoEJyZEKHfJHRkntiGUiqDbPixwdoOaQNlmsjJvll4xTCpGjlCIYhasRs76ldMWc+d4PM/wPw/N5TaSaR4oFcD9M4KnotbPLXY2K38lyEyvGXoj6Ckj4/wGEEJsKvEmzu8jJUYPVeWmEY1riWrhvHenN8K/XtlGqw0GCPYW/dl+SNpjrBAaTrFizCHc0u/cSEa60F root@tomcat2
192.168.2.227 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPoG+rHp1xQh5R8J56aqtvqph2KVd3uhsp8vFs1Id5X2WvlPyPoRk6CfzoeeWNmACbF2k/T9tkgopLzldtW53j4=
[root@localhost .ssh]#

Jenkins用户秘钥信息

[root@localhost jenkins]# pwd
/var/lib/jenkins
[root@localhost jenkins]#
[root@localhost jenkins]# cd .ssh/
[root@localhost .ssh]#
[root@localhost .ssh]# ll
total
-rw-------. jenkins jenkins Jun : config
-rw-------. jenkins jenkins Jun : id_rsa
-rw-r--r--. jenkins jenkins Jun : id_rsa.pub
-rw-r--r--. jenkins jenkins Jun : known_hosts
[root@localhost .ssh]#
[root@localhost .ssh]# cat id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEA4AMWvQ7KYXTk/Jd03riV6fm5rvT/4GOoSLDFGgnXxKg9Q11R
r/trYqbF+CA5jSBgZrHkia1XDrTDPF+7TGjz881F1zT+r7w5hzzoeexe+xRCPPT7
4IXc3HYip5hhG7ZscF8F/KGneUzFpiwMgNK661xlHa4eOGjEfrA2cpjoeqfNsXFC
2SoJs8MXFPnDf3oBD+3VomOq2xaSzK1z68ig6ojEGpkUe/Or+G0DSwLO+dHYODha
BMfW3mNOUJJUk6LWe6Uqbdj9585teBHfYNm8p3N9RC4thyn27XcPWIuKqScqyP6X
iq+DDqotgr3+L5LLuosxmF7doLZ4TQFmlZMbgQIDAQABAoIBAAJYRe6orvmiLZtv
QmvqZrdSQ91O9za0FFjecNG69KU8VZfU7Dv5V8BqmnvkanXNtvScPBYs2FJxFfIV
1nIQTy1oIqkEBv5z6+48dvp/vObH6YGV1uUcwZkVK3uxnqKZoDz04a0pTAV7Bj6d
C2x1yDsadnx/DBXvEs94rLk6XIScJAgEYXBPuMHEiZU/9a35y+cOI9/hqLKaOTEP
HXpRDI9zGc+qMlakzfdvb920NsM7yusewNHLvybhpE63A/ig7dRfqvq9isiGLqPD
e3g6C6OtmS+3l/7tbmffsusfssRGHNWdYA0EZj17y0CwwlUTbgBl/+W/g3WTca2H
iKpwhRkCgYEA+8f2BR8MgtmmXDgy1FsmmjFNlCVmn8uSANGDWoeh6K66bZ1yetaV
fSDV+MtRYbCWTMPHBBlYqlVgih9lvWExaymfzB+vvhHtD8qOhUK4liuWQGXtSUgY
eAf3z2IBOP1LYzUe8tjiXwVzIQbbSrWHuhEUmJKha3G+dK+yujxYpqsCgYEA48QC
iNnGjQNs1RByP8W77+GYcf5INYFd1irRFSAJSNcsp45QZRZjLgGbx6W6NYP8y00C
JrHA614sHl41SnSIYp/UWazA7/Nfz+Pzl21slQwx/+wkox5xRy3awYWcRb1xYizM
XOXg0roWrkMoehGkaorcvPEP10gB/sXnmnIpdoMCgYBCSWTF+GSs1mxr/weyzMSe
97f69tXL4CZyPLaeUPMZdVbzoO4Q1QnKRajPtYeZdoo7b5enxpyHS6787kM01q/S
DMVbUkRMgB+vdp6LCwPZ1WPbVHpiPq7iewaM/LphrJ36YnPhb6Q5bA/hdBKr2pr/
K5wGhyQkS2/e/JrLWTPlvQKBgCzopv9IwUdol3rjRUOhv06rEp3XX3F9Un058APU
T0BXfOyEuQFVirS1iHuzB6YpohyL0JLElZ9S8CwEs0k89O9NSFduIpStTgT1k0AW
SUSSJQGrFAY9qGQ6fFmP+KIfmk2bO6hNgyjJnFM71q1K8To4qxFuDouKHSqY5vOi
8t31AoGAWm6B3H1M3h2NRJdLa/VSisjI0JIGMdvrWB8nYSxXn/+vIYKCHoHKa09
rUrWLgttlkyxad9IuusrbffiZsuUpK4/QJW3qiTRYjJkuRoH998M4WMxQAX1S7Gn
8CeaMH0UDKFGHJCRTXkhWo6X5+6D8W1/8yI4LAeWaGtNfGVDXPk=
-----END RSA PRIVATE KEY-----
[root@localhost .ssh]#
[root@localhost .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDgAxa9DsphdOT8l3TeuJXp+bmu9P/gY6hIsMUaCdfEqD1DXVGv+2tipsX4IDmNIGBmseSJrVcOtMM8X7tMaPPzzUXXNP6vvDmHPOh57F77FEI89PvghdzcdiKnmGEbtmxwXwX8oad5TMWmLAyA0rrrXGUdrh44aMR+sDZymOh6p82xcULZKgmzwxcU+cN/egEP7dWiY6rbFpLMrXPryKDqiMQamRR786v4bQNLAs750dg4OFoEx9beY05QklSTotZ7pSpt2P3nzm14Ed9g2bync31ELi2HKfbtdw9Yi4qpJyrI/peKr4MOqi2Cvf4vksu6izGYXt2gtnhNAWaVkxuB jenkins@localhost.localdomain
[root@localhost .ssh]#
[root@localhost .ssh]# cat known_hosts
git.cnbisoft.com,192.168.1.104 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOvUdt2Oh75XhRPNrR7BSexICh6FMQ5sCt2EhqIQf8VZ4OavYaXyS5NqlpmTF3NFv4zIKQ8ZH9pw3HOWzhMpTWI=
[root@localhost .ssh]#
[root@localhost .ssh]# cat config
StrictHostKeyChecking=no
UserKnownHostsFile=/dev/null
[root@localhost .ssh]#

参考博客:

https://blog.csdn.net/ansu2009/article/details/83584796

Jenkins自动化构建vue项目然后发布到远程Linux服务器的更多相关文章

  1. maven(17)-自动发布到远程linux服务器

     发布方式 手工方式:需要做一系列的工作,包括打WAR包,上传到服务器,重启服务器,删除旧文件等 自动方式:一条命令完成以上所有过程 服务器环境 centos7.3和tomcat8,关于cento ...

  2. 自动化工具构建vue项目

    其实之前对vue的话也有过一段时间的学习,博客园也是写了5篇vue的学习笔记.但是一直是通过CDN的方式在html文件头部引入vue.js,然后实例化vue对象绑定Dom,写组件写方法.就算是在实际项 ...

  3. Jenkins自动化构建系列:01敏捷开发、自动化构建与持续集成

    <SVN与TortoiseSVN实战系列>已写完,今天新开一个<Jenkins自动化构建系列>,上周听了Bob Jiang老师的Agile1001公开课,一直想写个总结,这篇关 ...

  4. Jenkins自动化构建python nose测试

    [本文出自天外归云的博客园] 简介 通过Jenkins自动化构建python nose测试分两步: 1. 创建节点(节点就是执行自动化测试的机器): 2. 创建任务并绑定节点(用指定的机器来跑我们创建 ...

  5. Gitlab+Jenkins用钩子实现git提交后jenkins自动化构建

    Gitlab+Jenkins用钩子实现git提交后jenkins自动化构建 一.Jenkins 进入项目---->Configure 1.设置项目代码从git中拉取 2.设置钩子程序 二.git ...

  6. Jenkins中构建Testcomplete项目的方法介绍

    Jenkins的部署在上一篇随笔中已经和大家介绍了,下面我们介绍一下再Jenkins中构建testcomplete项目.我这里使用的是Testcomplete11,下面详细介绍一下构建步骤. 1.Je ...

  7. vue-cli快速构建Vue项目

    vue-cli是什么? vue-cli 是vue.js的脚手架,用于自动生成vue.js模板工程的. vue-cli怎么使用? 安装vue-cli之前,需要先装好vue 和 webpack npm i ...

  8. vue-cli快速构建vue项目模板

    vue-cli 是vue.js的脚手架,用于自动生成vue.js模板工程的. 1.使用npm安装vue-cli 需要先装好vue 和 webpack(前提是已经安装了nodejs,否则连npm都用不了 ...

  9. vue,一路走来(1)--构建vue项目

    2016年12月--2017年5月,接触前端框架vue,一路走来,觉得有必要把遇到的问题记录下来. 那时,vux用的是1.0的vue,然而vue2.0已经出来了,于是我结合了mint-ui一起来做项目 ...

随机推荐

  1. 关于爬虫的日常复习(17)——scrapy系列1

  2. 《爬虫学习》(四)(使用lxml,bs4库以及正则表达式解析数据)

    1.XPath: XPath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历. 工具:扩展商店里搜索:XPath ...

  3. 插画版Kubernetes指南

    原文地址:https://www.cnblogs.com/kouryoushine/articles/8007648.html 是根据一个视频翻译过来的,比较形象 编者按:Matt Butcher 是 ...

  4. 大叔 EF 来分析 EntityFrameworks.Data.Core 2

    Extensions 1DbCommand拦截器扩展DbCommandInterceptorExtensions 2Class for IQuerable extensions methods Inc ...

  5. Python学习,第四课 - 字符串相关操作

    这次主要说说Python中字符串的使用方法详解 capitalize 首字母大写 print('chengshou'.capitalize()) #输出结果:Chengshou title 修改成标题 ...

  6. 创建dynamics CRM client-side (三) - Execution Context

    Execution Context 在代码执行的时候定义了event  context. 当form或者grid发生event时候传递了execution context. 可以在event hand ...

  7. jmeter使用—正则表达式提取器

    当我们测试接口的时候,有些请求参数是需要从上个接口返回获取的数据,这样的话我们就需要用到关联了.今天我们使用的关联是正则表达式提取器来进行获取需要关联的数据. 下面来具体说明正则表达式提取器的使用方法 ...

  8. Algorithm: 多项式乘法 Polynomial Multiplication: 快速傅里叶变换 FFT / 快速数论变换 NTT

    Intro: 本篇博客将会从朴素乘法讲起,经过分治乘法,到达FFT和NTT 旨在能够让读者(也让自己)充分理解其思想 模板题入口:洛谷 P3803 [模板]多项式乘法(FFT) 朴素乘法 约定:两个多 ...

  9. what is muxing and demuxing

    They're short for multiplexing and demultiplexing. Multiplexing means combining different types of d ...

  10. LinearLayout中组件右对齐

    在LinearLayout中,如果将其定位方向设为横向排列:android:orientation="horizontal",那么这个布局中的控件将自左向右排列. 但有时会有这样的 ...