热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Jenkins节点管理

本文由编程笔记#小编为大家整理,主要介绍了Jenkins节点管理相关的知识,希望对你有一定的参考价值。
本文由编程笔记#小编为大家整理,主要介绍了Jenkins节点管理相关的知识,希望对你有一定的参考价值。









点击关注,我们共同每天进步一点点!









我们在使用jenkins的时候,一般来说肯定是有slave节点的。任务一般是在slave上面运行的。当然不是讲master节点不能跑任务,master节点主要是处理调度构建作业,把构建分发到slave节点进行实际执行,监视slave节点的状态(必要时让它们进行上线或者离线),记录和发布构建产物。


主要常用的的连接slave节点的方式就是通过ssh和jnlp



  • ssh来说,我们一般用的服务器都是linux系统,当然最方便的就是通过ssh启动jenkins节点,但是这个有个前提的要求就是master和slave之前能进行ssh连接


  • jnlp连接方式有个好处就是不用master和slave之间能够ssh连接,只需要能够ping即可。并且如果slave的机器是windows的话,也是可以的这个其实是非常实用的,因为有时候,可能一些权限或者防火墙的原因,这master和slave真的不能够ssh连接,还有一些未知的原因无法ssh到slave节点(我下面说的公司这个例子就是这样),都可以通过jnlp的方式进行连接。



Ssh方式连接slave


必须有slave机器的账号才行,但不要求必须是root账号。
这种方式的前提是需要安装SSH Slaves plugin插件。
这种方式的步骤如下:


1、输入slave节点的IP。


2、Add Credentials:


有如下两种方式:


  1)通过Username with password方式


  需要知道slave机器的用户名和密码


  2)通过SSH Username with private key方式


  需要先在master机器上生成ssh key pair。生成的 public key放到slave机器的 ~/.ssh/authorized_keys里面。然后chmod 600 ~/.ssh/authorized_keys。
  然后,添加连接slave的credential,


这两种方式的Scope选项,我选择的是System,表示这个Credentials仅仅是用来master和node进行连接用的。还有另外一种是“Global(Jenkins、nodes、items、child items)”,这种scope的Credential可以用来连接git等其他机器。具体选择哪种scope,根据自己的需要。就连接slave这个需求来说,哪种scope的credential都可以。
Username填写在master上生成key pair时使用的用户名。
Private key选择From the jenkins master ~/.ssh


Jenkins的SSH Credentials Plugin插件,可以集中管理这些ssh 的key。安装完这个插件,可以在Jenkins上看到这样的页面


这个页面可以对credentials进行添加、删除、修改等操作。在这里设置的credentials在jenkins的其他需要credentials的地方,可以通过下拉菜单选择使用,比如添加slave时,可以直接在Credentials下拉菜单里选择对应的credential就行


Jenkins节点管理


还有git clone代码时:


此时一定要把在master上生成的 public key添加到github账号的的Profile setting页面里的SSH Keys Settings中。




用户密码方式


Jenkins节点管理


Jenkins节点管理


Jenkins节点管理


Jenkins节点管理


Jenkins节点管理


ssh bug


下线重连就好了


<===[JENKINS REMOTING CAPACITY]===>ERROR: Unexpected error in launching a agent. This is probably a bug in Jenkins.
java.lang.IllegalStateException: Already connected
        at hudson.slaves.SlaveComputer.setChannel(SlaveComputer.java:594)
        at hudson.slaves.SlaveComputer.setChannel(SlaveComputer.java:432)
        at hudson.plugins.sshslaves.SSHLauncher.startAgent(SSHLauncher.java:607)
        at hudson.plugins.sshslaves.SSHLauncher.access$400(SSHLauncher.java:113)
        at hudson.plugins.sshslaves.SSHLauncher$1.call(SSHLauncher.java:441)
        at hudson.plugins.sshslaves.SSHLauncher$1.call(SSHLauncher.java:406)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
[06/26/19 16:36:45] Launch failed - cleaning up connection
[06/26/19 16:36:45] [SSH] 连接关闭。

私钥方式


记住是私钥,不是公钥,cat .ssh/id_rsa


Jenkins节点管理


