Jenkins自动化部署

一、概述

Jenkins(https://jenkins.io/)是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
Jenkins是一款能提高效率的软件,它能帮你把软件开发过程形成工作流,典型的工作流包括以下几个步骤

在这里插入图片描述
有了Jenkins的帮助,在这5步中,除了第1步,后续的4步都是自动化完成的,具体的,当你完成了提交,Jenkins会自动运行你的编译脚本,编译成功后,再运行你的测试脚本,这一步成功后,接着它会帮你把新程序发布出去,特别的,在最后一步,你可以选择手动发布,或自动发布,毕竟发布这件事情,还是需要人为的确认一下比较好。简而言之
Jenkins可以帮你在写完代码后,一键完成开发过程中的一系列工作
使用Jenkins的好处显而易见,它减少了你的重复劳动。更重要的是,一个团队的开发流程一开始是不一致的,不一致往往会带来各种各样的问题,最终体现在软件的质量或开发效率不够高,而Jenkins会帮你规范大家的行为,从而避免一系列的问题。
支持分布式构建
持续化集成架构
在这里插入图片描述
持续化集成流程
在这里插入图片描述

二、优势

1、使用JAVA开发,可以跨平台使用;
2、提供很多插件满足不同的业务需要;
3、可以从根本上提高产品持续交付的效率和质量;
4、安装简单。

三、安装

官方提供四种安装方式
文档位置https://jenkins.io/doc/
下载地址https://jenkins.io/download/
官方安装教程https://jenkins.io/doc/book/installing/

1、通过war包安装(需要JDK支持)

该方式最方便,跨平台,最新2.121.1版本需要jdk1.8。

//通过wget下载war包  
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war  
//通过java命令安装启动,默认端口是80  
java -jar jenkins.war  
//指定端口启动  
java -jar jenkins.war --httpPort=9090  
2、通过tomcat安装

tomcat安装完毕后,将war包拷贝到webapp/ROOT目录下,执行以下命令进行解压

jar -xvf jenkins.war

重启tomcat生效

四、入门

安装成功后,可以通过域名或ip加端口的方式访问。
无法访问的检查方法应该由内到外,可以在系统里面通过curl命令检查是否能正常返回页面内容。

curl http://localhost:9090/

注:使用aws ec2的需要注意在VPC的安全组里面添加对应的入站规则,参考下图添加9090端口的规则。Windows实例需要在Windows的防火窗上为端口添加入站规则。
在这里插入图片描述

1、首次使用,需要解锁jenkins

通过ip加端口访问后,会跳转到下面的解锁界面。为了提高安全级别,Jenkins在安装时会随机生成一个管理员密码存放在指定的位置。我们需要打开这个文件,将管理员密码粘贴进来即可。
在这里插入图片描述

2、安装插件

选择安装推荐的插件,安装过程等待时间较长,可能会有部分插件安装失败,如尝试多次失败,可以先继续,后面再重新安装。Jenkins的插件丰富,可以访问官网了解。
https://plugins.jenkins.io/
在这里插入图片描述

3、创建第一个管理员用户

在这里插入图片描述

4、实例配置

该url将被用于发邮件通知内容里面链接到本系统等。
在这里插入图片描述

五、建立一个任务

1、新建任务

输入任务名称,选择“构建一个maven项目”(需要安装Maven Integration插件才会出来该选项)
在这里插入图片描述

2、配置源码管理

在这里插入图片描述

3、构建前清理工作空间,避免上一次构建遗留的文件也打包到本次的构建里

在这里插入图片描述

4、保存成功后,点击立即构建,可以在左下角看到本次构建的进度,点击数字可以查看构建的详细输出。

在这里插入图片描述

5、项目构建成功后,会在工作目录/任务名称/target下生成构建好的war包。

如:/root/.jenkins/workspace/jenkins_test/target
在这里插入图片描述

6、发布到容器(需要安装Deploy to Container Plugin插件),支持多种容器:Tomcat、Jboss、GlassFish。

①配置线上的Tomcat服务器
修改conf/tomcat-user.xml,增加以下配置,username和password可以根据实际需要修改。

<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="123456" 
roles="manager-gui, manager-script"/>

②修改项目pom.xml文件,增加以下内容。其中url换成实际的ip和端口,username和password保持与上一步骤的一致。
使用tomcat7-maven-plugin时,要求tomcat容器的版本在8.0.53及以下,8.5.3及以上会提示报错。
The username you provided is not allowed to use the text-based Tomcat Manage

 <build>
    <plugins>
      <plugin>
      <groupId>org.apache.tomcat.maven</groupId>
      <artifactId>tomcat7-maven-plugin</artifactId>
      <configuration>
      <url>http://localhost:8080/manager/text</url>
        <path>/</path>
      <server>tomcat</server>
      <username>tomcat</username>
      <password>123456</password>
      </configuration>
      </plugin>
    </plugins>
  </build>

③修改构建任务的配置
增加构建后操作,选择Deploy war/ear to a container
在这里插入图片描述
填写war包文件的相对路径,相对项目的工作控件
输入访问tomcat容器的证书和访问url地址,点击保存。
在这里插入图片描述
④点击构建,查看控制台输出。本次构建的结果已通过插件部署到目标的Tomcat容器。
在这里插入图片描述

参考链接
https://blog.csdn.net/songjiaping/article/details/51454243
https://blog.csdn.net/tragedyxd/article/details/51852276
https://blog.csdn.net/sinat_32247833/article/details/78447578

六、参数化构建

存在以下场景,在构建时需要指定git的标签(一般用于标识版本),或源码里包含多个地区的资源文件(如图片文件),在构建的时候需要指定地区的名称,仅将该地区的资源文件打包的war包中,类似以上这些场景都适用参数化构建的方式来实现。

1、在构建项目时选上参数化构建

在这里插入图片描述

2、在需要使用的地方通过${bugIds}的方式来使用。

如上面描述的第二个场景
在这里插入图片描述
可以在maven的pom.xml文件中使用正则exclude非area地区的目录

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<packagingExcludes>%regex[images/(?!${area}).*]</packagingExcludes>
</configuration>
 </plugin>

然后在jenkins项目上自定义maven命令,以下打包的时候,仅包括qy目录的文件。该方法存在一个缺陷,不能使用include和exclude实现兼容共性部分和非共性部分,以上的打包仅实现了
clean package -Darea=qy
打包结果如下:
在这里插入图片描述
以上的表达式适用于每个地区有单独的一个目录的情况,有另外一种情况是将所有地区的文件放在同一个目录下,仅是以地区编号区分开了的。
在这里插入图片描述
表达式如下

%regex[images/(?!${area}).*.png]  

生成war包如下
在这里插入图片描述
其他一些更复杂的情况也可以通过表达式来实现这种不同地区的需求。

七、构建触发器

Jenkins可以配置定时构建。
其中,定时构建和轮询SCM的区别如下
定时构建:周期进行项目构建,无论源码是否发生变化
轮询SCM:定时检查源码变更,源码有变化就启动构建。没有变化就不会执行构建。
另外,不希望通过轮询SCM的方式实现自动构建,也可以通过GitHub的webhook实现自动构建,需要勾选上GitHub hook trigger for GiTScm polling。
在这里插入图片描述

八、创建视图

Jenkins默认只有一个All视图,该视图展示当前文件夹下的所有任务。在很多业务场景下,都有需要将某个文件夹下的任务按照一定的规则进行分类的需求。Jenkins的视图插件可以让用户很方便的将同一个文件夹下的任务进行分类。
视图创建步骤:

1、点击加号,进入视图创建界面

在这里插入图片描述

2、输入视图名称(按服务器ip命名),选择列表视图

在这里插入图片描述

3、填写视图描述(当前服务器部署的应用)

在这里插入图片描述

4、勾选上“使用正则表达式在视图中显示Jobs”

在这里插入图片描述
更新类视图的正则表达式为:

(?!.*restore).*_1_1

其中_1_1为当前服务器的ip后两位,将点号(.)换成下滑杠(_),表示的是,将以_1_1结尾的任务显示在这个视图下。

回滚类视图的正则表达式为:

.*restore

表示的是将所有以restore结尾的任务都显示在这个视图下。

5、添加列 → 项目描述

在这里插入图片描述
将项目描述列拖拽到名称前面
在这里插入图片描述
点击保存即可

6、设置文件夹的默认视图

常规情况下,希望将视图列表中的第一个视图设置为默认视图
例如下面截图中,默认选中的是第四个视图“更新任务”,这样不符合用户的操作系统,希望用户进来到lianshan这个文件夹的时候,默认选中第一个视图“192.168.1.1”。可以按照以下步骤设置文件夹的默认视图
在这里插入图片描述
1、点击文件夹左上角的Configure按钮,进入到文件夹配置页面
在这里插入图片描述
2、在Default View中选中第一个“192.168.1.1”
在这里插入图片描述
点击保存即可
重新进来后,默认选中的就是上面步骤中配置的第一个视图了。
在这里插入图片描述

九、节点管理

1、新建节点

①新建linux节点
1)准备从jenkins服务器ssh免密登录到linux节点
a.节点和jenkins服务器均使用root用户
b.在jenkins服务器生成密钥对

