安装【Jenkins-cluster in CentOS7.x】

资料准备

下载安装jar包

下载地址 > 下载按钮 > Regular releases (Weekly) > Past Releases > 2.343 > jenkins.war

准备集群节点
节点角色地址端口安装软件
node-126.35master192.168.126.358080jenkins.jar、git、jdk、maven
node-126.36node192.168.126.36xremote.jar、git、jdk、maven
node-126.28node192.168.126.35xremote.jar、git、jdk、maven

软件安装

安装目录
  • 安装目录默认为/root/.jenkins/
[root@localhost jenkins]# pwd
/usr/local/jenkins
[root@localhost jenkins]# ll
总用量 88664
-rw-r--r-- 1 root root 90780629 78 15:10 jenkins.war
drwxr-xr-x 2 root root       24 78 15:19 logs
-rwxr-xr-x 1 root root      184 78 16:27 start.sh
-rwxr-xr-x 1 root root      209 78 14:32 stop.sh
开机自启动服务脚本
  • 安放路径:/usr/lib/systemd/system/jenkins.service
[Unit]
Description=Jenkins-Console
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/jenkins/start.sh
ExecReload=/usr/local/jenkins/stop.sh && /usr/local/jenkins/start.sh
ExecStop=/usr/local/jenkins/stop.sh
PrivateTmp=true

[Install]
WantedBy=multi-user.target
启动服务脚本
#!/bin/bash
nohup /usr/local/jdk-11.0.15.1/bin/java -jar /usr/local/jenkins/jenkins.war --httpPort=8080 --javaHome=/usr/local/jdk-11.0.15.1 >/usr/local/jenkins/logs/jenkins.log 2>&1 &
停止服务脚本
#!/bin/bash
pid=$(ps -ef | grep jenkins | grep -v grep | awk '{print $2}')

if [ -n "${pid}" ];then
   kill -9 $pid
   echo "pid = ${pid}, already stopped jenkins ~"
else
   echo "jenkins not in running ~"
fi

环境安装

Git安装以及配置

安装参考:安装【Git in CentOS7.x】

Maven安装以及配置

安装参考:安装【Maven in CentOS7.x】

Jdk11安装以及配置

安装参考:安装【Jdk11 in CentOS7.x】

软件安装

权限说明

系统管理 > 全局安全配置

  • 授权策略选择 安全矩阵
  • 管理员选择 全部
  • 非管理员选择除了 “Administer” 以外的所有权限->登录后看不到 系统管理 菜单
插件选择
  • 推荐使用自定义安装,选择自己需要的插件。
    插件选择截图

集群搭建

部署slave从节点

系统管理 > 节点管理 > 新增节点
节点管理截图

  • 用法:只允许绑定的job使用
  • 目录:尽量保证master/slave一致的,便于启动脚本复用。默认:/root/.jenkins
  • 配置:
    • 主机:121.199.160.218
    • 令牌:通过添加凭证配置(账号/密码)
  • 启动方式选择:Launch agent via SSH【共有4种】
    • 该方法无需提前将slave.jar部署到Node服务器,仅需配置Node服务器IP和Login Credentials(常用用户名+密码),Jenkins会自动调用sftp传送slave.jar到Node并完成该Jar包的启动。
    • 节点管理->节点列表【点击指定节点名称】->点击启动代理按钮
    • 代理节点需要提前安装好java环境,默认检查目录…;如果不存在会在日志中提示… 可通过ln -s xxx xxx 软连接做映射

配置截图01
配置截图02
配置截图03
配置截图04
配置截图05

  • 启动jenkins节点的日志如下:
SSHLauncher{host='192.168.1.143', port=22, credentialsId='0feb6f2c-b4fc-4e76-b09c-cab19d5b27ec', jvmOptions='', javaPath='', prefixStartSlaveCmd='', suffixStartSlaveCmd='', launchTimeoutSeconds=60, maxNumRetries=10, retryWaitTime=15, sshHostKeyVerificationStrategy=hudson.plugins.sshslaves.verifiers.NonVerifyingKeyVerificationStrategy, tcpNoDelay=true, trackCredentials=true}
[06/19/22 09:37:11] [SSH] Opening SSH connection to 192.168.1.143:22.
[06/19/22 09:37:11] [SSH] WARNING: SSH Host Keys are not being verified. Man-in-the-middle attacks may be possible against this connection.
[06/19/22 09:37:11] [SSH] 认证成功。
[06/19/22 09:37:11] [SSH] The remote user's environment is:
BASH=/usr/bin/bash
BASHOPTS=cmdhist:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_EXECUTION_STRING=set
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="2" [2]="46" [3]="2" [4]="release" [5]="x86_64-redhat-linux-gnu")
BASH_VERSION='4.2.46(2)-release'
CLASSPATH=.:/usr/local/jdk-11.0.15.1/lib
DIRSTACK=()
EUID=0
GROUPS=()
HOME=/root
HOSTNAME=jenkins04.zangh
HOSTTYPE=x86_64
IFS=$' \t\n'
JAVA_HOME=/usr/local/jdk-11.0.15.1
LANG=zh_CN.UTF-8
LESSOPEN='||/usr/bin/lesspipe.sh %s'
LOGNAME=root
MACHTYPE=x86_64-redhat-linux-gnu
MAIL=/var/mail/root
MAVEN_HOME=/usr/local/apache-maven-3.8.5
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/local/apache-maven-3.8.5/bin:/usr/local/jdk-11.0.15.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
PIPESTATUS=([0]="0")
PPID=1212
PS4='+ '
PWD=/root
SELINUX_LEVEL_REQUESTED=
SELINUX_ROLE_REQUESTED=
SELINUX_USE_CURRENT_RANGE=
SHELL=/bin/bash
SHELLOPTS=braceexpand:hashall:interactive-comments
SHLVL=1
SSH_CLIENT='192.168.1.140 60070 22'
SSH_CONNECTION='192.168.1.140 60070 192.168.1.143 22'
TERM=dumb
UID=0
USER=root
XDG_RUNTIME_DIR=/run/user/0
XDG_SESSION_ID=2
_=/etc/bashrc
Checking Java version in the PATH
java version "11.0.15.1" 2022-04-22 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.15.1+2-LTS-10)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.15.1+2-LTS-10, mixed mode)
[06/19/22 09:37:12] [SSH] Checking java version of /root/.jenkins/jdk/bin/java
Couldn't figure out the Java version of /root/.jenkins/jdk/bin/java
bash: /root/.jenkins/jdk/bin/java: 没有那个文件或目录