-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAzOx9ORYwSAKdyRBRsfD85MmXv3PurJoST1nJE4QqumygHcsU
HnkQp6NfDjCiJKJjXRpxDijvoQGa+xMpJySbiL5LzFlEWk17RX+fs3ztEk7ot8l9
jWKoTDWUsD7zMKXTTllKO6bOivvyUPPWqhgZ4Cuu29Fsxq2chU4Wg63eq2b7wKbg
rFgDkL9XMqVMtxxTbhyXjBRFkHtIWIFOSeDBlfuvfW3odDZh3sfUqTjdPAPGlQUA
K9eIplaQkVyN33FZ3eXwr5ylLBca1aCM7WKRVVOuZKFrv4Uqb6WB454ln7jlmz2r
MYaD4nk1IXcBjXGAshpAVd/IBC5nEJgpPeZFVwIDAQABAoIBAEkzCKAFrwVp+dbC
f4wiWxOWdyAqV01MU9IIbm0MPv8Moj1CN1OTR0G6d8/ny2NupjOxqES4lrBalHOv
KnoS94PnBche8q2XE7uFlRRWQZDSowpTbQe+AAQI963lLpVoBozsFDouoYS/7pTA
JSPpLAUJVZKrwkFN7qUneZ9b0jhDEsri5rSSI5xzMIYKMcNm2ZMpVzVCTQhRgPo2
LzGz76boTzFBXZ3y5QM1LPG3rbpRWE1vXSpvx6Q2onG7VdWGz6fwlEQC6KjksrKP
UymevpzD+RBuWC5JAlZ1Q6XBRVJdqE+p6pTobkdHGDGy/WeI5JUTYBC9oGnyvIi4
PFeQu9ECgYEA+p717KJtWfmXlbCYlSC7C5AFwQc7vkKPVeCdKNLXW13VB7Ke8yuo
u5Vl1Z4vvBZNqmCn0kK07vJMnIjSbQ/BTPefQ0NikZWQ8/eBZ8THNgti2aEpaH9R
r1juqScahgWbS8ARrFuGBHo/rkz/jOML66jhkYBtSW6ZgPWJuL7ExsUCgYEA0VJx
7O+6U1i/o6mbQKhJH92ITPc28UM4jAywUY7it3Bhulf1Ldlr05SSvruMtiHwFVmz
kC3jIUKA5wQfwJz70glVLPfLchg/eCBj+ejJztxLiDBTxAlmt74ptkGtNdZ9oQ8i
hcr3x7GnCmAT/wmkSPgTNJhz0OO20MP6xAvFfWsCgYEA+lh5ffROWVdKBVwPPsAg
N4+ZP9Vy5z3jojwpoRLjzr+vQe46etu8xAybWcSXGEILOMsuOIkr5Zgh0SeXUxwu
0ix0aaNRPe3yitFM8ZQODr1W89/Z1imANjEWzd9izkehdgyZWttdxvE61WjSyTAv
wyrCkC6CfJy/N6ON+/6L36UCgYEAhsWifH9NZGR73xBQ2ayAiHfGTmfNhEFXozR4
QcrRxnIhOi1vuvmGJ1A9u3hd/NaVEeoTZv1khAGhpRxOpWFt8an4oV9aKjfaham1
NS7g4MOODj2vcUTsUdmqWaKnt0ZG1PA9tg8cwgJsHo4F0euPTzwKgY624wP6rSfB
yYAaw8kCgYAJ4NKVWy3Zy4iPeUE+h1paQQEgJpqwpeMPnEXn5RJ/FN1bwseTIa3n
ZqN9toDLdNH8w0qnhUiAqqa5qrkREbvYPb9QSYt7pi3iV7nOsw2o0BDqT+AusdLz
A37TQC2jih/YyMJ1eepmTtJN9T4LmtsuZLa43817MAkgu9geRqzdJg==
-----END RSA PRIVATE KEY-----

复制节点


在节点环境配置好之后,我们再添加节点就可以复制了,修改IP和其他自定义配置即可。


Jenkins节点管理


JNLP方式连接salve (回头补上)


不需要master必须能够ssh连接到slave,只需要两者能够ping通即可。


job调用节点



  • 限制项目运行的节点

    Jenkins节点管理


  • 参数选择node或label



并发构建


需要安装Node and Label parameter plugin插件


需要配置node类型参数



  • 如果两个都配置,node参数优先生效



label方式


Jenkins节点管理


Jenkins节点管理


Jenkins节点管理


node方式


可能是我配置的问题,看起来像是并发构建了


Jenkins节点管理


Jenkins节点管理



Jenkins节点管理





原文地址:


https://www.cnblogs.com/wangxu01/articles/11103423.html








Jenkins节点管理




喜欢请关注,有用请转发~












升职、加薪、无漏测-点“在看”












推荐阅读
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
  • Linux环境下Git安装及常见问题解析
    本文详细介绍了在Ubuntu系统中安装Git的过程,包括环境检查、软件安装、用户配置以及SSH密钥生成等步骤,并针对安装过程中可能出现的问题提供了有效的解决方案。 ... [详细]
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
  • 本文详细介绍了Java中实现异步调用的多种方式,包括线程创建、Future接口、CompletableFuture类以及Spring框架的@Async注解。通过代码示例和深入解析,帮助读者理解并掌握这些技术。 ... [详细]
  • 本文探讨了如何通过一系列技术手段提升Spring Boot项目的并发处理能力,解决生产环境中因慢请求导致的系统性能下降问题。 ... [详细]
  • 本文介绍如何配置SecureCRT以正确显示Linux终端的颜色,并解决中文显示问题。通过简单的步骤设置,可以显著提升使用体验。 ... [详细]
  • WinSCP: 跨Windows与Linux系统的高效文件传输解决方案
    本文详细介绍了一款名为WinSCP的开源图形化SFTP客户端,该工具支持SSH协议,适用于Windows操作系统,能够实现与Linux系统之间的文件传输。对于从事嵌入式开发的技术人员来说,掌握WinSCP的使用方法将极大提高工作效率。 ... [详细]
  • 利用SSH隧道实现外网对局域网机器的安全访问
    本文探讨了一种常见的网络配置问题及其解决方案,即如何在外网环境下安全地访问位于局域网内的计算机。特别介绍了使用SSH反向隧道技术来实现这一目标的具体步骤和注意事项。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 本文详细介绍了Linux操作系统中的cp和scp命令,包括它们的基本使用方法、常见选项以及如何通过scp命令安全地在不同主机之间传输文件。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • Python 工具推荐 | PyHubWeekly 第二十一期:提升命令行体验的五大工具
    本期 PyHubWeekly 为大家精选了 GitHub 上五个优秀的 Python 工具,涵盖金融数据可视化、终端美化、国际化支持、图像增强和远程 Shell 环境配置。欢迎关注并参与项目。 ... [详细]
  • 通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ... [详细]
  • CentOS 6.8 上安装 Oracle 10.2.0.1 的常见问题及解决方案
    本文记录了在 CentOS 6.8 系统上安装 Oracle 10.2.0.1 数据库时遇到的问题及解决方法,包括依赖库缺失、操作系统版本不兼容、用户权限不足等问题。 ... [详细]
author-avatar
hjp1993
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有