Instale Jenkins en CentOS 7.9

Instale Jenkins en CentOS 7.9

I. Descripción general

JenkinsEs una Javaplataforma 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 Jenkinses Javauna plataforma de construcción continua escrita para , la instalación Javaes esencial.

Aquí elegimos instalar el código abierto openjdk. openjdkEs SunJDKuna implementación de código abierto . Para conocer la diferencia específica entre sí openjdky sí SunJDK, consulte el siguiente artículo para comprenderlo. Aquí podemos usar directamente yumel 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 Yumla fuente no viene con Jenkinsla fuente de instalación, necesitamos importar una Jenkinsfuente de instalación para la instalación. Después de importar, use Yumel 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, Jenkinsabrirá su puerto predeterminado en este momento 8080. Sin embargo, debido a las restricciones del firewall, debemos permitir manualmente que el firewall 8080permita que los puertos accedan a la interfaz externamente.

Aquí agregamos reglas de liberación de puertos al firewall CentOSen firewall-cmdy 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/

imagen-20230622222946408

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 Jenkinsel servidor del complemento está en el extranjero, la velocidad no es la ideal. Necesitamos reemplazar Jenkinsla 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.jsonreemplace 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

imagen-20230622223129352

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

imagen-20230622230545848

6. Complete la instalación

próximos pasos siguiente paso

imagen-20230622230739785

4. Prueba funcional

1. Crea una nueva tarea

El primer paso: crear un nuevo artículo

imagen-20230622230925420

Paso 2: agregar comandos

Busque 构建un elemento, seleccione 增加构建步骤, seleccione 执行shell, ingrese el siguiente comando

docker -v
docker pull node:latest

imagen-20230622231117523

Paso 3: guarde y cree ahora

imagen-20230622231210101

Paso 4: Error: sin permiso

imagen-20230622231249197

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

dockerEl esquema para es C/Sesquema. Cuando usamos dockerel comando, de hecho, el comando se utiliza para comunicarse socketcon el proceso demonio, de modo que el comando pueda ejecutarse normalmente.dockerdocker

En cambio Linux, Unix socketpertenece al rootusuario y por tanto requiere rootpermisos 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, dockerse proporciona un concepto de 用户组. Podemos Shellagregar el usuario ejecutante al dockergrupo de usuarios denominado, luego dockerel comando se puede ejecutar normalmente.

Agregue jenkins al grupo de usuarios de Docker

Y Jenkinslos usuarios finales ejecutaron do it jenkins, por lo que solo necesitamos jenkinsagregar al dockergrupo de usuarios:

sudo groupadd docker          #新增docker用户组
sudo gpasswd -a jenkins docker  #将当前用户添加至docker用户组
newgrp docker                 #更新docker用户组

reiniciar jenkins

sudo service jenkins restart

construir ahora

imagen-20230622233548479

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

Supongo que te gusta

Origin blog.csdn.net/qq_29689343/article/details/131345599
Recomendado
Clasificación