//切换到root用户
sudo su
//生成密钥对
ssh-keygen -t rsa
//进入.ssh目录
cd ~/.ssh
//将公钥拷贝到authorized_key文件
cat id_rsa.pub >> authorized_keys
//赋权
chmod 600 authorized_keys

c.将公钥拷贝到节点
将authorized_keys的内容拷贝到节点root用户目录/.ssh目录下的authorized_keys文件内。
d.验证(在jenkins服务器)

//切换到root用户
sudo su
//ssh免密登录到节点服务器,首次登录会提示,按要求确认即可
ssh root@172.31.17.33

2)新建节点(需要先在节点上安装JDK)
a.登录jenkins → 凭据 → 系统 → 全局凭据 → 添加凭据
b.选择SSH Username with private key,输入用户名,勾选Enter directly,将在jenkins服务器生成的私钥(/root/.ssh/id_rsa)文件的内容粘贴进来。
在这里插入图片描述
c.系统管理 → 管理节点 → 新建节点 → 输入节点名称 → 勾选固定节点
在这里插入图片描述
d.远程工作目录是节点上的目录,且必须存在,启动方式选择Launch slave agents via SSH。输入主机ip,Credentials选择上面创建的凭据。Host Key Verification Strategy选择Manually trusted key Verification Strategy。
在这里插入图片描述

