Skip to content

Jenkins 常规配置

一、Jenkins常规配置

1.1 系统配置

1.1.1 全局安全配置

1、访问控制 CSRF Protection:防止跨站请求伪造攻击 2、代理兼容性:配置Jenkins通过代理服务器访问,通常Jenkins使用一个TCP端口和JNLP节点代理通讯。 3、授权策略 默认是登录用户可以做任何事情;后面有说到基于RBAC的授权策略,这里先不介绍。具体的可以参考,Jenkins 插件章节的Role-Based Strategy 插件介绍 4、安全域 👍Jenkins数据库:使用Jenkins内置用户数据库 LDAP:集成企业LDAP目录服务(需要安装插件后才能使用)

1.1.2 系统配置项

1、系统消息 - 此消息将显示在 Jenkins 主页的顶部。这对于向用户发布通知非常有用 2、执行者数量 - 控制Jenkins可以同时运行的构建数量,建议:CPU核心数 * 2 3、标签 - 标签为master,且只允许运行绑定到这台机器的Job 4、环境变量 - 全局环境变量设置 5、邮件通知 - SMTP服务器配置,发件人地址设置,邮件模板定制

TIP

默认的邮件发送功能不多,不展开说明,后续结合项目安装插件演示

1.2 全局工具配置

个人建议不要在Jenkins页面上配置安装,手动进入到机器上安装各种工具

1.2.1 安装openjdk

TIP

Jenkins 需要使用java17 及以上,但代码打包依赖jdk11,所以一台机器会同时安装多个jdk环境

bash
#安装openjdk-11.0.2
wget https://mirrors.nju.edu.cn/openjdk/11.0.2/openjdk-11.0.2_linux-x64_bin.tar.gz -O /home/application/openjdk-11.0.2_linux-x64_bin.tar.gz
tar -xf /home/application/openjdk-11.0.2_linux-x64_bin.tar.gz -C /home/application/ && rm -f /home/application/openjdk-11.0.2_linux-x64_bin.tar.gz
ls -l /home/application/jdk-11.0.2/
总用量 28
drwxr-xr-x  2 root root 4096  6月  4 15:16 bin
drwxr-xr-x  4 root root 4096  6月  4 15:16 conf
drwxr-xr-x  3 root root 4096  6月  4 15:16 include
drwxr-xr-x  2 root root 4096  6月  4 15:16 jmods
drwxr-xr-x 72 root root 4096  6月  4 15:16 legal
drwxr-xr-x  6 root root 4096  6月  4 15:16 lib
-rw-r--r--  1  668  668 1214  1月 18  2019 release

#验证java
/home/application/jdk-11.0.2/bin/java --version
openjdk 11.0.2 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

1.2.2 安装git

bash
yum install git

1.2.3 安装maven

TIP

Maven 3.9+ requires JDK 8 or above to execute. maven本地缓存目录: 默认为 ${user.home}/.m2/repository

  • 配置阿里云Maven全局代理加速
bash
wget https://archive.apache.org/dist/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.tar.gz
tar -xf apache-maven-3.9.9-bin.tar.gz -C /home/application && rm -rf apache-maven-3.9.9-bin.tar.gz
ls -l /home/application/apache-maven-3.9.9
总用量 48
drwxr-xr-x 2 root root  4096  6月  4 15:24 bin
drwxr-xr-x 2 root root  4096  6月  4 15:24 boot
drwxr-xr-x 3 root root  4096  8月 14  2024 conf
drwxr-xr-x 4 root root  4096  6月  4 15:24 lib
-rw-r--r-- 1 root root 18920  8月 14  2024 LICENSE
-rw-r--r-- 1 root root  5034  8月 14  2024 NOTICE
-rw-r--r-- 1 root root  1279  8月 14  2024 README.txt
bash
mkdir ~/.m2
touch ~/.m2/settings.xml
xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <mirrors>
		<mirror>
			<id>aliyunmaven</id>
			<mirrorOf>*</mirrorOf>
			<name>阿里云公共仓库</name>
			<url>https://maven.aliyun.com/repository/public</url>
		</mirror>	
    </mirrors>
</settings>
bash
cat >> /etc/profile << 'EOF'

#maven
export M2_HOME=/home/application/apache-maven-3.9.9
export PATH=$M2_HOME/bin:$PATH
EOF

#使配置生效
source /etc/profile

