Jenkins部署到远程服务器

勤奋不是嘴上说说而已,而是实际的行动,在勤奋的苦度中持之以恒,永不退却。业精于勤,荒于嬉;行成于思,毁于随。在人生的仕途上,我们毫不迟疑地选择勤奋,她是几乎于世界上一切成就的催产婆。只要我们拥着勤奋去思考,拥着勤奋的手去耕耘,用抱勤奋的心去对待工作,浪迹红尘而坚韧不拔,那么,我们的生命就会绽放火花,让人生的时光更加的闪亮而精彩。

导读:本篇文章讲解 Jenkins部署到远程服务器,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

概述

Jenkins的入门使用,请参考CentOS 8安装并配置Jenkins,以及Jenkins + GitLab实现自动化构建

基于前述实现功能,即向GitLab提交代码,自动触发Jenkins构建,此文希望进一步实现把构建产物,如jar包,或者war包,部署到远程服务器。

友情提示:赶时间的同学,请直接阅读构建后操作

build

本地开发时,代码提交并不会很频繁,而且存在前后端联调的过程,此时也没有Jenkins这个角色的介入。使用wagon插件来完成构建和部署,参考文章wagon-maven-plugin插件实现自动化构建部署到服务器
在这里插入图片描述
对于单个module的应用(如file-center),在IDEA的terminal里面只需要输入一行命令:
mvn clean install -Dmaven.test.skip=true wagon:upload-single wagon:sshexec
对于多个module的应用(如edfi),在IDEA的terminal里面只需要输入3行命令:

mvn clean install -Dmaven.test.skip=true
cd edfi-webapp
mvn -Dmaven.test.skip=true wagon:upload-single wagon:sshexec

理论上edfi-webapp依赖于edfi-daledfi-service,在edfi-webapp目录下面执行命令:mvn clean install -Dmaven.test.skip=true,会把依赖的两个module下面的target文件夹删除,然后重新构建,事实上并不是如此,木办法,只好敲三条命令。

故而,在build里面配置如下命令,期待达到构建并部署的效果:
在这里插入图片描述
但是控制台输出报错:

[INFO] --- wagon-maven-plugin:2.0.2:upload-single (default-cli) @ user-center ---
The authenticity of host '114.215.175.236' can't be established.
RSA key fingerprint is a3:71:8c:48:75:3d:d7:c7:0a:1b:6e:1c:df:87:40:1e.
Are you sure you want to continue connecting? (yes/no): The authenticity of host '114.215.175.236' can't be established.
RSA key fingerprint is a3:71:8c:48:75:3d:d7:c7:0a:1b:6e:1c:df:87:40:1e.
Are you sure you want to continue connecting? (yes/no): The authenticity of host '114.215.175.236' can't be established.
……

然后在一直输出最后两行。

于是想着在Jenkins所在服务器执行scp命令,从测试部署服务器copy一份文件过来:scp root@114.215.175.236:/root/a.txt .。如我所愿,出现下图输入yes/no的交互式界面,意味着下一次执行scp命令不再需要输入密码。
在这里插入图片描述
然而现实,啪啪打脸。再次构建,控制台输出还是同样的问题。

此时,如果想着在Jenkins构建时,交互式输入yes。就走偏了。

事后想一想,Jenkins build就不可能支持部署,它仅仅只是完成构建功能,输出jarwar,即所谓的artifact产物。

构建后操作

知道build不能实现部署,那就是在构建后才能实现部署,wagon的scp命令实际上是基于SSH协议。

首先需安装publish over ssh插件,才能确保出现 Send build artifacts over SSH:
在这里插入图片描述
既然是通过SSH协议,毫无疑问需要先添加SSH服务器配置。

System Configuration—configure system,拉到底部,SSH Servers新增,注意需要勾选 Use password authentication, or use a different key
在这里插入图片描述
任何IP配置,如此处的SSH Server,JDBC数据源添加,都应该有测试环节,此处亦不例外,点击Test connection。报错:
jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize SSH connection. Message: [Failed to change to remote directory [/data/app/]]

很简单,目录写错!

来到Maven 项目配置,

Remove prefix不是可有可无的,点击问号,查看一下其意义;

Source files指向需要加target,否则文件scp失败。

友情提示:通过MobaXterm之类的SSH客户端,连接到部署服务器,随时使用jps | grep user-center验证,有问题,修改配置信息。

最终的正确配置:
在这里插入图片描述

参考

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

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/142204.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!