Jenkins部署到远程服务器
  TEZNKK3IfmPf 2023年11月14日 23 0

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

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

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

build

本地开发时,代码提交并不会很频繁,而且存在前后端联调的过程,此时也没有Jenkins这个角色的介入。使用wagon插件来完成构建和部署,参考文章​​wagon-maven-plugin插件实现自动化构建部署到服务器​​。

Jenkins部署到远程服务器

 

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

故而,在build里面配置如下命令,期待达到构建并部署的效果:

Jenkins部署到远程服务器

 

但是控制台输出报错:

[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部署到远程服务器

 

然而现实,啪啪打脸。再次构建,控制台输出还是同样的问题。

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

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

构建后操作

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

首先需安装publish over ssh插件,才能确保出现 Send build artifacts over SSH:

Jenkins部署到远程服务器

 

既然是通过SSH协议,毫无疑问需要先添加SSH服务器配置。System Configuration—configure system,拉到底部,SSH Servers新增,注意需要勾选 Use password authentication, or use a different key

Jenkins部署到远程服务器

 

任何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​​验证,有问题,修改配置信息。

最终的正确配置:

Jenkins部署到远程服务器

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2023年11月13日   19   0   0 jenkins
  TEZNKK3IfmPf   2023年11月14日   22   0   0 jenkins
  TEZNKK3IfmPf   2023年11月14日   23   0   0 jenkins
  TEZNKK3IfmPf   2023年11月13日   26   0   0 节点jenkins
  TEZNKK3IfmPf   2024年03月22日   56   0   0 jenkins
  TEZNKK3IfmPf   2023年11月14日   21   0   0 jenkins
  TEZNKK3IfmPf   2023年11月14日   28   0   0 linuxtomcatjenkins
  TEZNKK3IfmPf   2023年11月13日   29   0   0 jenkins
TEZNKK3IfmPf