#验证
mvn -v

Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937)
Maven home: /home/application/apache-maven-3.9.9
Java version: 17.0.2, vendor: Oracle Corporation, runtime: /home/application/jdk-17.0.2
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "5.10.0-209.0.0.117.oe2203sp3.x86_64", arch: "amd64", family: "unix"

TIP

如果想使用其它代理仓库,可在节点中加入对应的仓库使用地址。以使用spring代理仓为例

xml
<repository>
    <id>spring</id>
    <url>https://maven.aliyun.com/repository/spring</url>
    <releases>
        <enabled>true</enabled>
    </releases>
    <snapshots>
        <enabled>true</enabled>
    </snapshots>
</repository>

1.2.4 安装Nvn工具并配置Node.js /Yarn

TIP

在安装yarn 的时候,都需要先切换到Node.js,再安装yarn; yarn和Node.js版本关联

bash
wget https://github.com/nvm-sh/nvm/archive/refs/tags/v0.40.3.tar.gz
tar -xf v0.40.3.tar.gz -C /home/application && rm -rf v0.40.3.tar.gz
ls -l /home/application/nvm-0.40.3
总用量 288
-rw-rw-r--  1 root root   2299  4月 24 07:34 bash_completion
-rw-rw-r--  1 root root   7560  4月 24 07:34 CODE_OF_CONDUCT.md
-rw-rw-r--  1 root root   5817  4月 24 07:34 CONTRIBUTING.md
-rw-rw-r--  1 root root   3696  4月 24 07:34 Dockerfile
-rw-rw-r--  1 root root    467  4月 24 07:34 GOVERNANCE.md
-rwxrwxr-x  1 root root  16631  4月 24 07:34 install.sh
-rw-rw-r--  1 root root   1113  4月 24 07:34 LICENSE.md
-rw-rw-r--  1 root root   5440  4月 24 07:34 Makefile
-rwxrwxr-x  1 root root    371  4月 24 07:34 nvm-exec
-rwxrwxr-x  1 root root 150227  4月 24 07:34 nvm.sh
-rw-rw-r--  1 root root   2925  4月 24 07:34 package.json
-rw-rw-r--  1 root root   2935  4月 24 07:34 PROJECT_CHARTER.md
-rw-rw-r--  1 root root  50661  4月 24 07:34 README.md
-rwxrwxr-x  1 root root   1235  4月 24 07:34 rename_test.sh
-rw-rw-r--  1 root root    882  4月 24 07:34 ROADMAP.md
drwxrwxr-x 11 root root   4096  4月 24 07:34 test
-rwxrwxr-x  1 root root   2478  4月 24 07:34 update_test_mocks.sh
bash
cat >> /etc/profile << 'EOF'

#nvm
. /home/application/nvm-0.40.3/nvm.sh
EOF

#使环境变量生效
source /etc/profile
bash
#nvm版本
nvm -v
0.40.3

#nvm版本列表
nvm ls-remote

#安装node-v18.20.8
nvm install v18.20.8

#安装node-v16.17.1
nvm install v16.17.1

#查看本地所有node版本
nvm ls
       v18.20.8
->     v16.17.1
       v22.16.0

#切换node版本
nvm use v18.20.8

#查看node版本
node -v
bash
npm config set registry https://registry.npmmirror.com

npm config get registry
https://registry.npmmirror.com
bash
npm install -g yarn

yarn config set registry https://registry.npmmirror.com

yarn -v
1.22.22

1.2.5 在Jenkins服务器上测试打包

bash
#拉取代码
git clone https://gitee.com/log4j/pig-ui.git
cd pig-ui/

#安装依赖
npm install

#打包
npm run build

#查看打包结果
ls -l dist/
总用量 44
drwxr-xr-x 4 root root 12288  6月  4 16:20 assets
-rw-r--r-- 1 root root  4286  6月  4 16:19 favicon.ico
-rw-r--r-- 1 root root 14371  6月  4 16:20 index.html
-rw-r--r-- 1 root root  5080  6月  4 16:20 index.html.gz
bash
#拉取代码
git clone https://gitee.com/log4j/pig.git
cd pig

#打包
mvn clean package -Dmaven.test.skip=true

