Jenkins是一款开源的持续构建工具,除了基础功能外,还有各种功能丰富的插件,可以实现各种高级功能。
Jenkins常见的应用场景是:
在本小节,我们首先探讨Jenkins系统的运维工作,并尝试将Jenkins与LDAP系统集成起来。
对于Jenkins系统,我们将直接用Docker部署在物理机而不是k8s集群上,主要原因有:
我们先来看一下创建脚本
#!/bin/bash
NAME="jenkins"
VOLUME="$HOME/docker_data/jenkins"
# ensure volume ready
sudo mkdir -p $VOLUME
sudo chmod -R 777 $VOLUME
# submit to local docker node
docker ps -q -a --filter "name=$NAME" | xargs -I {} docker rm -f {}
docker run \
--name $NAME \
-v $VOLUME:/var/jenkins_home \
-p 9001:8080 \
-p 50000:50000 \
--detach \
--restart always \
jenkins/jenkins:2.60.3-alpine
如上所述:
启动完毕后,需要进行Jenkins系统的初始化,如下图所示:
初始化需要输入初始化密码,存放在docker的/var/jenkins_home/secrets/initialAdminPassword目录下,可以通过docker exec -i -t 登录容器,然后cat查看。
docker exec -i -t ad74be122fcd /bin/sh
cat /var/jenkins_home/secrets/initialAdminPassword
0b7aee7513774800ac6cf1fdd41d0366
输入密码后,稍等一会儿,提示选择安装插件的模式,选择自定义插件:
针对本书架构,建议选择的插件为:
选择好后进行安装,这一步会耗费的久一些,随后需要创建管理员帐号:
最后点击完成
经过上述配置后,我们已经构建了基本的Jenkins环境,并有了一个可以登录的系统管理员帐号。
作为持续集成的核心,Jenkins系统的重要性毋庸置疑,有必要进行细粒度的权限控制与管理,例如:
因此,我们需要给每个团队成员配置独立的帐号。面对这种需求,接入LDAP验证是一个很好的选择。
在LDAP 内部账号管理系统一节中,我们介绍了LDAP的运维方案,本节假设你已经部署好了LDAP服务。
登录Jenkins后,在左侧菜单选择"Manage Jenkins",随后选择"Configure Global Security"
在"Access Control"中选中"LDAP",填写如下信息:
上述都填写完毕后,可以点击底部的Test LDAP Settings
测试通过后,不要忘记点击页面最底部的保存按钮。
随后,我们尝试用LDAP帐号登录,可以发现登录成功。
团队成员有多种不同的角色,如前面提到的开发、测试、管理员。
在Jeknins中,可以设置不同的角色,并针对角色配置不同的权限。
点击"Manage Jenkins",然后选择"Configure Global Security",在"Authorization"中更改为"Role Based Strategy"。
不要退出Jenkins,选择"Manage and Assign Roles",首先管理角色"Manage and Assign Roles"
如上图所示,新增2个角色:开发rd和测试qa,并设置对应的权限。
随后进入"Assign Roles",将开发帐号赋给对应的角色,这里给lihy赋予admin角色、给zhangsan赋予rd角色,如图所示:
我们可以登录zhangsan,没有看到"Manage Jenkins"的菜单,角色配置成功。