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

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

文章目录

前言

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常用工具入手,是一篇非常适合新手入门的文章教程,希望对大家有用

相关推荐
舞动CPU44 分钟前
linux c/c++最高效的计时方法
linux·运维·服务器
皮锤打乌龟1 小时前
(干货)Jenkins使用kubernetes插件连接k8s的认证方式
运维·kubernetes·jenkins
钰@2 小时前
小程序开发者工具的network选项卡中有某域名的接口请求,但是在charles中抓不到该接口
运维·服务器·小程序
wanhengwangluo2 小时前
云服务器和物理服务器的区别有哪些?
运维·服务器
南猿北者2 小时前
docker Network(网络)
网络·docker·容器
秦jh_3 小时前
【Linux】多线程(概念,控制)
linux·运维·前端
yaosheng_VALVE3 小时前
稀硫酸介质中 V 型球阀的材质选择与选型要点-耀圣
运维·spring cloud·自动化·intellij-idea·材质·1024程序员节
sam-1233 小时前
k8s上部署redis高可用集群
redis·docker·k8s
看山还是山,看水还是。4 小时前
Redis 配置
运维·数据库·redis·安全·缓存·测试覆盖率
扣得君4 小时前
C++20 Coroutine Echo Server
运维·服务器·c++20