#查看打包结果
ls -l pig-*/target
pig-auth/target:
总用量 103160
drwxr-xr-x 5 root root      4096  6月  4 17:04 classes
drwxr-xr-x 3 root root      4096  6月  4 17:04 generated-sources
drwxr-xr-x 2 root root      4096  6月  4 17:04 maven-archiver
drwxr-xr-x 3 root root      4096  6月  4 17:04 maven-status
-rw-r--r-- 1 root root 105541653  6月  4 17:04 pig-auth.jar
-rw-r--r-- 1 root root     70314  6月  4 17:04 pig-auth.jar.original

pig-gateway/target:
总用量 69792
drwxr-xr-x 3 root root     4096  6月  4 17:04 classes
drwxr-xr-x 3 root root     4096  6月  4 17:04 generated-sources
drwxr-xr-x 2 root root     4096  6月  4 17:04 maven-archiver
drwxr-xr-x 3 root root     4096  6月  4 17:04 maven-status
-rw-r--r-- 1 root root 71431910  6月  4 17:04 pig-gateway.jar
-rw-r--r-- 1 root root    14463  6月  4 17:04 pig-gateway.jar.original

pig-register/target:
总用量 196408
drwxr-xr-x 3 root root      4096  6月  4 17:04 classes
drwxr-xr-x 3 root root      4096  6月  4 17:04 generated-sources
drwxr-xr-x 2 root root      4096  6月  4 17:04 maven-archiver
drwxr-xr-x 3 root root      4096  6月  4 17:04 maven-status
-rw-r--r-- 1 root root 201095558  6月  4 17:04 pig-register.jar
-rw-r--r-- 1 root root      5796  6月  4 17:04 pig-register.jar.original

1.3 凭据配置

1.3.1 查看凭据

系统管理凭证

系统管理凭据系统全局凭据

1.3.2 新建凭据

1.3.3 凭据类型

  • 用户名和密码凭据:用于存储用户名和密码,例如 Git、Subversion 或其他源代码管理工具的凭据。
  • SSH 用户名和私钥凭据:用于存储 SSH 用户名和私钥,例如 Git、Subversion 或其他源代码管理工具的凭据。
  • 证书凭据:用于存储证书,例如 SSL 证书、SSH 证书等。
  • Secret text:用于存储敏感的文本信息,例如 API 密钥、密码等。
  • Docker 凭据:用于存储 Docker Hub 或其他 Docker 仓库的凭据。
  • Kubernetes 配置文件:用于存储 Kubernetes 集群的配置文件。

1.4 用户/授权管理

1.4.1 用户管理

TIP

Jenkins默认使用自带的数据库管理用户, 也可以通过安装插件实现LDAP、GitLab认证集成。

🦎Jenkins使用文件存储,在JENKINS_HOME/users目录中可以看到每个用户的配置

系统管理用户设置 查看到当前的用户列表;可以对用户新建、更新、删除。

1.4.2 基于RBAC模式的授权管理

TIP

需要使用到Role-based Authorization Strategy插件

在日常Jenkins 使用过,不同的人员岗位对于JOB有不同的权限,比如开发人员只能看到JOB的构建内容,而不能进行构建、部署等操作。 而QA,SRE人员就可以操作所有的JOB,这时候就需要用到RBAC,即基于角色的访问控制。

RBAC 核心概念

  • 角色(Role):定义一组权限的集合
  • 用户(User):系统中的操作主体
  • 绑定(Binding):将用户与角色关联

(1)、安装插件

系统管理管理插件可用插件 → 输入Role-based Authorization Strategy

(2)、配置全局安全配置,指定授权策略为Role-Based Strategy

  • 系统管理 → 系统配置 → 全局安全配置 → 授权策略

  • 保存修改, 返回Jenkins系统设置页面,可以看到Manage and Assign Roles设置页面。

(3)、创建Role

  • 进入Manage and Assign Roles设置, 选择Manage Roles
  • 创建Gobal Role developer:具有全局Read权限。
  • 创建 item roles dev2025: 使用正则表达式匹配关联的一组项目,匹配以dev2025-开头且任意结尾的作业,任务读取权限。

(4)、分配Role

  • 进入Manage and Assign Roles设置, 选择Assign Roles

(5)、预先创建好多个JOB,进行权限测试

(6)、切换到dev01用户下

  • 只显示dev2025开头的项目,并且只有只读的权限。

(7)、切换到dev02用户下

  • 未赋予用户Global Role "read" 权限,报错。
最近更新

采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 运维小弟