②新建windows节点
1)准备工作:在节点上安装JDK
2)登录jenkins → 系统管理 → 全局安全配置 → 代理
在这里插入图片描述
3)新建节点,输入远程工作目录,选择启动方式为通过Java Web启动代理
在这里插入图片描述
4)启动代理节点
Jenkins提供两种方式启动代理节点,一种是在节点上访问jenkins服务地址,然后进入到代理节点页面,点击Launch按钮来启动。另外一种是将agent.jar下载后,拷贝到代理节点上,通过命令行的方式启动。启动后,在jenkins上刷新即可看到节点已连接。
在这里插入图片描述
方式一

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击File → Install as a services(将节点启动作为一个windows服务,会在开机的时候启动)
在这里插入图片描述
方式二(启动的命令行窗口需要一直开着,不建议使用此方式)
在这里插入图片描述

2、分布式构建

Jenkins支持分布式构建,通过添加多个节点实现构建任务的分发,构建完毕后,节点会将构建结果传回master节点的工作目录下。

3、限制构建的节点

可以为某个构建任务指定在哪个节点或某些节点进行构建。通过设置标签表达式实现。
在这里插入图片描述
配置执行者数量
这个值控制着Jenkins并发构建的数量. 因此这个值会影响Jenkins系统的负载压力. 使用处理器个数作为其值会是比较好的选择.
增大这个值会使每个构建的运行时间更长,但是这能够增大整体的构建数量,因为当一个项目在等待I/O时它允许CPU去构建另一个项目.
设置这个值为0对于从Jenkins移除一个失效的从节点非常有用,并且不会丢失配置信息。

十、插件管理

1、插件安装、卸载、更新、降级

①在线安装(也可以通过下载插件安装包,使用离线安装的方式)
系统管理 → 管理插件 → 可选插件 → 输入关键字 → 选中需要安装的插件 → 直接安装。
②卸载、降级
系统管理 → 管理插件 → 已安装 → 输入关键字 → 找到需要操作的插件 → 卸载、降级。
③更新
系统管理 → 管理插件 → 可更新 → 找到需要操作的插件 → 更新。
④离线安装参考地址
https://blog.csdn.net/xlgen157387/article/details/50353317

