Jenkins 基础03 配置agent

 安装Jenkins Slave


安装slave  使用jnlp协议在宿主机上面安装,不推荐使用docker运行slave,slave里面是真正运行任务的,因为需要构建和打包的时候需要很多工具,这样需要将工具集成在docker里面,很麻烦,宿主机安装slave。

填写节点信息


系统设置 > 节点管理 > 新建节点

固定节点就是可以简单理解为静态的节点,Node节点是真正工作的,执行器节点的数量设置为1就只能执行一个任务,设置为多个就可以同时执行多个任务,多余这个值就在排队。只允许标签的才能调度。(也就是可以并发几个作业去运行,如果并发的时候需要排队,可以将这个值调大一些)

这个告诉你如何启动agent

下载agent.jar


image.png

这个告诉你如何启动agent,启动一个agent的节点(两种方式,一种是直接通过密钥方式启动,还有一种是将密钥保存在文件里面)

echo 78fd9bc07901089cf7d73e2e58a40d6bb21ff10795d4def74fb4815c56bd72f5 > secret-file

java -jar agent.jar -jnlpUrl http://192.168.179.100:8080/computer/build-01/jenkins-agent.jnlp -secret @secret-file -workDir "/data/cicd/jenkinsagent"

 先要去下载agent.jar

[root@jenkins-slave ~]# wget http://192.168.179.100:8080/jnlpJars/agent.jar

从节点也需要安装jdk

[root@jenkins-slave ~]# ls /usr/local/jdk8
ASSEMBLY_EXCEPTION  bin  include  jre  lib  LICENSE  man  release  sample  src.zip  THIRD_PARTY_README

[root@jenkins-slave ~]# tail -2 /etc/profile
export JAVA_HOME=/usr/local/jdk8
export PATH=$JAVA_HOME/bin:$PATH
[root@jenkins-slave ~]# echo 78fd9bc07901089cf7d73e2e58a40d6bb21ff10795d4def74fb4815c56bd72f5 > secret-file

