在jenkins的项目中上配置通过ssh发布jar包到远程服务器

克隆 – 编译 – 打包 – 部署

下载 jenkins.war

下载地址 https://mirrors.jenkins-ci.org/war/2.346/

jenkins 2.346 应该是 LTS 版本中最后一个支持java8的版本

支持版本
官方地址 https://www.jenkins.io/doc/book/platform-information/support-policy-java/

查看下载的jenkins文件版本
D:>java -jar jenkins.war --version

maven工具安装 略
初始化

java -jar jenkins.war #启动并登录Jenkins

*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

4a86d099da1d4bda9849c00fbfb6a1d2
This may also be found at: /root/.jenkins/secrets/initialAdminPassword
*************************************************************
admin
中文语言设置

jenkins中文语言设置
https://blog.csdn.net/yu_hongrun/article/details/124147064

Locale、Localization: Chinese
在这里插入图片描述

安装插件

jenkins各插件的下载地址:http://mirrors.jenkins-ci.org/plugins/
https://plugins.jenkins.io/
https://blog.csdn.net/m0_46370483/article/details/121508249

Jenkins 启动成功之后,接下来我们安装几个必要的插件:
Maven Integration:Maven 构建工具,在jenkins中打jar包。
Git
Gitee:协助使用 Gitee 仓库。
Publish Over SSH:SSH文件传输工具插件,把Jenkins 打包好的 jar文件上传到应用服务器上。相当于xftp,用于文件上传。
Role-based Authorization Strategy:用于控制权限的,可以给不同用户设置管理员、读、写权限。
在这里插入图片描述

配置插件

4.替换升级站点
Plugin Manager 选择高级 - 升级站点,替换最下方【升级站点】中的URL

http://mirror.esuni.jp/jenkins/updates/update-center.json
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

在这里插入图片描述
插件冲突

jenkins插件冲突解决以及版本升级
https://blog.csdn.net/weixin_43587784/article/details/129597277

离线安装hpi插件

安装 Active Choices Version2.4
https://blog.csdn.net/qq_15092991/article/details/132079554

将下载好的hpi后缀的插件放到jenkins的/var/lib/jenkins/plugins目录下,具体目标要看jenkins的具体plugins具体目录,然后重启jenkins即可。

内网jenkins跨版本升级 https://www.cnblogs.com/allay/p/17043248.html
离线插件 https://blog.csdn.net/liuxun524270348/article/details/129744369

jenkins各插件的下载地址:http://mirrors.jenkins-ci.org/plugins/
https://plugins.jenkins.io/

常用插件汇总
# 常用插件汇总
Build-timeout Plugin:任务构建超时插件
Naginator Plugin:任务重试插件
Build User Vars Plugin:用户变量获取插件
Build Pipeline Plugin View :Pipeline 管道流图表展示插件

Build Flow Plugin:工作流插件,支持DSL脚本定义工作流
Build Graph View Plugin:build Flow插件视图(安装后需要重新才能生效)
Multijob Plugin:多任务插件
Build-timeout Plugin:job构建超时插件
Build Timestamp Plugin :任务log时间戳插件,使得job log的每次输出前面都增加当时的时间
Parameterized Trigger Plugin:这是一个扩展型的插件,使各个job连接的时候可以传递一些job相关的信息
Join Plugin:这也是一个触发job的插件,亮点在于它触发job的条件是等待所有当前job的下游的job都完成才会发生。
Files Found Trigger:检测指定的目录,如果发现指定模式的文件则启动build。
BuildResultTrigger Plugin:根据其他的job的成功或失败来启动此build。
Publish Over SSH ,用于远程服务器发布,将编译生成的jar、war等文件通过ssh发送到远程服务器中指定的目录;
Rebuild Plugin:重新执行插件
ws-cleanup Plugin :workspace清理插件
Cron Column Plugin: 通过定时任务例行的运行一些job
Job Configuration History Plugin:使用心得:使job具备版本管理的能力,diff和rollback功能更是非常赞
HTTP Request Plugin:使用心得:在构建前后可以通过该插件以http形式调用各种api接口实现和内部系统的联动
Periodic Backup:使用心得:备份是运维一个系统必须要保障的事情,该插件的恢复功能可能不可用,需要手工进行,好处在于可以定时备份
Job Import Plugin:使用心得:可以快速导入其他jenkins集群的已有job,需要认证的jenkins系统导入需要提供凭证才可以
Status Monitor Plugin:构建状态插件
Build Monitor View :使用心得:基于该插件可以实现dashboard功能
Build Environment Plugin:构建环境插件,可以进行构建环境比较。
FTP插件:
Monitoring:Monitoring of Jenkins

