安装的时候,需要注意集群模式的时候,客户端,也是需要安装Java环境的,然后还需要设置免密登陆的操作。 jenkins的集群操作有三种,1. 增加物理机器的slave , 2.通过docker 的插件来进行动态的slave ,3.通过k8s进行动态的扩容和缩容

下载地址

https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.164.2/jenkins.war

准备工作

  1. java安装
  2. tomcat安装
  3. maven安装 ,最好做一个 ln -s /usr/local/maven/bin/mvn /usr/bin/mvn 这个软连接,不然找不到mvn命令,头疼
  4. git 安装

node 节点和注解点不同的,就是不需要安装 jenkins了,其他的都要和master一个球样

1 jenkins安装

1.1 设定环境变量

编辑/etc/profile
修改配置 /etc/profile ,增加JENKINS_HOME 这个环境变量,然后通过source /etc/profile让环境变量生效 。

JENKINS_HOME=/data/jenkins_data/
export JENKINS_HOME

配置环境变量
Jenkins之集群安装(基于物理节点)-yellowcong_其他
生效之后,可以看到环境变量生效了
Jenkins之集群安装(基于物理节点)-yellowcong_java_02
配置后的目录,可以看到目录修改为我们自己定义的目录了
Jenkins之集群安装(基于物理节点)-yellowcong_环境变量_03

1.2 安装插件

安装推荐的插件即可,后期自己在安装写自己想要的插件。
Jenkins之集群安装(基于物理节点)-yellowcong_环境变量_04

这时候就开始下载相关的依赖了,只有慢慢的等着依赖下载完事。
Jenkins之集群安装(基于物理节点)-yellowcong_其他_05

创建用户,设定第一个用户,然后选择保存并完成。 这样就创建了一个yellowcong的用户,不然一直都是使用admin 这个用户,导致tomcat 重启后,还是登陆不了。
Jenkins之集群安装(基于物理节点)-yellowcong_java_06

设置实例的配置,我们可以先点击为不需要这个配置
Jenkins之集群安装(基于物理节点)-yellowcong_java_07

现在就简单的安装完成了Jenkins
Jenkins之集群安装(基于物理节点)-yellowcong_Java_08

1.2 设置Jenkins的tomcat 编码

添加下面的配置,即可解决url不识别的问题 ,不然就会报错,说url的编码问题

<Connector port="8082" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" />

1.3 配置jenkins URL

说我们没有设置这个url的地址信息
Jenkins之集群安装(基于物理节点)-yellowcong_其他_09
Jenkins之集群安装(基于物理节点)-yellowcong_环境变量_10

1.4 配置jdk和maven

maven的安装,可以参考 https://blog.csdn.net/yelllowcong/article/details/78285529 ,进行安装 , 不要选择自动安装了,直接选择自己已经设定好的mvn和jdk 即可。

Jenkins之集群安装(基于物理节点)-yellowcong_Java_11

2 插件安装

我们安装的时候,可以不用选择插件,但是后面必须安装基础的插件,不然就导致代码都没法拉取下来。

Git
GitLab
SSH Slaves
SSH
Publish Over SSH

3 集群设定

3.1 添加节点

Jenkins之集群安装(基于物理节点)-yellowcong_环境变量_12

3.2 设定私钥

这个地方有两个密钥,1. 拉去代码的密钥 2.Jenkins 访问到 slave节点的密钥。
这两个密钥可以使用同一个
Jenkins之集群安装(基于物理节点)-yellowcong_java_13

Jenkins之集群安装(基于物理节点)-yellowcong_java_14

添加拉取代码的私钥,创建gitlab用户,然后添加密钥
Jenkins之集群安装(基于物理节点)-yellowcong_环境变量_15

3.3 设定节点

设置节点前,一定要先把公钥推送到slave节点,然后才能加载到这个slave节点
Jenkins之集群安装(基于物理节点)-yellowcong_环境变量_16

3.4 添加Java 环境变量

我们根据自己的设定,配置 JAVA_HOME ,如果不设定这个
Jenkins之集群安装(基于物理节点)-yellowcong_其他_17

3.5 加载节点

Jenkins之集群安装(基于物理节点)-yellowcong_java_18
可以看到节点
Jenkins之集群安装(基于物理节点)-yellowcong_Java_19

6 指定节点构建

6.1 配置节点

在节点配置的时候,加上 node2的标签
Jenkins之集群安装(基于物理节点)-yellowcong_其他_20

创建项目的时候,选择好我们需要在哪个机器上跑这个服务,通过label 来标明
Jenkins之集群安装(基于物理节点)-yellowcong_java_21

常见问题

1.你的容器没有使用UTF-8解码URL地址。如果你使用了非ASCII字符作为任务名称等,可能会有问题。 查看 容器 和 Tomcat i18n 获取更多详情。

Jenkins之集群安装(基于物理节点)-yellowcong_Java_22
添加下面的配置,即可解决url不识别的问题

<Connector port="8082" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" />

https://blog.csdn.net/yelllowcong/article/details/78285196
https://blog.csdn.net/yelllowcong/article/details/80009460

2. 代理错误

Jenkins之集群安装(基于物理节点)-yellowcong_java_23

3. Dependency errors

Dependency errors:

Some plugins could not be loaded due to unsatisfied dependencies. Fix these issues and restart Jenkins to restore the functionality provided by these plugins.

Pipeline: API version 2.33
scm-api version 2.2.6 is missing. To fix, install version 2.2.6 or later.

Jenkins之集群安装(基于物理节点)-yellowcong_其他_24

直接去插件仓库下载scm api的插件,然后重启,就没有这个问题了,如果找不到插件,可以直接去https://repo.jenkins-ci.org/releases/org/jenkins-ci/plugins/ 这个镜像仓库去下载 依赖的hpi文件,然后上传安装,重启Jenkins 即可。
Jenkins之集群安装(基于物理节点)-yellowcong_环境变量_25

可以看到,没有这些讨厌的错误提示信息了,美滋滋了。
Jenkins之集群安装(基于物理节点)-yellowcong_java_26

4. java.io.IOException: Java not found on hudson.slaves.SlaveComputer@1b7aed83. Install a Java 8 version on the Agent.

这个问题告诉我们,客户端,也需要安装java的环境

java.io.IOException: Java not found on hudson.slaves.SlaveComputer@1b7aed83. Install a Java 8 version on the Agent.
	at hudson.plugins.sshslaves.JavaVersionChecker.resolveJava(JavaVersionChecker.java:82)
	at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:863)
	at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:833)
	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)

Jenkins之集群安装(基于物理节点)-yellowcong_java_27