首页 > 编程语言 >Jenkins 系列2 --- Node/Agent

Jenkins 系列2 --- Node/Agent

时间:2023-07-09 22:47:25浏览次数:48  
标签:Node Pipeline jar Agent --- Controller Jenkins

一、概要

1. 承上启下

Jenkins系列

2. 概念

(1) Node/Agent

Node节点是Jenkins环境的重要组成部分,它用于执行Pipeline。

为了支持分布式CD,Jenkins设计了一个Controller对应多个Node/Agent的架构,Node可以与Controller部署在同一机器上,但是大部分情况应该是位于不同的机器上,甚至这些机器拥有不同的运行环境(Windows、Linux、Node.js、Java、Python)。

Controller和Node通过TCP或SSH连接,Controller的作用是管理、监控、编排(orchestrate)连接到自己的Node。Node的任务是接受Controller分配的任务并执行。

(2) Built-In Node

当我们安装完Jenkins登录后,首页右上方会给出提示:

意思是为了安全考量,推荐我们自己创建单独的Agent,而不是使用Jenkins自带的Node。

3. 消除警告

(1) 登录Jenkins,进入Dashboard->Manage Jenkins->Nodes and Clouds

(2) 此时,我们可以看到系统内建的Node

点击编辑,将其"Number of executors"调整为0。

保存后,右上角的警告随之去除。

二、部署

从链接方式的角度来看,Jenkins支持两种Node部署方式,一种是SSH(主要用于远程Node部署),另一种是TCP方式,本文选用后者。

1. 依赖

部署Node的依赖条件非常简单:

a. 宿主机有可用网络;

b. Java环境。

2. Agent TCP Port

进入Dashboard->Manage Jenkins->Security页面,找到Agents配置节:

将TCP port for inbound agents的选项设置为Random并Save。

3. 创建新Node

(1) 在Dashboard->Nodes页面,点击右上角的"+ New Node":

填写Node Name,选择Permanent Agent,点击"Create"。

(2) 进一步配置Node的其他属性

a. Name: 是必填项,不允许包含特殊字符(?*/\%!@#$^&|<>[]:;)

b. Number of executors: 同一时间执行Pipeline的个数,建议设置为Node所在服务器的CPU核心数;

c. Remote root directory: 是Node所在服务器分配给当前Node运行的目录,需要创建;

d. Labels: 标签是一个非常实用的功能,用于区分不同的Node类型。设想一下,公司应用端分为Windows和OS,两者的编译和打包环境不同,Node1用于Windows环境,Labels值为"Windows";Node2用于OS环境,Lables值为Apple。在Pipeline的定义文件中,可以指定Pipeline所用的Node Labels,当启动Pipeline时,Jenkins会自动寻找合适的Node执行Pipeline。

多个Labels用空格拆分。

4. 配置Node宿主机

(1) 创建目录

sudo mkdir -p /var/opt/Jenkins/nodes/Node1
sudo mkdir -p /var/opt/Jenkins/nodes/Node2

(2) 下载agent.jar

curl -sO https://jenkins.example.com/jnlpJars/agent.jar

(3) 启动Agent

java -Djavax.net.ssl.trustStore=/var/opt/java/cacerts -Djavax.net.ssl.trustStorePassword=changeit -jar agent.jar -jnlpUrl https://jenkins.example.com/computer/Node1/jenkins-agent.jnlp -secret "xxx" -workDir "/var/opt/Jenkins/nodes/Node1"

注意,如果Jenkins使用了自签名证书,则需要解决证书信任问题,可参考 Java自签名证书的信任处理

(4) 检查Node状态

三、参考

1. 官方

https://www.jenkins.io/doc/book/using/using-agents/

标签:Node,Pipeline,jar,Agent,---,Controller,Jenkins
From: https://www.cnblogs.com/eagle6688/p/17537608.html

相关文章

  • vue--day12--深度监视
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>天气案例--监听属性</title><scrip......
  • 洛谷P1443:马的遍历--题解
    写在前面这是蒟蒻第一篇题解。作为一名没带脑子的初中生的第一篇题解,本题解必定存在诸多错误,给您带来的不便敬请谅解。对于不足之处与错误,还请多多包涵,并欢迎批评指正!本题目来自于洛谷,网址https://www.luogu.com.cn/problem/P1443。非营利性,侵权请联系删除。题目详情马的遍历......
  • 1-MyBatisPlus 入门案例与简介
    1.入门案例MybatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提供效率。开发方式基于MyBatis使用MyBatisPlus基于Spring使用MyBatisPlus基于SpringBoot使用MyBatisPlusSpringBoot整合MybatisPlus具体实现步骤为:创建数据库......
  • Go 语言 for-range 的两个坑,你踩过吗?
    坑一:迭代时协程引用索引和值先看看下面的例子,你知道最终输出的结果是什么吗?packagemainimport( "fmt" "time")funcmain(){ varm=[]int{1,3,5} fori,v:=rangem{ gofunc(){ fmt.Println(i,v) }() } time.Sleep(time.Second)}不知道的同学......
  • #yyds干货盘点# LeetCode程序员面试金典:区域和检索 - 数组不可变
    1.简述:给定一个整数数组 nums,处理以下类型的多个查询:计算索引 left 和 right (包含left和right)之间的nums元素的和,其中 left<=right实现NumArray类:NumArray(int[]nums)使用数组nums初始化对象intsumRange(inti,intj)返回数组nums 中索引 left 和 r......
  • 《C++》容器--deque
    deque双端数组。可以对头尾进行插入和删除操作#define_CRT_SECURE_NO_WARNINGS1#include<iostream>#include<deque>#include<algorithm>usingnamespacestd;voidprintdeque(constdeque<int>&d){ for(deque<int>::const_iteratorit=d.begi......
  • 快速排序-第k个数
    题目给定一个长度为$n$的整数数列,以及一个整数$k$,请用快速选择算法求出数列从小到大排序后的第$k$个数。输入格式第一行包含两个整数$n$和$k$。第二行包含$n$个整数(所有整数均在$1∼109$范围内),表示整数数列。输出格式输出一个整数,表示数列的第$k$小数。数据......
  • 文心一言 VS 讯飞星火 VS chatgpt (56)-- 算法导论6.3 2题
    文心一言VS讯飞星火VSchatgpt(56)--算法导论6.32题对于BUILD-MAX-HEAP中第2行的循环控制变量i来说,为什么我们要求它是从A.length/2到1递减,而不是从1到A.length/2递增呢?文心一言:在BUILD-MAX-HEAP的第2行中,我们使用循环控制变量i从A.length/2到1递减,而不是......
  • 2023-07-09:给定N、M两个参数, 一共有N个格子,每个格子可以涂上一种颜色,颜色在M种里选, 当
    2023-07-09:给定N、M两个参数,一共有N个格子,每个格子可以涂上一种颜色,颜色在M种里选,当涂满N个格子,并且M种颜色都使用了,叫一种有效方法。求一共有多少种有效方法。1<=N,M<=5000。返回结果比较大,请把结果%1000000007之后返回。答案2023-07-09:这两种算法用于计算涂色的......
  • vue-day12--监听属性
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>天气案例--监听属性</title><scrip......