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