自学内容网 自学内容网

docker搭建Jenkins2.346.3版本及常用工具集成配置(ldap、maven、ansible、npm等)

低版本Jenkins在线安装插件方法

文章目录

前言

Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。大体架构流程如下所示
在这里插入图片描述

jenkins特性


- 开源的java语言开发持续集成工具,支持CI,CD。


- 易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理。


- 消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告。


- 分布式构建:支持Jenkins能够让多台计算机一起构建/测试。


- 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。


- 丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。

一、资源准备

环境需求
在这里插入图片描述

ip配置部署
192.168.56.120
服务器通外网
2C6G50G容器jenkins+docker+maven+ant+git

二、安装docker

此处使用rpm包离线安装,因为我本地有包,就没有在线安装。直接yum安装也可以
docker版本:
[root@jenkins docker]# docker version
Client: Docker Engine - Community
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 17:03:45 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.13
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       4484c46d9d
  Built:            Wed Sep 16 17:02:21 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.4
  GitCommit:        212e8b6fa2f44b9c21b2798135fc6fb7c53efc16
 runc:
  Version:          1.1.1
  GitCommit:        v1.1.1-0-g52de29d
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

在这里插入图片描述

三、java环境安装

可以去oracle官网下载,也可以找其他途径,只要下载,有压缩包就可以. 我使用自己本地构建好的rpm包进行安装

#安装jdk
[root@jenkins ~]# rpm -ivh jdk-1.8.0_201-1.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1: jdk-1.8.0_201-1             ################################# [100%]

#设置并加载环境变量
[root@jenkins ~]# vim /etc/profile
# Export JAVA_HOME
export JAVA_HOME=/export/server/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASS_PATH=$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
[root@jenkins ~]# source /etc/profile

#验证版本
[root@jenkins ~]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

四、安装jenkins

1、jdk对应的jenkins版本

https://www.jenkins.io/doc/book/platform-information/support-policy-java/

在这里插入图片描述

2、容器化安装jenkins

因为docker.io默认的开源仓库地址已经被国内封禁,除非使用vpn等方式才可以访问,下方的开源镜像仓库是国内的,借此使用

#1.配置docker镜像加速器地址
[root@jenkins ~]# vim /etc/docker/daemon.json
{
  "log-driver":"json-file",
  "log-opts": {"max-size":"200m", "max-file":"3"},
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": [
        "https://swr.cn-north-4.myhuaweicloud.com"
    ]
}
[root@jenkins ~]# systemctl daemon-reload && systemctl restart docker

构建jenkins镜像

#2.构建jenkins镜像
注意: 
1、该基础镜像自带jdk1.8_341版本,可以不用在装jdk
2、plugins插件在jenkins启动后进行手动替换即可
[root@jenkins ~]# vim Dockerfile
FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/jenkins/jenkins:2.346.3-2-centos7-jdk8
USER root
WORKDIR /export/jenkins
# 将maven和jdk添加到容器中
# tar.gz添加进去后会自动解压,无需手动解压
ADD apache-maven-3.6.3-bin.tar.gz /export/
ADD node-v16.20.2-linux-x64.tar.xz /export/
COPY gradle-5.3-bin.zip /export/
ADD apache-ant-1.10.15-bin.tar.gz /export/
RUN unzip /export/gradle-5.3-bin.zip -d /export/
# 配置环境变量
ENV TZ=Asia/Shanghai
ENV M2_HOME=/export/apache-maven-3.6.3
ENV NODE_HOME=/export/node-v16.20.2-linux-x64
ENV GRADLE_HOME=/export/gradle-5.3
ENV ANT_HOME=/export/apache-ant-1.10.15