2、常用插件说明

版本控制类:Git、Maven Integration
安装部署类:Pipeline、Blue Ocean、Deploy to container Plugin、Publish Over SSH
权限管理类:Role-basedAuthorization Strategy
监控类:Build Monitor View(编译监控视图插件)

十一、用户权限管理

1、安装Role-based Authorization Strategy插件
2、系统管理 → 全局安全配置 → 授权策略 → 选中Role-Based Strategy → 保存

在这里插入图片描述

3、系统管理 → Manage and Assign Roles
4、新建用户、赋权

参考地址:https://blog.csdn.net/russ44/article/details/52276222

十二、备份配置信息

1、安装thinBackup插件

http://www.cnblogs.com/zhaoqingqing/p/6607134.html

十三、构建方案

1、通过分布式构建实现应用发布(代理节点)

环境要求:
适用场景:
优缺点:

2、通过Publish Over SSH插件实现应用发布

Publish Over SSH 不是将war包发布到tomcat容器下,而是先利用该插件将build好的文件上传到远程linux 的指定目录下,然后利用该插件远程执行脚本将指定目录下的文件复制到tomcat的执行文件夹下,再利用脚本远程重启tomcat即可 。
①安装Publish Over SSH插件
②系统管理 → 系统设置 → 添加SSH server
Passphrase为空,输入jenkins服务器上私钥的全路径或将私钥的内容拷贝到Key文本域中,输入需要SSH访问的服务器的名称、主机名称、用户名和远程目录,点击Test Configuration,Success表示成功。
在这里插入图片描述
③Post Steps → 执行Shell(使用scp命令上传war包)

scp -r /root/.jenkins/workspace/jenkins_ubuntu/target/jenkins_test-1.0-Snapshot.war root@172.31.45.136:/home/ubuntu/tomcat/apache-tomcat-8.5.32/webapps/
export BUILD_ID=DONTKILLME

红色字体为目标服务器上的路径
在这里插入图片描述
④构建后操作 → Send build artifacts over SSH
选中步骤2添加的Server,Exec command里面输入在目标服务器上写好的restart.sh
在这里插入图片描述

3、通过Deploy war/ear to a container插件实现应用发布(使用该方式会全量覆盖)
4、windows节点上通过命令行部署更新包
cd C:\jenkins\workspace\jenkins_test\target
copy jenkins_test-1.0-Snapshot.war C:\tomcat\Tomcat8.5\webapps\jenkins_test-1.0-Snapshot.war /y
net stop Tomcat8
net start Tomcat8

注:tomcat路径不要用空格或中文
注:直接启动startup.bat会有问题,tomcat会在启动后停止,因为没能在后台执行。

5、Ubuntu节点上通过命令行部署更新包
#!/bin/bash
export BUILD_ID=dontkillme #必须
cd /home/jenkins/workspace/jenkins_test_jumpserver/target
cp jenkins_test-1.0-Snapshot.war /home/ubuntu/tomcat/apache-tomcat-8.5.32/webapps
cd /home/ubuntu/tomcat/apache-tomcat-8.5.32/bin
./startup.sh

参考

#!/bin/bash
export BUILD_ID=dontkillme #必须加
TOMCATTHREAD=`ps aux | grep 'tomcat_user' | grep -v grep`
if test -z "$TOMCATTHREAD"
then
   echo "TOMCAT NOT START"
