Instale Jenkins en CentOS 7.9
Directorio de artículos
I. Descripción general
Jenkins
Es una Java
plataforma de herramientas de construcción continua basada en el desarrollo de lenguajes, utilizada principalmente para la construcción/prueba continua y automática de su software y proyectos. Puede ejecutar sus configuraciones preestablecidas y crear scripts, y también puede integrarse con el código base de Git para realizar la activación automática y la sincronización de las compilaciones.
2. Instalación
1. Instale OpenJDK
Dado que Jenkins
es Java
una plataforma de construcción continua escrita para , la instalación Java
es esencial.
Aquí elegimos instalar el código abierto openjdk
. openjdk
Es SunJDK
una implementación de código abierto . Para conocer la diferencia específica entre sí openjdk
y sí SunJDK
, consulte el siguiente artículo para comprenderlo. Aquí podemos usar directamente yum
el administrador de paquetes para instalar openjdk
.
# 安装 java
yum install -y fontconfig java-11-openjdk
# 检查 java 版本
[root@localhost ~]# java -version
openjdk version "11.0.19" 2023-04-18 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.19.0.7-1.el7_9) (build 11.0.19+7-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.19.0.7-1.el7_9) (build 11.0.19+7-LTS, mixed mode, sharing)
2. Instale Jenkins
https://pkg.jenkins.io/redhat-stable/
Dado que Yum
la fuente no viene con Jenkins
la fuente de instalación, necesitamos importar una Jenkins
fuente de instalación para la instalación. Después de importar, use Yum
el comando para instalarlo.
# 使用 wget 下载 Jenkins 软件包的存储库配置文件,并将其保存到 /etc/yum.repos.d/jenkins.repo 文件中
# 证书过期,不检查证书:sudo wget --no-check-certificate -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
# 使用 rpm 导入 Jenkins 软件包的 GPG 密钥,以确保安装的软件包是经过验证的,并且没有被篡改过
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
# 安装 EPEL 的发行包,通过安装 EPEL 发行包,您可以访问一些常用的第三方软件包
yum install epel-release
# 使用 yum 安装 Jenkins 软件包
yum install -y jenkins
3. Inicie Jenkins
service jenkins start
# service jenkins restart restart 重启 Jenkins
# service jenkins restart stop 停止 Jenkins
4. Libere el puerto para Jenkins.
Después de iniciar Jenkins
, Jenkins
abrirá su puerto predeterminado en este momento 8080
. Sin embargo, debido a las restricciones del firewall, debemos permitir manualmente que el firewall 8080
permita que los puertos accedan a la interfaz externamente.
Aquí agregamos reglas de liberación de puertos al firewall CentOS
en firewall-cmd
y reiniciamos el firewall después de agregarlas.
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=50000/tcp --permanent
systemctl reload firewalld
3. Inicialice la configuración de Jenkins
1. Acceso
http://192.168.10.130:8080/
2. Desbloquea Jenkins
ver contraseña
cat /var/lib/jenkins/secrets/initialAdminPassword
3. Configure la dirección de origen de la Universidad de Tsinghua.
Debido a que Jenkins
el servidor del complemento está en el extranjero, la velocidad no es la ideal. Necesitamos reemplazar Jenkins
la fuente del complemento de la Universidad de Tsinghua antes de instalarlo, así que no haga clic en Instalar complemento todavía.
El método de sustitución es muy sencillo. Ingrese al servidor, /var/lib/jenkins/updates/default.json
reemplace la dirección de origen del complemento con la dirección de origen de la Universidad de Tsinghua y reemplace google con baidu.
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /var/lib/jenkins/updates/default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' /var/lib/jenkins/updates/default.json
4. Instale el complemento
5. Cree un usuario administrador
Aquí haga clic en "Continuar con la cuenta de administrador", la contraseña sigue siendo la contraseña predeterminada: cat /var/lib/jenkins/secrets/initialAdminPassword
6. Complete la instalación
próximos pasos siguiente paso
4. Prueba funcional
1. Crea una nueva tarea
El primer paso: crear un nuevo artículo
Paso 2: agregar comandos
Busque
构建
un elemento, seleccione增加构建步骤
, seleccione执行shell
, ingrese el siguiente comando
docker -v
docker pull node:latest
Paso 3: guarde y cree ahora
Paso 4: Error: sin permiso
Started by user admin
Running as SYSTEM
Building in workspace /var/lib/jenkins/workspace/hello-jenkins
[hello-jenkins] $ /bin/sh -xe /tmp/jenkins6376592547251823106.sh
+ docker -v
Docker version 24.0.2, build cb74dfc
+ docker pull node:latest
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/create?fromImage=node&tag=latest": dial unix /var/run/docker.sock: connect: permission denied
Build step 'Execute shell' marked build as failure
Finished: FAILURE
2. Problema de permisos de Unix Socket
ilustrar
docker
El esquema para es C/S
esquema. Cuando usamos docker
el comando, de hecho, el comando se utiliza para comunicarse socket
con el proceso demonio, de modo que el comando pueda ejecutarse normalmente.docker
docker
En cambio Linux
, Unix socket
pertenece al root
usuario y por tanto requiere root
permisos para acceder. La explicación oficial es esta:
Administre Docker como usuario no root. El demonio Docker se vincula a un socket Unix en lugar de a un puerto TCP. De forma predeterminada, ese socket Unix es propiedad del usuario root y otros usuarios solo pueden acceder a él mediante sudo. El demonio acoplable siempre se ejecuta como usuario root. Si no desea utilizar sudo cuando utilice el comando docker, cree un grupo Unix llamado docker y agréguele usuarios. Cuando se inicia el demonio de la ventana acoplable, el grupo de la ventana acoplable permite que el grupo de la ventana acoplable pueda leer/escribir la propiedad del socket Unix.
Administre Docker como usuario no root. El demonio Docker se vincula a un socket Unix en lugar de a un puerto TCP. De forma predeterminada, el socket Unix es propiedad del usuario root y otros usuarios solo pueden acceder a él a través de sudo. El demonio Docker siempre se ejecuta como usuario root. Si no desea utilizar sudo cuando utilice los comandos de Docker, puede crear un grupo de usuarios de Unix llamado Docker y agregarle el usuario. Cuando se inicia el demonio de Docker, establece la propiedad del socket Unix para leer y escribir permisos para el grupo de usuarios de Docker.
Pero en docker
, docker
se proporciona un concepto de 用户组
. Podemos Shell
agregar el usuario ejecutante al docker
grupo de usuarios denominado, luego docker
el comando se puede ejecutar normalmente.
Agregue jenkins al grupo de usuarios de Docker
Y Jenkins
los usuarios finales ejecutaron do it jenkins
, por lo que solo necesitamos jenkins
agregar al docker
grupo de usuarios:
sudo groupadd docker #新增docker用户组
sudo gpasswd -a jenkins docker #将当前用户添加至docker用户组
newgrp docker #更新docker用户组
reiniciar jenkins
sudo service jenkins restart
construir ahora
Started by user admin
Running as SYSTEM
Building in workspace /var/lib/jenkins/workspace/hello-jenkins
[hello-jenkins] $ /bin/sh -xe /tmp/jenkins1917769180207902795.sh
+ docker -v
Docker version 24.0.2, build cb74dfc
+ docker pull node:latest
latest: Pulling from library/node
0e29546d541c: Pulling fs layer
9b829c73b52b: Pulling fs layer
cb5b7ae36172: Pulling fs layer
......
6f9f74896dfa: Pull complete
f2930ff7fb60: Pull complete
c1d26179dd86: Pull complete
1fa56dd41537: Pull complete
321141c774e9: Pull complete
Digest: sha256:36aca218a5eb57cb23bc790a030591382c7664c15a384e2ddc2075761ac7e701
Status: Downloaded newer image for node:latest
docker.io/library/node:latest
Finished: SUCCESS