# 配置maven、node等环境变量
ENV PATH=$M2_HOME/bin:$NODE_HOME/bin:$GRADLE_HOME/bin:$ANT_HOME/bin:$PATH
# 清理工作目录
RUN rm -f /export/*.tar.gz /export/*.zip /export/*.xz

#3.构建镜像
[root@jenkins ~]# docker build -t jenkins20241103 .

#4.启动jenkins镜像
[root@jenkins export]# docker run -itd --restart=always \
--name jenkins  -p 18080:8080 \ #jenkins端口
-p 18090:50000 \ #jenkins agent端口
-v /export/jenkins:/export/jenkins \ #jenkins 目录
-v /var/run/docker.sock:/var/run/docker.sock \ #docker的sock文件
-v /usr/bin/docker:/usr/bin/docker \       # 这是为了我们可以在容器内使用docker命令
--memory 4G                    \ #限制内存使用 
jenkins20241103:latest #拉取的镜像

#5.查看jenkins状态及密钥
[root@jenkins ~]# docker container ls
CONTAINER ID     IMAGE       COMMAND     CREATED        STATUS     PORTS      NAMES
053c006fd868        swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/jenkins/jenkins:2.346.1   "/usr/bin/tini -- /u…"   About a minute ago   Up About a minute   0.0.0.0:18080->8080/tcp, 0.0.0.0:18090->50000/tcp   jenkins

[root@jenkins ~]# cat /export/jenkins/secrets/initialAdminPassword
fa85116806604c5d97b222bbb90389bd

#6.安装插件及创建超管用户,如下所示
#7.替换plugins目录,并重启jenkins
[root@jenkins jenkins]# mv plugins plugins_bak20241103
[root@jenkins jenkins]# tar -xf /root/plugins.tar.gz -C .
[root@jenkins ~]# docker restart jenkins

#8.至此,jenkins安装完成

在这里插入图片描述

3、jenkins安装插件

1、访问宿主机+暴露的jenkins端口

2、第一种方式 
修改插件地址为国内的源地址
[root@jenkins updates]#  sed -i 's#updates.jenkins.io/download/plugins#mirrors.tuna.tsinghua.edu.cn/jenkins/plugins#g' /export/jenkins/updates/default.json
[root@jenkins updates]#  sed -i 's#www.google.com#www.baidu.com#g' /export/jenkins/updates/default.json
#设置后还是下载失败,因此使用下方方法尝试下载插件

第二种方式:手动下载
jenkins 的登录页面中输入IP:PORT/restart,
然后进入 Manage Jenkins -》 Manage Plugin -> Advanced 最下面有 Update Site,
将https改成http,然后submit,check now
3、下载插件
#以上两种方式下载插件都会失败,不是网络问题,注意是jdk8不支持高版本的jenkins,因此安装的是2.346版本的jenkins,插件都是高版本的,必须大于2.387才能下载使用的。因此在网上找了一个2.346的插件包,对其替换后即可安装。
#或者就是需要哪个插件就下载对应插件的低版本,然后导入。https://zhuanlan.zhihu.com/p/647731370看这篇文章即可。
4、创建超管用户
5、登录jenkins

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

替换为2.346的插件包后,重启jenkins,最终如下所示

在这里插入图片描述

五、管理jenkins

1、用户管理

- 配置用户接入入口: 系统管理->全局安全配置。
- 默认使用的是Jenkins数据库存储
可以选择集成LDAP服务或者是GItlab服务(需要安装插件后才会有)

在这里插入图片描述

1.1、查看用户
  • 以使用Jenkins专有数据库为例,用户管理入口: 系统管理-> 管理用户

在这里插入图片描述

1.2、创建用户

在这里插入图片描述

1.3 、删除用户

在这里插入图片描述

1.4、更新用户

在这里插入图片描述

在这里插入图片描述

2、凭据管理

  • 凭据-> 系统-> 全局凭据在这里插入图片描述
2.1、新建凭据

支持多种凭据类型及凭据的作用范围

在这里插入图片描述

2.2、删除和更新凭据

在这里插入图片描述

2.3、移动凭据

凭据支持多个域,支持将凭据移动到其他域中

在这里插入图片描述

3、权限管理

系统> 全局安全配置

权限默认使用 Role-Based Strategy,前提是安装了这个插件。如果没有就手动下载插件安装
https://updates.jenkins.io/download/plugins/role-strategy/#689.v731678c3e0eb_

在这里插入图片描述

3.1、管理权限
全局权限

凭据参数、字符参数、密码参数、布尔值参数、文件参数、文本参数、运行时参数、选项参数

  • 系统设置->Manage and Assign Roles->Manage Roles
  • Global roles:添加用户和用户组,分配某个用户属于哪个用户组。
  • Item roles:添加某个工程或某一组工程的用户或用户组
  • Slave roles:添加某个节点或某一组节点的用户或用户组

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

项目权限

在这里插入图片描述

权限授权

在这里插入图片描述

在项目角色分配权限中,我们将apollo只能访问A开头的项目,不能访问B开头的项目

在这里插入图片描述

验证结果
通过superOps超管账号创建一个流水线项目,名称为A-web1

在这里插入图片描述

切换apollo账号进行登录,验证是否对这个A-web1项目有构建、查看权限等。结果是符合分配的权限的

在这里插入图片描述

4、视图管理

默认会创建一个all视图里面存放所有的项目

在这里插入图片描述

4.1、创建视图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.2、删除视图

在这里插入图片描述

4.3、更新视图

在这里插入图片描述

5、插件管理

系统设置->插件管理

在这里插入图片描述

5.1、 安装插件

在这里插入图片描述

5.2、卸载插件

在这里插入图片描述

5.3、手动安装插件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.4、上传插件
将5.3步骤中下载好的插件文件进行上传安装。这种情况适用于jenkins低版本安装不了高版本插件时使用

在这里插入图片描述

5.5、切换插件更新站点
插件管理-->高级-->升级站点
事实上,这个方法也不行,这个方法只适用于最新版本的jenkins,不适用低版本的jenkins

在这里插入图片描述
切记: 关于如何在线更新低版本jenkins对应的插件,请看我顶部的文章链接,包成功.

六、jenkins工具集成

1、构建工具集成

注意事项: 以下集成步骤不用再宿主机进行操作,因为已经封装到了jenkins容器目录中,写出来也是让大家有个了解。版本都是一致的

1.1、集成maven
先决条件:
JDK: 在maven3.3 以上的版本需要JDK版本1.7+。
内存: 没有最低限制。
磁盘: 1G+可用磁盘空间。 
操作系统: 没有限制。
1、下载maven地址
http://maven.apache.org/download.cgi

2、安装maven
[root@jenkins ~]# tar -xf apache-maven-3.6.3-bin.tar.gz -C /export/
[root@jenkins export]# mv apache-maven-3.6.3 maven
[root@jenkins export]# vim /etc/profile
export MAVEN_HOME=/export/maven
export PATH=$PATH:$MAVEN_HOME/bin
[root@jenkins export]# source /etc/profile

3、maven常用命令
clean install -DskipTests
clean package 

4、结果验证,如下图所示

在这里插入图片描述

1.2、Jenkins配置maven
  • 系统设置->全局工具配置

    在这里插入图片描述

  在启动Jenkins容器时必须把maven目录挂载到容器中
  否则这里会报错 "/exoprt/maven is not a directory on the Jenkins master (but perhaps it exists on some agents)"

在这里插入图片描述

1.3、jenkins配置jdk
注意事项: 通maven操作一样,否则会报错

在这里插入图片描述

1.4、集成npm
1、jenkins容器内通过apt命令执行安装(比较慢)
[root@jenkins jenkins]# docker exec -it jenkins bash
root@70a93808d6c5:/#  apt update
root@70a93808d6c5:/#  apt install -y nodejs npm
2、验证
root@70a93808d6c5:/#  node -v
v16.20.2
root@70a93808d6c5:/# npm -v
8.19.4
1.5、集成gradle
Jenkins 中的 Gradle 插件主要用于支持使用 Gradle 构建工具的项目。其作用包括:
构建管理: 可以轻松地配置和运行 Gradle 构建任务,以便在 CI/CD 流水线中自动化构建过程。
多项目构建: 支持 Gradle 的多项目构建,能够处理复杂的项目结构。
集成与报告: 生成构建报告和测试结果,方便在 Jenkins 中查看构建状态和测试覆盖率。
环境配置: 允许在构建过程中配置 Gradle 的相关参数和环境变量,提供更灵活的构建选项。
触发构建: 支持通过代码提交、定时触发等方式自动启动 Gradle 构建,提升开发效率。
通过使用 Gradle 插件,开发团队能够在 Jenkins 中更高效地管理和执行与 Gradle 相关的构建任务,实现持续集成和持续交付
安装Gradle
[root@jenkins ~]# wget https://downloads.gradle.org/distributions/gradle-5.3-bin.zip
[root@jenkins ~]# unzip gradle-5.3-bin.zip -d /export/
[root@jenkins ~]# mv /export/gradle-5.3 /export/gradle
[root@jenkins ~]# vim/etc/profile
export GRADLE_HOME=/export/gradle
export PATH=$PATH:$GRADLE_HOME/bin
[root@jenkins ~]# source /etc/profile
#拷贝到容器jenkins中
[root@jenkins ~]# docker cp /export/gradle jenkins:/export/gradle

#Gradle常用命令
- ./gradlew -v 版本号,首次运行,没有gradle的要下载的哦。
- ./gradlew clean 删除HelloWord/app目录下的build文件夹
- ./gradlew build 检查依赖并编译打包
- ./gradlew assembleDebug 编译并打Debug包
- ./gradlew assembleRelease 编译并打Release的包
- ./gradlew installRelease Release模式打包并安装
- ./gradlew uninstallRelease 卸载Release模式包

验证gradle,如下所示

在这里插入图片描述

1.6、集成ant
#下载ant
[root@jenkins ~]# wget https://dlcdn.apache.org//ant/binaries/apache-ant-1.10.15-bin.tar.gz
#安装ant
[root@jenkins ~]# tar zxf apache-ant-1.10.15-bin.tar.gz -C /export/
[root@jenkins ~]# mv apache-ant-1.10.15 ant
[root@jenkins ~]# vim /etc/profile
export ANT_HOME=/export/ant
export PATH=$PATH:$MAVEN_HOME/bin:$ANT_HOME/bin
[root@jenkins ~]# source /etc/profile

#Ant常用命令
ant -buildfile -f build.xml

#拷贝到容器中
[root@jenkins ~]# docker cp /export/ant jenkins:/export/ant
#验证,如下图所示

在这里插入图片描述

2、jenkins集成ansible自动发布工具

拷贝宿主机的yum源到容器中,直接在jenkins容器中进行安装(前提是宿主机和容器都能通外网)
[root@jenkins export]# docker cp /etc/yum.repos.d/CentOS-Base.repo jenkins:/etc/yum.repos.d/CentOS-Base.repo
[root@jenkins export]# docker cp /etc/yum.repos.d/epel.repo jenkins:/etc/yum.repos.d/epel.repo
[root@jenkins export]# docker exec -it jenkins bash
[root@75f556579faf jenkins]# yum -y install ansible
[root@75f556579faf jenkins]# ansible --version
ansible 2.9.27
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Oct 14 2020, 14:45:30) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
1、jenkins安装ansible插件(可参考上述手动安装插件的方式)
2、在全局配置中进行ansible配置

在这里插入图片描述

3、ldap集成

3.1、安装ldap
先决条件
#关闭SELINUX
vim /etc/sysconfig/selinux   # SELINUX=disabled
setenforce 0 

#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

安装ldap
#安装ldap工具
[root@jenkins ~]# yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel

#启动ldap
systemctl start slapd.service 
systemctl enable slapd.service

#据提示输入密码会返回加密的密码字符串,保存好这个字符串
[root@jenkins ~]# slappasswd 
New password: 
Re-enter new password: 
{SSHA}OKIr6hQtCG+e4I+Bm3kIjduLS5hrOgNU


#创建db.ldif文件
在db.ldif文件中编辑如下内容,目的就是替换上图中olcDatabase={2}hdb.ldif中 olcSuffix、olcRootDN、olcRootPW这三个字段的内容
在olcSuffix, olcRootDN中可自定义
在olcRootPW中复制使用上面生成的加密字符串
[root@jenkins ~]# mkdir ldap
[root@jenkins ~]# cd ldap/
[root@jenkins ldap]# vim db.ldif
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=ops,dc=com
 
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=ops,dc=com
 
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}OKIr6hQtCG+e4I+Bm3kIjduLS5hrOgNU #替换为刚才生成的密钥

#编辑完成后,在ldap目录执行如下命令
[root@jenkins ldap]# ldapmodify -Y EXTERNAL -H ldapi:/// -f db.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"
#创建ldap基础库
##1.复制ldap原有配置,并赋予它所有权限
[root@jenkins ldap]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@jenkins ldap]# chown ldap:ldap /var/lib/ldap/*
##2.向数据库添加schemas,包括cosine、nis、inetorgperson三个文件,然后分别执行下列命令
[root@jenkins ldap]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=cosine,cn=schema,cn=config"

[root@jenkins ldap]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=nis,cn=schema,cn=config"

[root@jenkins ldap]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=inetorgperson,cn=schema,cn=config"

#ldap目录创建bsse.ldif
dn: dc=ops,dc=com
dc: ops
objectClass: top
objectClass: domain
 
dn: cn=admin,dc=ops,dc=com
objectClass: organizationalRole
cn: admin
description: LDAP Manager
 
dn: ou=People,dc=ops,dc=com
objectClass: organizationalUnit
ou: People
 
dn: ou=Group,dc=ops,dc=com
objectClass: organizationalUnit
ou: Group
[root@jenkins ldap]# ldapadd -x -W -D "cn=admin,dc=ops,dc=com" -f base.ldif
Enter LDAP Password: 
adding new entry "dc=ops,dc=com"

adding new entry "cn=admin,dc=ops,dc=com"

adding new entry "ou=People,dc=ops,dc=com"

adding new entry "ou=Group,dc=ops,dc=com"
3.2、安装ldap控制台
#安装apache
yum -y install httpd 
#修改配置文件
vim /etc/httpd/conf/httpd.conf 
注释掉  AllowOverride all

#启动服务测试
systemctl start httpd
systemctl enable httpd

#安装phpldapadmin
yum install phpldapadmin -y
3.3、配置ldap服务
#修改配置文件。把下面的粘贴进去即可
vim /etc/phpldapadmin/config.php
$servers->setValue('login','attr','cn');
$servers->setValue('login','anon_bind',false);
$servers->setValue('unique','attrs',array('mail','uid','uidNumber','cn','sn'));

#修改httpd配置文件
vim /etc/httpd/conf.d/phpldapadmin.conf 
Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs

<Directory /usr/share/phpldapadmin/htdocs>
  <IfModule mod_authz_core.c>
    # Apache 2.4
    Require local
    Require ip 192.168.56 #替换为ip段
  </IfModule>
  <IfModule !mod_authz_core.c>
    # Apache 2.2
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
    Allow from ::1
  </IfModule>
</Directory>

#创建基础目录
vim /etc/openldap/base.ldif
dn: dc=my-domain,dc=com
o: ldap
objectclass: dcObject
objectclass: organization
    dc: my-domain
3.4、访问测试
#重启httpd服务
systemctl restart httpd
#访问测试
http://192.168.56.121/phpldapadmin

在这里插入图片描述

在这里插入图片描述

3.5、ldap页面创建OU组织用户数据
参考文档:https://www.cnblogs.com/mascot1/p/10498460.html
3.5.1、创建OU

在这里插入图片描述

3.5.2、选择Organisational unit 组织单元

在这里插入图片描述

3.5.3、输入ou名称并提交信息,查看结果

在这里插入图片描述

在这里插入图片描述

3.6 、ldap页面创建人员
3.6.1、选择OU->选择新建子条目

在这里插入图片描述

3.6.2、选择默认模板

在这里插入图片描述

3.6.3、选择inetorgperson

在这里插入图片描述

3.6.4、填写并提交信息,至此用户创建完成

在这里插入图片描述

3.7、ldap命令行创建用户
页面和命令行二选一即可
#创建组织
[root@jenkins ldap]# vi ou-jk.ldif
dn: ou=jenkins,dc=ops,dc=com
objectClass: organizationalUnit
objectClass: top
ou: jenkins
[root@jenkins ldap]# ldapadd -x -D 'cn=admin,dc=ops,dc=com' -f ou-jk.ldif  -H ldap://192.168.56.120:389 -w 1

#创建用户(创建了两个以uid为匹配项的用户)
[root@jenkins ldap]# vi user-jk.ldif
dn: uid=user1,ou=jenkins,dc=ops,dc=com
ou: jenkins
uid: user1
sn: user1
cn: suer1
givenName: user1
displayName: user1
mail: readafa@esgyn.local
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
userpassword: 123456

dn: uid=user2,ou=jenkins,dc=ops,dc=com
ou: jenkins
uid: user2
sn: user2
cn: user2
givenName: user2
displayName: user2
mail: readafa@esgyn.local
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
userpassword: 123456
[root@jenkins ldap]# ldapadd -x -D 'cn=admin,dc=ops,dc=com' -f user-jk.ldif  -H ldap://192.168.56.120:389 -w 1

在这里插入图片描述

3.8、jenkins集成ldap
先决条件
准备一个adminDN账号用于查询用户。 cn=admin,dc=ops,dc=com
2.将访问Jenkins的用户放到一个OU中。 ou=jenkins,dc=ops,dc=com
3.提供ldap服务器地址。 ldap://192.168.56.120:389
3.8.1、Jenkins配置ldap插件

在这里插入图片描述

3.8.2、全局安全配置
注意事项:
1、如果再下方User Search base和group search base框中填写 ou=jenkins,dc=ops,dc=com。保存后,使用jenkins组织中的创建的用户登录时就会报错,但使用dc=ops,dc=com之后就可以正常登录,但是再jenkins测试连接ldap始终是拿不到ldap的用户信息。对ldpa的配置不是很了解,目前只能先这样处理。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.8.3、选择账号测试,出现一下信息集成完毕
比较遗憾的是我这里测试有问题,但是我报存上述ldap配置后,使用ldap创建的用户登录jenkins是成功的。
Jenkins日志也没显示出具体问题

在这里插入图片描述

在这里插入图片描述

3.9、给ldap用户授权演示
现在使用ldap认证方式登录jenkins,并给ldap创建的用户user1授权管理员权限

在这里插入图片描述

在这里插入图片描述

4、gitlab集成

1、拉取gitlab镜像
[root@jenkins ~]# docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/gitlab/gitlab-ce:14.8.2-ce.0
2、创建相关目录
[root@jenkins export]# mkdir -p  gitlab/{config,data,logs}
3、docker启动gitlab
[root@jenkins export]# docker run --detach \
  --publish 8443:443 --publish 8880:80 --publish 8222:22 \
  --name gitlab \
  --restart always \
  --volume /export/gitlab/config:/etc/gitlab \
  --volume /export/gitlab/logs:/var/log/gitlab \
  --volume /export/gitlab/data:/var/opt/gitlab \
  --add-host gitlab.devops.com:192.168.56.120 \
  --privileged=true \
  --memory 3G \
  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/gitlab/gitlab-ce:14.8.2-ce.0
安装gitlab相关的插件(不再做过多描述)

在这里插入图片描述

Jenkins集成Gitlab SSO单点登录
1.1 Gitlab配置
浏览器访问gitlab地址,默认密码保存在/export/gitlab/config/initial_root_password文件中,默认账号是root。登录gitlab完成下方配置
  • 应用管理->创建应用->配置重定向url

    在这里插入图片描述

1.2 Jenkins配置
配置前备份config.xml文件,
如果jenkins前面有代理需要改一下upstream名称,因为这个名称会自动填充为redirect_url地址。

最后实现的效果是用户在gitlab登录之后,输入jenkins域名会直接进入jenkins。

在这里插入图片描述

5、Jenkins制品库集成-Nexus

后续补充

6、Jenkins集成SonarQube

后续补充

总结

本篇文章主要从docker构建Jenkins容器镜像、部署Jenkins及集成Jenkins常用工具入手,是一篇非常适合新手入门的文章教程,希望对大家有用


原文地址:https://blog.csdn.net/weixin_50902636/article/details/143600389

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!