Jenkins 问题解决

本文介绍了如何解决Jenkins因插件更新失败导致无法启动的问题,以及Docker环境下Jenkins的安装步骤,包括密码获取和权限设置。此外,提到了GitLab插件创建流水线时需注意的事项,解释了Docker客户端与守护进程的角色和通信方式,包括Unix套接字和网络接口。还涉及了Jenkins服务的端口修改、以root用户运行Jenkins以及清理Maven缓存的方法。最后,文章提到了如何卸载Jenkins及其相关数据和配置,并讨论了在安装多个Java版本后的选择策略。
摘要由CSDN通过智能技术生成

1. jenkins因为插件更新错误启动不起来

把有问题的插件从plugins里移走

nohup java -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war &

2.Docker 安装

docker run -d -p 8801:8080 -p 50000:50000 -v jenkins_home:/home/admin/jenkins_home --name jenkins --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -v $(which kubectl):/usr/local/bin/kubectl -v ~/.kube/config:/var/jenkins_home/.kube/config jenkins/jenkins:lts
#拿到密码
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

# docker 组是一个 Linux 用户组,主要用于管理访问 Docker 守护进程的权限
# 创建一个名为 docker 的新组
sudo groupadd docker
# 将当前用户添加到 docker 组
sudo usermod -aG docker admin
# 使组更改生效
newgrp docker

# 这条命令会将 /var/run/docker.sock 文件的所有者更改为 admin 用户,同时将其所属组更改为 docker 组
sudo chown admin:docker /var/run/docker.sock
# 这条命令会更改 /var/run/docker.sock 文件的权限,以便用户组(docker 组)可以读取和写入该文件。
# 在这里,660 表示文件的权限设置如下:

# 所有者(root):读取(4)+ 写入(2)= 6
# 所属组(docker):读取(4)+ 写入(2)= 6
# 其他用户:无权限(0)
sudo chmod 660 /var/run/docker.sock

安装gitlab插件
创建流水线
在这里插入图片描述
在这里插入图片描述
注意是main分支,不是master分支,脚本路径Jenkinsfile

在 Docker 架构中,客户端和守护进程分别扮演着不同的角色。我们可以通过以下比喻来理解这两个概念:

假设你正在经营一家餐厅,客户端就好比是餐厅的服务员,而守护进程则像是厨师。

客户端(服务员): 客户端是 Docker 的一个组件,它允许用户与 Docker
系统进行交互。就像服务员接收顾客的点菜请求并将其传递给厨师一样,Docker
客户端接收用户输入的命令并将这些命令发送给守护进程以执行。客户端主要负责处理用户界面,例如命令行界面或图形界面。

守护进程(厨师): 守护进程是 Docker 系统的核心组件,它负责管理和操作 Docker
容器。就像厨师根据服务员提供的点菜请求来烹饪菜肴一样,Docker
守护进程根据客户端发送的命令来创建、运行、停止和管理容器。守护进程在后台运行,并通过 Unix 套接字或网络接口与客户端进行通信。

在这个比喻中,服务员(客户端)和厨师(守护进程)需要通过某种方式进行通信,以便将顾客的请求从前台传递到后台。在 Docker
的情境中,这种通信是通过 Unix 套接字(例如 /var/run/docker.sock)或网络接口实现的。

因此,客户端和守护进程在 Docker 架构中共同协作,以便用户能够轻松地管理和操作容器。

在 Docker 中,客户端和守护进程可以通过两种方式进行通信:Unix 套接字和网络接口。这里的网络接口指的是使用 TCP/IP
协议进行通信,客户端和守护进程通过网络套接字(例如 TCP 端口)进行连接。

我们可以用快递公司的例子来说明 Docker 中的两种通信方式:

Unix 套接字(/var/run/docker.sock):
这类似于将包裹从一个办公室内的部门传递给另一个部门。在这种情况下,通信仅发生在同一台计算机上。在 Unix 套接字通信中,Docker
客户端和守护进程都运行在同一台计算机上,通信通过文件系统中的一个特殊文件(套接字文件,如 /var/run/docker.sock)进行。

网络接口(TCP/IP):
这类似于将包裹从一个城市的快递公司寄给另一个城市的快递公司。在这种情况下,通信通过互联网或局域网进行。Docker
客户端和守护进程可以运行在不同的计算机上,它们通过 TCP/IP 协议(例如 TCP 端口 2375 或
2376)进行连接。这种方式允许在远程计算机上管理 Docker 容器。

在大多数情况下,默认情况下 Docker 会使用 Unix 套接字进行通信。然而,你也可以配置 Docker
守护进程以便通过网络接口进行通信,从而实现远程访问和管理。这种设置通常用于大型部署和分布式系统,例如在多个节点上运行 Docker
Swarm 集群。

需要注意的是,使用网络接口进行通信可能会导致安全风险,因为它可能允许未经授权的用户访问 Docker
守护进程。因此,在使用此方法时,应确保正确配置防火墙和加密设置,以保护通信通道。

webhooks

在gitlab那里可以点test
在这里插入图片描述
在这里插入图片描述

安装Jenkins

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
sudo yum install jenkins
sudo systemctl start jenkins
sudo systemctl enable jenkins
# 改端口
cd /usr/lib/systemd/system
vim jenkins.service
# 或者
vim /usr/lib/systemd/system/jenkins.service

# 修改为想要的端口
Environment="JENKINS_PORT=8889"

# 重新加载配置文件
systemctl daemon-reload

Jenkins改成root用户

修改/etc/sysconfig/jenkins ,Jenkins的用户为root

vim /usr/lib/systemd/system/jenkins.service
 30 # Unix account that runs the Jenkins daemon
 31 # Be careful when you change this, as you need to update the permissions of
 32 # $JENKINS_HOME, $JENKINS_LOG, and (if you have already run Jenkins)
 33 # $JENKINS_WEBROOT.
 34 User=root
 35 Group=root
 36 
 37 # Directory where Jenkins stores its configuration and workspaces

systemctl daemon-reload    # 重新加载service文件
systemctl restart jenkins     # 重新启动Jenkins

Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5

清除maven缓存

cd ~/.m2/repository
rm -rf *

卸载Jenkins

在这里插入代码片
# 停止Jenkins服务:
systemctl stop jenkins
# 卸载Jenkins软件包:
rpm -e jenkins
# 删除Jenkins数据目录:
rm -rf /var/lib/jenkins
# 删除Jenkins日志文件:
rm -rf /var/log/jenkins
# 删除Jenkins配置文件:
rm -rf /etc/jenkins

安装多个版本java后,java的选择

sudo update-alternatives --config java
# 然后选择你想要的java版本
java -version
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值