[root@jenkins-slave ~]# java -jar agent.jar -jnlpUrl http://192.168.179.100:8080/computer/build-01/jenkins-agent.jnlp -secret @secret-file -workDir "/data/cicd/jenkinsagent"
Mar 28, 2021 11:02:55 PM org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir
INFO: Using /data/cicd/jenkinsagent/remoting as a remoting work directory
Mar 28, 2021 11:02:55 PM org.jenkinsci.remoting.engine.WorkDirManager setupLogging
INFO: Both error and output logs will be printed to /data/cicd/jenkinsagent/remoting
Mar 28, 2021 11:02:56 PM hudson.remoting.jnlp.Main createEngine
INFO: Setting up agent: build-01
Mar 28, 2021 11:02:56 PM hudson.remoting.jnlp.Main$CuiListener <init>
INFO: Jenkins agent is running in headless mode.
Mar 28, 2021 11:02:56 PM hudson.remoting.Engine startEngine
INFO: Using Remoting version: 4.6
Mar 28, 2021 11:02:56 PM org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir
INFO: Using /data/cicd/jenkinsagent/remoting as a remoting work directory
Mar 28, 2021 11:02:56 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Locating server among [http://192.168.179.100:8080/]
Mar 28, 2021 11:02:56 PM org.jenkinsci.remoting.engine.JnlpAgentEndpointResolver resolve
INFO: Remoting server accepts the following protocols: [JNLP4-connect, Ping]
Mar 28, 2021 11:02:56 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Agent discovery successful
  Agent address: 192.168.179.100
  Agent port:    50000
  Identity:      37:0e:55:93:bf:11:5d:47:81:69:c0:37:ef:e2:f4:22
Mar 28, 2021 11:02:56 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Handshaking
Mar 28, 2021 11:02:56 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connecting to 192.168.179.100:50000
Mar 28, 2021 11:02:56 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Trying protocol: JNLP4-connect
Mar 28, 2021 11:03:07 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Remote identity confirmed: 37:0e:55:93:bf:11:5d:47:81:69:c0:37:ef:e2:f4:22
Mar 28, 2021 11:03:10 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connected

如果碰到这种错误请检查你的master上面的50000端口是否开启

WARNING: Connection refused (Connection refused)
May 24, 2021 11:31:23 AM hudson.remoting.jnlp.Main$CuiListener error
SEVERE: http://139.198.170.122:8080/ provided port:50000 is not reachable
java.io.IOException: http://139.198.170.122:8080/ provided port:50000 is not reachable
	at org.jenkinsci.remoting.engine.JnlpAgentEndpointResolver.resolve(JnlpAgentEndpointResolver.java:311)
	at hudson.remoting.Engine.innerRun(Engine.java:689)
	at hudson.remoting.Engine.run(Engine.java:514)

[root@jenkins-master ~]# netstat -tpln | grep 50000
tcp        0      0 0.0.0.0:50000           0.0.0.0:*               LISTEN      25512/docker-proxy  
tcp6       0      0 :::50000                :::*                    LISTEN      25516/docker-proxy  

  Agent就可以正常工作了,之前设置了10个执行器,可以看到执行器的状态

上面启动的方式是前台方式启动的(上面是静态的agent,动态的agent会自己销毁,不会占用太多资源),Jenkins地址

INFO: Locating server among [http://192.168.179.100:8080/]
端口,这就是在安装master的时候为什么需要开放5000端口
INFO: Agent discovery successful
  Agent address: 192.168.179.100
  Agent port:    50000

可以指定端口 

 

Slave后台启动脚本


## 创建agent目录

mkdir -p /data/cicd/jenkinsagent
cd /data/cicd/jenkinsagent 
wget http://192.168.1.200:8080/jnlpJars/agent.jar


## 编写启动脚本
#!/bin/bash
echo e199ecad9b95bc93277d74469256a7b4b3aa7c9d2c67916e93cdd0f93c9f9a5e > secret-file
nohup java -jar agent.jar -jnlpUrl http://192.168.1.200:8080/computer/build-01/jenkins-agent.jnlp -secret @secret-file -workDir "/data/cicd/jenkinsagent" >/dev/null &


## 启动agent
sh -x start.sh
ps aux | grep agent


[root@jenkins-slave ~]# ps -ef | grep agent
root      38767      1  0 09:49 pts/0    00:00:35 java -jar agent.jar -jnlpUrl http://192.168.179.100:8080/computer/build-01/jenkins-agent.jnlp -secret @secret-file -workDir /data/cicd/jenkinsagent

Jenkins的数据目录


Jenkins采用文件存储, 其配置相关信息都保存到了XML文件中。

[root@zeyang-nuc-service jenkins]# ls -d */
caches/        jobs/  nodes/    secrets/  userContent/  war/            workspace/
fingerprints/  logs/  plugins/  updates/  users/       
  • caches: 系统缓存数据
  • jobs: Jenkins项目作业
  • nodes: Jenkins slave节点信息
  • secrets: 秘钥信息
  • userContent: 类似于web站点目录,可以上传一些文件
  • workspace: 默认的工作目录
  • fingerprints: 指纹验证信息
  • logs : 日志信息
  • plugins: 插件相关配置
  • updates: 插件更新目录
  • users: jenkins系统用户目录

jenkins所有的配置文件都是以.xml格式配置的。 

[root@jenkins build-01]# pwd
/var/lib/jenkins/nodes/build-01

[root@jenkins build-01]# cat config.xml 
<?xml version='1.1' encoding='UTF-8'?>
<slave>
  <name>build-01</name>
  <description>build-01(192.168.11.128)</description>
  <remoteFS>/data/cicd/jenkinsagent</remoteFS>
  <numExecutors>2</numExecutors>
  <mode>NORMAL</mode>
  <retentionStrategy class="hudson.slaves.RetentionStrategy$Always"/>
  <launcher class="hudson.slaves.JNLPLauncher">
    <workDirSettings>
      <disabled>false</disabled>
      <workDirPath>/data/cicd/jenkinsagent</workDirPath>
      <internalDir>remoting</internalDir>
      <failIfWorkDirIsMissing>false</failIfWorkDirIsMissing>
    </workDirSettings>
    <webSocket>true</webSocket>
  </launcher>
  <label>build</label>
  <nodeProperties/>
</slave>

config.xml  这个文件是job的配置文件

workspace尽量不要和数据目录放在一起,可以自定义,要不然目录里面io操作比较高也会影响Jenkins。 

[root@jenkins-master jobs]# pwd
/data/cicd/jenkins/jobs
[root@jenkins-master jobs]# ls
java-test

[root@jenkins-master jobs]# cd java-test/
[root@jenkins-master java-test]# ls
builds  config.xml  nextBuildNumber

Builds是其构建历史,也就是构建了多少次,也就是每一次的记录

[root@jenkins-master java-test]# cd builds/
[root@jenkins-master builds]# ls
1  2  3  4  legacyIds  permalinks
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值