[06/19/22 09:37:12] [SSH] Checking java version of /usr/local/jdk-11.0.15.1/bin/java
[06/19/22 09:37:12] [SSH] /usr/local/jdk-11.0.15.1/bin/java -version returned 11.0.15.1.
[06/19/22 09:37:12] [SSH] Starting sftp client.
[06/19/22 09:37:12] [SSH] 正在拷贝最新版本的 remoting.jar...
Source agent hash is CFA58B0B329D35B9E202D2E27A11B3A2. Installed agent hash is CFA58B0B329D35B9E202D2E27A11B3A2
Verified agent jar. No update is necessary.
Expanded the channel window size to 4MB
[06/19/22 09:37:13] [SSH] Starting agent process: cd "/root/.jenkins" && /usr/local/jdk-11.0.15.1/bin/java  -jar remoting.jar -workDir /root/.jenkins -jar-cache /root/.jenkins/remoting/jarCache
619, 2022 9:37:13 上午 org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir
信息: Using /root/.jenkins/remoting as a remoting work directory
619, 2022 9:37:14 上午 org.jenkinsci.remoting.engine.WorkDirManager setupLogging
信息: Both error and output logs will be printed to /root/.jenkins/remoting
<===[JENKINS REMOTING CAPACITY]===>channel started
Remoting version: 3025.vf64a_a_3da_6b_55
Launcher: SSHLauncher
Communication Protocol: Standard in/out
This is a Unix agent
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by jenkins.slaves.StandardOutputSwapper$ChannelSwapper to constructor java.io.FileDescriptor(int)
WARNING: Please consider reporting this to the maintainers of jenkins.slaves.StandardOutputSwapper$ChannelSwapper
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Evacuated stdout
Agent successfully connected and online
......

新建任务

限制任务执行的节点

新建test01任务 > General > 限制项目的运行节点【选择douke-slave】

  • 系统管理 > 全局工具配置 > Git/Maven/Jdk配置

    • 此配置只对master主节点生效
  • 系统管理 > 节点管理 > 配置从节点 > 节点属性 > Git/Maven/Jdk配置

    • 此配置只对slave节点单独生效
新建第一个项目
  • 新建一个任务名称【选择“构建一个自由风格的软件项目”】
  • Git配置/调用顶层Maven项目
    • 目标:clean package -Dmaven.test.skip=true
    • POM:pom.xml
  • 执行shell【构建】
    # 复制可执行jar文件
    cp /root/.jenkins/workspace/dev002/target/demo-0.0.1-SNAPSHOT.jar /usr/local/opt/demo/demo-0.0.1-SNAPSHOT.jar
    # 执行启动脚本
    sh /usr/local/opt/demo/restart.sh
    
构建后操作
  • 发邮件,采用”Email Extension Plugin“插件,版本为2.87
    邮件扩展插件截图

踩坑记录

Jenkins启动报错:AWT is not properly configured on this server.
  • 安装如下软件后,重新启动jenkins
yum install dejavu-sans-fonts -y
yum install fontconfig -y
yum install xorg-x11-server-Xvfb -y
Jenkins节点报错:/root/.ssh/known_hosts [SSH] No Known Hosts file was found at /root/.ssh/known_hosts. Please ensure
  • Host Key的校验策略选择“不校验”即可
    配置截图01
某些时候安装的时候会报“该Jenkins实例似乎已离线”,导致无法在线安装插件
  • 出错是的安装页面,一般原因有两种:1.确实网络不通 2.Jenkins会通过检查www.google.com链接测试网络连通性(位置在JENKINS_HOME/updates/default.json文件中的connectionCheckUrl字段),但是因为国内被墙了导致检查失败。
    问题截图
  • 解决方法:
  1. 通过修改default.json文件的 connectionCheckUrlhttp://www.baidu.com/ ,但是实践发现这种修改方式,每次jenkins重启后又会被还原。
  2. 最终通过修改/etc/hosts文件添加 180.101.49.11 www.google.com 本地对google域名进行解析到一个能访问的通的地址(此处给出的是 180.101.49.11 是百度的地址),改完后重新启动Jenkins。注:此url应该是一个页面,只能 ping 通是不行的,例如 114.114.114.114
    修改后重启启动,正常截图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值