else
THREADLIST=(${TOMCATTHREAD// / })
PID=${THREADLIST[1]}
kill -9 $PID
sleep 3s
fi
   cd /home/formax/tomcat/tomcat_user/webapps
   rm -f userapi.war
   rm -rf userapi
   cd /home/formax/tomcat/tomcat_user/bin
   startup.sh
   sleep 5s
6、Windows节点中转到linux节点

使用putty(需加入环境变量后重启生效)拷贝文件、远程执行命令(使用密钥/账号)
使用putty登录的用户必须有目标服务器上,应用部署目录的权限。
使用密钥文件

pscp -i C:\PuTTY\jumpserver.ppk -batch C:\jenkins\workspace\jenkins_win_linux\target\jenkins_test-1.0-Snapshot.war ubuntu@ec2-52-83-102-3.cn-northwest-1.compute.amazonaws.com.cn:/home/ubuntu/tomcat/apache-tomcat-8.5.32/webapps
plink -i C:\PuTTY\jumpserver.ppk ubuntu@ec2-52-83-102-3.cn-northwest-1.compute.amazonaws.com.cn /home/ubuntu/tomcat/restart.sh

C:\PuTTY\jumpserver.ppk是putty远程登录需要使用的密钥文件,ppk密钥文件的生成参考“putty使用说明.doc”
restart.sh存放在应用服务器/home/ubuntu/tomcat目录下

#!/bin/bash
export JAVA_HOME=/home/jenkins/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
cd /home/ubuntu/tomcat/apache-tomcat-8.5.32/bin
./shutdown.sh
./startup.sh

使用密码

pscp -l jenkins -pw p@ssw0rd -batch C:\jenkins\workspace\jenkins_win_linux_psw\target\jenkins_test-1.0-Snapshot.war jenkins@ec2-52-83-102-3.cn-northwest-1.compute.amazonaws.com.cn:/home/ubuntu/tomcat/apache-tomcat-8.5.32/webapps
plink -l jenkins -pw p@ssw0rd ubuntu@ec2-52-83-102-3.cn-northwest-1.compute.amazonaws.com.cn /home/ubuntu/tomcat/restart.sh

通过Publish over ssh插件

十四、使用github的Webhook实现自动化部署

虽然Jenkins支持定时构建,但实际上可能有下面这种需求:当接收到新的push的时候,自动触发构建
GitHub的Webhooks可以实现该需求。

1、在Jenkins中设置Hook URL

系统管理 → 系统设置 → GitHub → 高级 → Override Hook URL → 勾选上 Specify another hook URL for GitHub configuration,拷贝该URL。
在这里插入图片描述

2、在GitHub中配置Webhooks

GitHub项目 → setting → Webhooks → Add webhook
在这里插入图片描述
将步骤一中拷贝的URL复制到Payload URL输入框中,Webhook支持的触发事件很多,选择Let me select individual events可以查看到所有的触发事件。默认选择第一个,Just the push event,表示仅触发事件。
在这里插入图片描述

3、配置Jenkins项目的构建触发器

将项目的构建触发器中的GitHub hook trigger for GiTScm polling勾选上。
在这里插入图片描述

4、验证自动构建

修改项目的文件,然后push到github,Jenkins项目会自动发起一个构建任务。
参考地址
https://www.cnblogs.com/weschen/p/6867885.html

https://blog.csdn.net/lynnos/article/details/78154753

十五、全局工具配置

Jenkins提供全局工具配置功能,可以配置自动在各个节点安装所需要的工具,包括JDK、Maven、Git、Ant、Docker等,避免在新建节点的时候逐个节点重复执行安装步骤。目前尝试过Maven和Git可以自动安装,JDK在新建节点时就需要安装了。
工具安装目录
/root/.jenkins/tools/

十六、常见问题

1、JDK版本过低,需要JDK1.8

在这里插入图片描述
安装JDK1.8
下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Linux 64为rpm包下载地址(该地址在有限时间内有效)
http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.rpm?AuthParam=1528941565_a805c1ba58a140a6f4f16632e69d06f9

rpm -ivh jdk-8u171-linux-x64.rpm
2、配置JDK

系统管理 → 全局工具配置 → JDK → 新增Maven
去掉自动安装的复选框,输入名称和JAVA Home
在这里插入图片描述

3、安装配置maven

①官网下载地址
http://maven.apache.org/download.cgi
②下载
wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.3/binaries/apache-maven-3.5.3-bin.tar.gz
③解压

 tar -zxvf apache-maven-3.5.3-bin.tar.gz

④配置环境变量
修改/etc/profile文件,在末尾追加以下内容

MAVEN_HOME=/home/ec2-user/maven/apache-maven-3.5.3
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin
执行source /etc/profile使环境变量生效

⑤验证
执行mvn -v验证环境变量是否生效

Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-24T19:49:05Z)
Maven home: /home/ec2-user/maven/apache-maven-3.5.3
Java version: 1.8.0_171, vendor: Oracle Corporation
Java home: /usr/java/jdk1.8.0_171-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.14.33-51.37.amzn1.x86_64", arch: "amd64", family: "unix"

⑥全局Maven配置
系统管理 → 全局工具配置 → Maven → 新增Maven
去掉自动安装,输入名称和Maven Home

4、安装git
yum install git

安装期间有一次需要确认的,输入y后回车即可。
安装完毕后可以通过git --version验证是否安装成功

[root@ip-172-31-18-2 ec2-user]# git --version
git version 2.14.4

注:Windows下安装完毕后,需要重启机器才能生效,不然jenkins上依然报找不到git命令的错误。

5、重启Jenkins

在Jenkins访问地址后面加上restart,弹出确认重启页面,确认后重启。

6、查看构建日志

点击构建任务名称 → 构建历史列表中选择构建批次 → 控制台输出
在这里插入图片描述

7、No valid crumb was included in the request

获取用户crumb,登录后访问
http://ip:port/crumbIssuer/api/json
参考链接
https://www.cnblogs.com/liyuanhong/articles/5668868.html

8、通过api发起构建

去掉防止跨站点访问的方式

curl -X POST http://ec2-52-83-237-37.cn-northwest-1.compute.amazonaws.com.cn:8082/job/pipeline_test/build --user admin:p@ssw0rd

勾选防止跨站点访问的方式

curl -u admin:970ad557cf8453af60f19fa36c96c47d http://ec2-52-83-237-37.cn-northwest-1.compute.amazonaws.com.cn:8082/crumbIssuer/api/json

返回内容如下:

{"_class":"hudson.security.csrf.DefaultCrumbIssuer","crumb":"a2614277beb63388fc29060fa78f9a56","crumbRequestField":"Jenkins-Crumb"}

其中加粗的内容为上一个curl返回的crumb

curl -u admin:p@ssw0rd -H "Jenkins-Crumb:a2614277beb63388fc29060fa78f9a56" -X POST http://ec2-52-83-237-37.cn-northwest-1.compute.amazonaws.com.cn:8082/job/pipeline_test/build

wget方式

wget -q --auth-no-challenge --user admin --password p@ssw0rd --output-document - \
'http://ec2-52-83-237-37.cn-northwest-1.compute.amazonaws.com.cn:8082/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)'
9、Ubuntu下安装jdk

在新建节点前,需要先安装jdk。需要将jdk安装到节点的工作目录/jdk下
如节点的工作目录为/home/jenkins,则jdk的安装目录(也就是JAVA_HOME)为/home/jenkins/jdk

10、windows节点Publish Over SSH出错

从以下日志可以看出来,jenkins会在jenkins服务器的工作目录或者绝对路径下找密钥文件,找不到则报错。

C:\jenkins\workspace\jenkins_win_linux_ssh>exit 0 
SSH: Connecting from host [WIN-VP511PEV34R]
SSH: Connecting with configuration [ubuntu] ...
ERROR: Exception when publishing, exception message [Failed to read file - filename [jenkins] (relative to JENKINS_HOME if not absolute). Message: [java.lang.SecurityException: agent may not read /root/.jenkins/jenkins

解决方法:将windows节点远程目标应用服务器需要的私钥文件拷贝到Key文本域中即可。 该方法虽然能解决windows节点远程发布到linux应用服务器的问题,但是也存在一个问题,jenkins仅允许配置一个Jenkins SSH Key(该key的作用范围包括master节点和其他所有节点),如果该Key被某一个节点占用了,如果有需要从master节点通过Publish Over SSH完成部署的工作就不完成不了。综上所述,不建议通过节点+Publish Over SSH插件完成需要经过跳转机才能完成的部署工作。建议通过节点+putty工具命令结合的方式完成会更灵活一些。
在这里插入图片描述

11、Build whenever a SNAPSHOT dependency is built

在这里插入图片描述
新建任务时,该选项默认勾选上。由于目前jenkins使用maven进行构建,有部分项目(例如玉林门户这些项目,需要依赖zmeg_new基础框架进行编译,目前的做法是,创建一个构建jar包的任务,将zmeg_new的代码构建成一个jar包,被上面的项目依赖)

如果这些项目勾选上以上选项时,这些项目会作为zmeg_new_jar项目的下级项目被关联起来,并且每次构建zmeg_new_jar时,会自动构建这些下级项目。
在这里插入图片描述
解决方法:将以上这些下级项目的(Build whenever a SNAPSHOT dependency is built)选项的勾选去掉。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值