基础依赖插件:
jQuery Plugin:jQuery插件

作为CI/CD的调度中心,Jenkins具有十八般武艺,目前已有1700多个插件,功能强大到似乎有点过分了。本文主要列出平时我们常用的插件。

以下这两个网站是Jenkins所有的插件及说明
Jenkins Plugins https://plugins.jenkins.io
Jinkins Plugins Wiki https://wiki.jenkins.io

4.创建自动化任务

全部准备工作就绪,就开始创建自动化部署任务。拉取代码、打包、上传对应服务器、重启jar包。

Global Tool Configuration

Maven配置

在这里插入图片描述

Publish over SSH

配置SSH Server,进入系统配置,找到【Publish over SSH】

Jenkins通过SSH进行文件传输 https://blog.csdn.net/rockstics/article/details/117379233

在这里插入图片描述

Source files **/* 表示Jenkins工作空间下的jar文件。
Remove prefix 该操作是针对上面的source files目录,会移除匹配的目录。通常留空。
Remote directory 目标服务器目录进行。这里我的服务器配置是的/www. 因此这里应该写sites/sskzmz即可。
Exec command 远程服务器执行的命令。例如可以输出 service nginx restart 或者/www/start. sh等命令。
高级:
Exclude files:排除的文件(在你传输目录的时候很有用,使用通配符,例如:/.log,/.tmp,.Git/)
Pattern separator:分隔符(配置Transfer Set Source files的分隔符。如果你这儿更改了,上面的内容也需要更改)
No default excludes:禁止默认的排除规则(具体的自己看帮助)
Make empty dirs:此选项会更改插件的默认行为。默认行为是匹配该文件是否存在,如果存在则创建目录存放。选中此选项会直接创建一个目录存放文件,即使是空目录。(个人理解)
Remote directory is a date format:远程目录建立带日期的文件夹(需要在Remote directory中配置日期格式)
Flatten files:只上传文件,不创建目录(除了远程目录)
Exec timeout (ms):运行脚步的超时时间(毫秒)
Exec in pty:模拟一个终端执行脚步
Add Transfer Set:增加一个配置
构建一个Maven项目

安装maven插件,搜索 Maven Integration

配置

General

Discard old builds 只保留最近5条
在这里插入图片描述

1.源码管理 Git

指定分支 */base_dev_2.1.3
在这里插入图片描述

Build
Root POM
D:\CodingProject\v5-cloud\pom.xml 或直接输 pom.xml

Goals and options
clean install -pl v5-order -am -Dmaven.test.skip=true  #编译子模块


-Dmaven.repo.local=C:\Users\Administrator\.m2\repository

在这里插入图片描述

mvn命令

参数说明:
-am --also-make 同时构建所列模块的依赖模块;
-amd -also-make-dependents 同时构建依赖于所列模块的模块;
-pl --projects 构建制定的模块,模块间用逗号分隔;
-rf -resume-from 从指定的模块恢复反应堆。
在这里插入图片描述

#其他写法 https://zhuanlan.zhihu.com/p/337241687

${WORKSPACE_HOME}\pom.xml
${WORKSPACE_HOME}\mall-gateway\pom.xml
clean install -pl mall-base,mall-common -am -Dmaven.test.skip=true  多个基础模块用逗号隔开
问题 编译时clean 指令没有识别出来,在pom.xml中加入
    <properties>
        <skipTests>true</skipTests>
    </properties>
 
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-clean-plugin</artifactId>
                <version>2.4.1</version>
            </plugin>
        </plugins>
    </build>

