文章目录
- 前言
- jenkins特性
-
- 一、资源准备
- 二、安装docker
- 三、java环境安装
- 四、安装jenkins
- 五、管理jenkins
- 六、jenkins工具集成
-
- 1、构建工具集成
- 2、jenkins集成ansible自动发布工具
- 3、ldap集成
-
- 3.1、安装ldap
- 3.2、安装ldap控制台
- 3.3、配置ldap服务
- 3.4、访问测试
- 3.5、ldap页面创建OU组织用户数据
-
- 3.5.1、创建OU
- [3.5.2、选择Organisational unit 组织单元](#3.5.2、选择Organisational unit 组织单元)
- 3.5.3、输入ou名称并提交信息,查看结果
- [3.6 、ldap页面创建人员](#3.6 、ldap页面创建人员)
- 3.7、ldap命令行创建用户
- 3.8、jenkins集成ldap
- 3.9、给ldap用户授权演示
- 4、gitlab集成
-
- [Jenkins集成Gitlab SSO单点登录](#Jenkins集成Gitlab SSO单点登录)
-
- [1.1 Gitlab配置](#1.1 Gitlab配置)
- [1.2 Jenkins配置](#1.2 Jenkins配置)
- 5、Jenkins制品库集成-Nexus
- 6、Jenkins集成SonarQube
- 总结
前言
Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。大体架构流程如下所示
jenkins特性
yaml
- 开源的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
yaml
此处使用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包进行安装
shell
#安装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版本
yaml
https://www.jenkins.io/doc/book/platform-information/support-policy-java/

2、容器化安装jenkins
因为docker.io默认的开源仓库地址已经被国内封禁,除非使用vpn等方式才可以访问,下方的开源镜像仓库是国内的,借此使用
shell
#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镜像
shell
#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安装插件
shell
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





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

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

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

1.2、创建用户

1.3 、删除用户

1.4、更新用户


2、凭据管理
- 凭据-> 系统-> 全局凭据
2.1、新建凭据
支持多种凭据类型及凭据的作用范围

2.2、删除和更新凭据

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

3、权限管理
系统> 全局安全配置
yaml
权限默认使用 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开头的项目

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

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

4、视图管理
yaml
默认会创建一个all视图里面存放所有的项目

4.1、创建视图



4.2、删除视图

4.3、更新视图

5、插件管理
系统设置->插件管理

5.1、 安装插件

5.2、卸载插件

5.3、手动安装插件





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

5.5、切换插件更新站点
yamlk
插件管理-->高级-->升级站点
事实上,这个方法也不行,这个方法只适用于最新版本的jenkins,不适用低版本的jenkins
切记: 关于如何在线更新低版本jenkins对应的插件,请看我顶部的文章链接,包成功.
六、jenkins工具集成
1、构建工具集成
注意事项: 以下集成步骤不用再宿主机进行操作,因为已经封装到了jenkins容器目录中,写出来也是让大家有个了解。版本都是一致的
1.1、集成maven
yaml
先决条件:
JDK: 在maven3.3 以上的版本需要JDK版本1.7+。
内存: 没有最低限制。
磁盘: 1G+可用磁盘空间。
操作系统: 没有限制。
shell
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
-
系统设置->全局工具配置
yaml
在启动Jenkins容器时必须把maven目录挂载到容器中
否则这里会报错 "/exoprt/maven is not a directory on the Jenkins master (but perhaps it exists on some agents)"

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

1.4、集成npm
yaml
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
yaml
Jenkins 中的 Gradle 插件主要用于支持使用 Gradle 构建工具的项目。其作用包括:
构建管理: 可以轻松地配置和运行 Gradle 构建任务,以便在 CI/CD 流水线中自动化构建过程。
多项目构建: 支持 Gradle 的多项目构建,能够处理复杂的项目结构。
集成与报告: 生成构建报告和测试结果,方便在 Jenkins 中查看构建状态和测试覆盖率。
环境配置: 允许在构建过程中配置 Gradle 的相关参数和环境变量,提供更灵活的构建选项。
触发构建: 支持通过代码提交、定时触发等方式自动启动 Gradle 构建,提升开发效率。
通过使用 Gradle 插件,开发团队能够在 Jenkins 中更高效地管理和执行与 Gradle 相关的构建任务,实现持续集成和持续交付
shell
安装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
shell
#下载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自动发布工具
shell
拷贝宿主机的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)]
yaml
1、jenkins安装ansible插件(可参考上述手动安装插件的方式)
2、在全局配置中进行ansible配置

3、ldap集成
3.1、安装ldap
yaml
先决条件
#关闭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控制台
yaml
#安装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服务
yaml
#修改配置文件。把下面的粘贴进去即可
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、访问测试
yaml
#重启httpd服务
systemctl restart httpd
#访问测试
http://192.168.56.121/phpldapadmin


3.5、ldap页面创建OU组织用户数据
yaml
参考文档: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命令行创建用户
shell
页面和命令行二选一即可
#创建组织
[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
yaml
先决条件
准备一个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、全局安全配置
yaml
注意事项:
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、选择账号测试,出现一下信息集成完毕
yaml
比较遗憾的是我这里测试有问题,但是我报存上述ldap配置后,使用ldap创建的用户登录jenkins是成功的。
Jenkins日志也没显示出具体问题


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


4、gitlab集成
shell
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
yaml
安装gitlab相关的插件(不再做过多描述)

Jenkins集成Gitlab SSO单点登录
1.1 Gitlab配置
yaml
浏览器访问gitlab地址,默认密码保存在/export/gitlab/config/initial_root_password文件中,默认账号是root。登录gitlab完成下方配置
-
应用管理->创建应用->配置重定向url
1.2 Jenkins配置
yaml
配置前备份config.xml文件,
如果jenkins前面有代理需要改一下upstream名称,因为这个名称会自动填充为redirect_url地址。
最后实现的效果是用户在gitlab登录之后,输入jenkins域名会直接进入jenkins。

5、Jenkins制品库集成-Nexus
后续补充
6、Jenkins集成SonarQube
后续补充
总结
本篇文章主要从docker构建Jenkins容器镜像、部署Jenkins及集成Jenkins常用工具入手,是一篇非常适合新手入门的文章教程,希望对大家有用