其他

构建环境

构建环境中勾选“Add timestamps to the Console Output”,代码构建的过程中日志会将时间戳打印出来。

不自动触发下游项目

设置即可实现不自动触发下游项目
取消选项:Enable triggering of downstream projects
取消选择:Block downstream trigger when building

Post Steps

Run only if build succeeds 选项

Jenkins 可以在构建中执行shell命令或者windows的batch 命令。

Execute Windows batch command

新增Windows 拷贝文件命令(Execute Windows batch command ),将Maven执行编译的Idea项目内target/*.jar包,拷贝到Jenkins job下的workspace目录。(因为我Windows本地Jenkins的workspace是空目录,到这里卡住好久,这个办法帮到我了)

copy D:\CodingProject\v5-cloud\v5-company-service\target\*.jar D:\jenkins\jobs\v5-company-service\workspace

在这里插入图片描述

Send files or execute commands over SSH

将jar包发送到远程Linux指定目录
在这里插入图片描述

执行结果
11:48:54 Started by user unknown or anonymous
11:48:54 Running as SYSTEM
11:48:54 Building in workspace D:\jenkins\jobs\v5-company-service\workspace
11:48:54 Parsing POMs
11:48:54 Established TCP socket on 50207
11:48:54 [v5-cloud] $ java -cp D:\jenkins\plugins\maven-plugin\WEB-INF\lib\maven35-agent-1.14.jar;D:\apache-maven-3.8.1\boot\plexus-classworlds-2.6.0.jar;D:\apache-maven-3.8.1/conf/logging jenkins.maven3.agent.Maven35Main D:\apache-maven-3.8.1 D:\jenkins\war\WEB-INF\lib\remoting-4.13.2.jar D:\jenkins\plugins\maven-plugin\WEB-INF\lib\maven35-interceptor-1.14.jar D:\jenkins\plugins\maven-plugin\WEB-INF\lib\maven3-interceptor-commons-1.14.jar 50207
11:48:56 <===[JENKINS REMOTING CAPACITY]===>channel started
11:48:57 Executing Maven:  -B -f D:\CodingProject\v5-cloud\pom.xml -s D:\apache-maven-3.8.1\conf\settings.xml -gs D:\apache-maven-3.8.1\conf\settings.xml clean install -pl v5-company-service -am -Dmaven.test.skip=true
11:48:58 [INFO] Scanning for projects...
11:48:58 [INFO] ------------------------------------------------------------------------
11:48:58 [INFO] Reactor Build Order:
11:48:58 [INFO] 
11:48:58 [INFO] v5-cloud                                                           [pom]
11:48:58 [INFO] v5-base                                                            [jar]
11:48:58 [INFO] v5-company-service                                                 [jar]
11:48:58 [INFO] 
11:48:58 [INFO] -------------------------< com.java:v5-cloud >--------------------------
11:48:58 [INFO] Building v5-cloud 0.0.1-SNAPSHOT                                   [1/3]
11:48:58 [INFO] --------------------------------[ pom ]---------------------------------
11:48:59 [INFO] 
11:48:59 [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ v5-cloud ---
11:48:59 [INFO] 
11:48:59 [INFO] --- spring-boot-maven-plugin:2.6.3:repackage (default) @ v5-cloud ---
11:49:00 [INFO] 
11:49:00 [INFO] --- maven-install-plugin:2.4:install (default-install) @ v5-cloud ---
11:49:00 [INFO] Installing D:\CodingProject\v5-cloud\pom.xml to D:\repository\com\java\v5-cloud\0.0.1-SNAPSHOT\v5-cloud-0.0.1-SNAPSHOT.pom
11:49:00 [INFO] 
11:49:00 [INFO] --------------------------< com.java:v5-base >--------------------------
11:49:00 [INFO] Building v5-base 0.0.1-SNAPSHOT                                    [2/3]
11:49:00 [INFO] --------------------------------[ jar ]---------------------------------
11:49:00 [INFO] 
11:49:00 [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ v5-base ---
11:49:00 [INFO] Deleting D:\CodingProject\v5-cloud\v5-base\target
11:49:00 [INFO] 
11:49:00 [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ v5-base ---
11:49:01 [INFO] Using 'UTF-8' encoding to copy filtered resources.
11:49:01 [INFO] Copying 0 resource
11:49:01 [INFO] 
11:49:01 [INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ v5-base ---
11:49:01 [INFO] Changes detected - recompiling the module!
11:49:01 [INFO] Compiling 17 source files to D:\CodingProject\v5-cloud\v5-base\target\classes
11:49:04 [INFO] /D:/CodingProject/v5-cloud/v5-base/src/main/java/com/java/utils/QRCodeUtil.java: D:\CodingProject\v5-cloud\v5-base\src\main\java\com\java\utils\QRCodeUtil.java使用了未经检查或不安全的操作。
11:49:04 [INFO] /D:/CodingProject/v5-cloud/v5-base/src/main/java/com/java/utils/QRCodeUtil.java: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
11:49:04 [INFO] 
11:49:04 [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ v5-base ---
11:49:04 [INFO] Not copying test resources
11:49:04 [INFO] 
11:49:04 [INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ v5-base ---
11:49:04 [INFO] Not compiling test sources
11:49:04 [INFO] 
11:49:04 [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ v5-base ---
11:49:04 [INFO] Tests are skipped.
11:49:04 [INFO] 
11:49:04 [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ v5-base ---
11:49:05 [INFO] Building jar: D:\CodingProject\v5-cloud\v5-base\target\v5-base-0.0.1-SNAPSHOT.jar
11:49:05 [INFO] 
11:49:05 [INFO] --- spring-boot-maven-plugin:2.6.3:repackage (default) @ v5-base ---
11:49:05 [INFO] Attaching repackaged archive D:\CodingProject\v5-cloud\v5-base\target\v5-base-0.0.1-SNAPSHOT-exec.jar with classifier exec
11:49:05 [INFO] 
11:49:05 [INFO] --- maven-install-plugin:2.4:install (default-install) @ v5-base ---
11:49:05 [INFO] Installing D:\CodingProject\v5-cloud\v5-base\target\v5-base-0.0.1-SNAPSHOT.jar to D:\repository\com\java\v5-base\0.0.1-SNAPSHOT\v5-base-0.0.1-SNAPSHOT.jar
11:49:05 [INFO] Installing D:\CodingProject\v5-cloud\v5-base\pom.xml to D:\repository\com\java\v5-base\0.0.1-SNAPSHOT\v5-base-0.0.1-SNAPSHOT.pom
11:49:05 [INFO] Installing D:\CodingProject\v5-cloud\v5-base\target\v5-base-0.0.1-SNAPSHOT-exec.jar to D:\repository\com\java\v5-base\0.0.1-SNAPSHOT\v5-base-0.0.1-SNAPSHOT-exec.jar
11:49:06 [INFO] 
11:49:06 [INFO] --------------------< com.java:v5-company-service >---------------------
11:49:06 [INFO] Building v5-company-service 0.0.1-SNAPSHOT                         [3/3]
11:49:06 [INFO] --------------------------------[ jar ]---------------------------------
11:49:06 [INFO] 
11:49:06 [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ v5-company-service ---
11:49:06 [INFO] Deleting D:\CodingProject\v5-cloud\v5-company-service\target
11:49:07 [INFO] 
11:49:07 [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ v5-company-service ---
11:49:07 [INFO] Using 'UTF-8' encoding to copy filtered resources.
11:49:07 [INFO] Copying 28 resources
11:49:07 [INFO] 
11:49:07 [INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ v5-company-service ---
11:49:07 [INFO] Changes detected - recompiling the module!
11:49:07 [INFO] Compiling 170 source files to D:\CodingProject\v5-cloud\v5-company-service\target\classes
11:49:15 [INFO] 
11:49:15 [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ v5-company-service ---
11:49:15 [INFO] Not copying test resources
11:49:15 [INFO] 
11:49:15 [INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ v5-company-service ---
11:49:15 [INFO] Not compiling test sources
11:49:15 [INFO] 
11:49:15 [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ v5-company-service ---
11:49:15 [INFO] Tests are skipped.
11:49:15 [INFO] 
11:49:15 [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ v5-company-service ---
11:49:15 [INFO] Building jar: D:\CodingProject\v5-cloud\v5-company-service\target\v5-company-service-0.0.1-SNAPSHOT.jar
11:49:15 [INFO] 
11:49:15 [INFO] --- spring-boot-maven-plugin:2.6.3:repackage (default) @ v5-company-service ---
11:49:15 [INFO] Replacing main artifact with repackaged archive
11:49:15 [INFO] 
11:49:15 [INFO] --- maven-install-plugin:2.4:install (default-install) @ v5-company-service ---
11:49:15 [INFO] Installing D:\CodingProject\v5-cloud\v5-company-service\target\v5-company-service-0.0.1-SNAPSHOT.jar to D:\repository\com\java\v5-company-service\0.0.1-SNAPSHOT\v5-company-service-0.0.1-SNAPSHOT.jar
11:49:15 [INFO] Installing D:\CodingProject\v5-cloud\v5-company-service\pom.xml to D:\repository\com\java\v5-company-service\0.0.1-SNAPSHOT\v5-company-service-0.0.1-SNAPSHOT.pom
11:49:17 [INFO] ------------------------------------------------------------------------
11:49:17 [INFO] Reactor Summary for v5-cloud 0.0.1-SNAPSHOT:
11:49:17 [INFO] 
11:49:17 [INFO] v5-cloud ........................................... SUCCESS [  1.627 s]
11:49:17 [INFO] v5-base ............................................ SUCCESS [  5.031 s]
11:49:17 [INFO] v5-company-service ................................. SUCCESS [  9.658 s]
11:49:17 [INFO] ------------------------------------------------------------------------
11:49:17 [INFO] BUILD SUCCESS
11:49:17 [INFO] ------------------------------------------------------------------------
11:49:17 [INFO] Total time:  18.951 s
11:49:17 [INFO] Finished at: 2022-11-21T11:49:17+08:00
11:49:17 [INFO] ------------------------------------------------------------------------
11:49:17 Waiting for Jenkins to finish collecting data
11:49:30 [JENKINS] Archiving D:\CodingProject\v5-cloud\pom.xml to com.java/v5-cloud/0.0.1-SNAPSHOT/v5-cloud-0.0.1-SNAPSHOT.pom
11:49:30 [JENKINS] Archiving D:\CodingProject\v5-cloud\v5-company-service\pom.xml to com.java/v5-company-service/0.0.1-SNAPSHOT/v5-company-service-0.0.1-SNAPSHOT.pom
11:49:30 [JENKINS] Archiving D:\CodingProject\v5-cloud\v5-company-service\target\v5-company-service-0.0.1-SNAPSHOT.jar to com.java/v5-company-service/0.0.1-SNAPSHOT/v5-company-service-0.0.1-SNAPSHOT.jar
11:49:31 [JENKINS] Archiving D:\CodingProject\v5-cloud\v5-base\pom.xml to com.java/v5-base/0.0.1-SNAPSHOT/v5-base-0.0.1-SNAPSHOT.pom
11:49:31 [JENKINS] Archiving D:\CodingProject\v5-cloud\v5-base\target\v5-base-0.0.1-SNAPSHOT.jar to com.java/v5-base/0.0.1-SNAPSHOT/v5-base-0.0.1-SNAPSHOT.jar
11:49:31 [JENKINS] Archiving D:\CodingProject\v5-cloud\v5-base\target\v5-base-0.0.1-SNAPSHOT-exec.jar to com.java/v5-base/0.0.1-SNAPSHOT/v5-base-0.0.1-SNAPSHOT-exec.jar
11:49:31 channel stopped
11:49:31 [workspace] $ cmd /c call C:\Users\ADMINI~1\AppData\Local\Temp\jenkins8965795402839122703.bat
11:49:31 
11:49:31 D:\jenkins\jobs\v5-company-service\workspace>copy D:\CodingProject\v5-cloud\v5-company-service\target\*.jar D:\jenkins\jobs\v5-company-service\workspace 
11:49:31 D:\CodingProject\v5-cloud\v5-company-service\target\v5-company-service-0.0.1-SNAPSHOT.jar
11:49:31 已复制         1 个文件。
11:49:31 
11:49:31 D:\jenkins\jobs\v5-company-service\workspace>exit 0 
11:49:31 SSH: Connecting from host [WIUTT6AD99JP027]
11:49:31 SSH: Connecting with configuration [V5 Server] ...
11:49:41 SSH: EXEC: completed after 202 ms
11:49:41 SSH: Disconnecting configuration [V5 Server] ...
11:49:41 SSH: Transferred 1 file(s)
11:49:47 Finished: SUCCESS

Git

Additional Behaviours
Advanced clone behaviours

克隆和拉取操作的超时时间(分钟)——默认是10分钟

配置输出html报告,自动化测试等

TestNG

问题

Publish over SSH 报错

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

2.连接远程服务器的账号密码已经过期,需要修改密码,然后重新连接
3.ssh 连接服务出现问题,查看22号端口是否起来,如果没起来,检查sshd 服务。
4.防火墙是否开启

构建后的操作——报错处理

SSH UNSTABLE

jenkins构建UNSTABLE原因及解决
https://blog.csdn.net/hejingfang123/article/details/121320180

SSH: Disconnecting configuration [TestServer001] ...
ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [127]]
Build step 'Send files or execute commands over SSH' changed build result to UNSTABLE
Finished: UNSTABLE

[127]代表的意思是没有找到执行文件的目录,那么把执行文件配对了就能解决
SSH: Current build result is [NOT_BUILT], not going to run.
# 关于 Remove prefix

ERROR: Exception when publishing, exception message [Failed to remove prefix from file named [medical-api/target/medical-api.jar]. Prefix [medical-auth/target/] must be present in all file paths]

Exec timed out or was interrupted after 120,012 ms
在【构建后的操作】下设置【Send build artifacts over SSH】

报错信息: ERROR: Exception when publishing, exception message [Exec timed out or was interrupted after 120,012 ms
报错原因:执行docker脚本log超时
解决办法:sudo nohup sh start.sh >/dev/null 2>&1 &
解决方案:https://blog.csdn.net/weixin_39555954/article/details/125598196

在这里插入图片描述

Jenkins编译打包成功,但SpringBoot启动失败,无错误日志

Jenkins maven 构建乱码,修改file.encoding系统变量编码为UTF-8
代码编码格式是utf-8,因为Jenkins会默认读取当前系统的编码格式,导致构建日志乱码。

[INFO] Building medical-common 0.0.1-SNAPSHOT                            [2/24]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ medical-common ---
[WARNING] File encoding has not been set, using platform encoding GBK, i.e. build is platform dependent!
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory D:\jenkins\jenkins_home\workspace\medical-common\src\main\resources

处理方法:设置全局配置,全局MAVEN_OPTS
注:若更改过Item的名称,要清理workspace 否则代码编译是旧的。
在这里插入图片描述

参考资料

Jenkins 用户手册 https://www.jenkins.io/zh/doc/
使用Jenkins部署SpringBoot 使用密钥方式登录目标发布服务器 https://www.cnblogs.com/JpfBlog66/p/14237889.html
Jenkins部署安装 https://blog.csdn.net/m0_46370483/article/details/121508249
Jenkins通过SSH进行文件传输 https://blog.csdn.net/rockstics/article/details/117379233
Jenkins可用环境变量 https://www.cnblogs.com/Dengv5/p/16466784.html
jenkins 添加一个maven任务的job实践 https://blog.csdn.net/linlongdeng/article/details/110439765
Jenkins docker https://mp.weixin.qq.com/s/XCjntYGPb4Q0sVKN60PGGA

内网jenkins跨版本升级 https://www.cnblogs.com/allay/p/17043248.html
离线插件 https://blog.csdn.net/liuxun524270348/article/details/129744369
jenkins各插件的下载地址:http://mirrors.jenkins-ci.org/plugins/

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