Jenkins入门教程(三):Jenkins基础配置与系统管理

完成Jenkins安装后,我们需要进行一些基础配置来优化Jenkins的使用体验。本文将详细介绍Jenkins的系统管理和基础配置,包括完整的操作步骤和截图说明。

访问系统管理

登录Jenkins后,点击左侧菜单的"系统管理"(Manage Jenkins),可以看到所有管理选项:

  • 系统配置:Jenkins全局设置
  • 全局工具配置:JDK、Maven、Git等工具
  • 插件管理:安装和管理插件
  • 节点管理:管理构建节点
  • 凭据管理:管理认证信息
  • 安全配置:用户权限设置

系统配置详解

进入"系统管理" > "系统配置",这里包含Jenkins的核心设置。

1. 系统消息

可以设置显示在Jenkins首页的系统消息,支持HTML格式:

<div style="background-color: #fff3cd; padding: 10px; border-radius: 5px;">
  <strong>通知:</strong> Jenkins将于周六凌晨2点进行维护升级
</div>

2. 执行器数量

执行器(Executor)决定了Master节点可以同时运行的构建数量:

# 查看CPU核心数来确定执行器数量
nproc
# 输出: 4

# 建议设置
# - 开发环境:CPU核心数
# - 生产环境:0(所有构建在Agent上执行)

3. Jenkins URL

设置Jenkins的访问URL,这对于邮件通知中的链接、Webhook回调等非常重要:

# 示例配置
Jenkins URL: https://jenkins.example.com/

# 如果使用反向代理,确保URL与实际访问地址一致
# Nginx配置示例
server {
    listen 443 ssl;
    server_name jenkins.example.com;
    
    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

4. 环境变量

配置全局环境变量,所有Job都可以使用:

# 常用全局环境变量示例
DEPLOY_ENV=staging
DOCKER_REGISTRY=registry.example.com
SLACK_CHANNEL=#devops-alerts
MAVEN_OPTS=-Xmx1024m -XX:MaxPermSize=512m

在Pipeline中使用:

pipeline {
    agent any
    stages {
        stage('Check Env') {
            steps {
                sh 'echo "Deploy to: ${DEPLOY_ENV}"'
                sh 'echo "Docker Registry: ${DOCKER_REGISTRY}"'
            }
        }
    }
}

全局工具配置

进入"系统管理" > "全局工具配置",配置构建所需的工具。

JDK配置

# 方式1:指定本地安装路径
名称: JDK17
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64

# 方式2:自动安装
名称: JDK17-auto
勾选"自动安装"
选择版本: OpenJDK 17

# 验证JDK配置是否正确
$ /usr/lib/jvm/java-17-openjdk-amd64/bin/java -version
openjdk version "17.0.9" 2023-10-17
OpenJDK Runtime Environment (build 17.0.9+9-Ubuntu-122.04)
OpenJDK 64-Bit Server VM (build 17.0.9+9-Ubuntu-122.04, mixed mode, sharing)

Maven配置

# 安装Maven
sudo apt install maven -y

# 查看Maven路径
which mvn
# /usr/bin/mvn

mvn -version
# Apache Maven 3.6.3
# Maven home: /usr/share/maven

# Jenkins配置
名称: Maven3
MAVEN_HOME: /usr/share/maven

# 或选择自动安装
名称: Maven3-auto
勾选"自动安装"
版本: 3.8.7

Git配置

# 安装Git
sudo apt install git -y

# 查看Git路径
which git
# /usr/bin/git

git --version
# git version 2.34.1

# Jenkins配置
名称: Default
Path to Git executable: /usr/bin/git

NodeJS配置

# 需要先安装NodeJS插件
# 然后在全局工具配置中添加

名称: Node18
勾选"自动安装"
版本: NodeJS 18.19.0

# 可选:全局npm包
Global npm packages to install: yarn pnpm

凭据管理

进入"系统管理" > "凭据" > "系统" > "全局凭据",添加各种认证信息。

添加用户名密码凭据

# 用于Git仓库认证
类型: Username with password
范围: Global
用户名: your-username
密码: your-password-or-token
ID: git-credentials
描述: GitHub认证凭据

添加SSH私钥凭据

# 生成SSH密钥对
ssh-keygen -t rsa -b 4096 -f ~/.ssh/jenkins_deploy -N ''

# 将公钥添加到Git服务器
cat ~/.ssh/jenkins_deploy.pub

# 在Jenkins中添加私钥
类型: SSH Username with private key
范围: Global
ID: ssh-deploy-key
用户名: git
Private Key: 选择"Enter directly",粘贴私钥内容

# 私钥内容
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAE...
-----END OPENSSH PRIVATE KEY-----

添加Secret Text凭据

# 用于API Token等
类型: Secret text
范围: Global
Secret: your-api-token-here
ID: api-token
描述: Docker Hub API Token

在Pipeline中使用凭据

pipeline {
    agent any
    
    stages {
        stage('Use Credentials') {
            steps {
                // 用户名密码
                withCredentials([usernamePassword(
                    credentialsId: 'git-credentials',
                    usernameVariable: 'GIT_USER',
                    passwordVariable: 'GIT_PASS'
                )]) {
                    sh 'git clone https://${GIT_USER}:${GIT_PASS}@github.com/user/repo.git'
                }
                
                // SSH私钥
                sshagent(['ssh-deploy-key']) {
                    sh 'git clone git@github.com:user/repo.git'
                }
                
                // Secret text
                withCredentials([string(
                    credentialsId: 'api-token',
                    variable: 'API_TOKEN'
                )]) {
                    sh 'curl -H "Authorization: Bearer ${API_TOKEN}" https://api.example.com'
                }
            }
        }
    }
}

安全配置

进入"系统管理" > "安全配置"进行安全设置。

安全域设置

# 选项1:Jenkins专有用户数据库(推荐小团队)
安全域: Jenkins' own user database
勾选: 允许用户注册(根据需要)

# 选项2:LDAP(适合企业环境)
安全域: LDAP
Server: ldap://ldap.example.com
root DN: dc=example,dc=com
User search base: ou=users
User search filter: uid={0}
Group search base: ou=groups

授权策略

# 推荐:项目矩阵授权策略
授权策略: Project-based Matrix Authorization Strategy

# 配置示例
用户/组              Overall  Job      View     Agent
admin               所有权限  所有权限  所有权限  所有权限
developers          Read     Build    Read     -
viewers             Read     Read     Read     -

# 或使用Role-Based Strategy(需要安装插件)
# 可以创建角色并分配给用户/组

插件管理

进入"系统管理" > "插件管理"安装和管理插件。

推荐安装的插件

# 核心插件
Pipeline                    # Pipeline支持
Git                         # Git集成
Credentials Binding         # 凭据绑定
Timestamper                 # 构建日志时间戳
Workspace Cleanup           # 工作空间清理

# Docker相关
Docker Pipeline             # Docker Pipeline支持
Docker                      # Docker API

# 通知
Email Extension             # 邮件通知增强
Slack Notification          # Slack通知
DingTalk                    # 钉钉通知

# 代码质量
JaCoCo                      # 代码覆盖率
SonarQube Scanner           # 代码质量分析

# UI增强
Blue Ocean                  # 现代化界面
Build Monitor View          # 构建监控视图

# 权限管理
Role-based Authorization    # 基于角色的权限

命令行安装插件

# 使用Jenkins CLI安装插件
java -jar jenkins-cli.jar -s http://localhost:8080/ -auth admin:token install-plugin docker-workflow

# 批量安装
cat plugins.txt | while read plugin; do
    java -jar jenkins-cli.jar -s http://localhost:8080/ -auth admin:token install-plugin $plugin
done

# 重启Jenkins使插件生效
java -jar jenkins-cli.jar -s http://localhost:8080/ -auth admin:token safe-restart

备份配置

# 关键配置文件位置
/var/lib/jenkins/
├── config.xml              # 主配置文件
├── credentials.xml         # 凭据配置
├── users/                  # 用户配置
├── secrets/                # 密钥文件
├── jobs/                   # Job配置
│   └── my-job/
│       └── config.xml
└── plugins/                # 插件

# 备份脚本示例
#!/bin/bash
BACKUP_DIR=/backup/jenkins
DATE=$(date +%Y%m%d)

mkdir -p $BACKUP_DIR

# 备份配置
tar -czvf $BACKUP_DIR/jenkins-config-$DATE.tar.gz \
    /var/lib/jenkins/config.xml \
    /var/lib/jenkins/credentials.xml \
    /var/lib/jenkins/users \
    /var/lib/jenkins/secrets \
    /var/lib/jenkins/jobs/*/config.xml

# 保留最近7天的备份
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete

echo "Backup completed: $BACKUP_DIR/jenkins-config-$DATE.tar.gz"

验证配置

创建一个测试Pipeline验证所有配置:

pipeline {
    agent any
    
    tools {
        jdk 'JDK17'
        maven 'Maven3'
    }
    
    stages {
        stage('Check Tools') {
            steps {
                sh '''
                    echo "=== Java ==="
                    java -version
                    
                    echo "\n=== Maven ==="
                    mvn -version
                    
                    echo "\n=== Git ==="
                    git --version
                    
                    echo "\n=== Environment ==="
                    env | grep -E "JAVA_HOME|MAVEN_HOME|PATH" | sort
                '''
            }
        }
    }
}

执行结果:

=== Java ===
openjdk version "17.0.9" 2023-10-17
OpenJDK Runtime Environment (build 17.0.9+9)
OpenJDK 64-Bit Server VM (build 17.0.9+9, mixed mode, sharing)

=== Maven ===
Apache Maven 3.8.7
Maven home: /var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/Maven3
Java version: 17.0.9, vendor: Eclipse Adoptium

=== Git ===
git version 2.34.1

=== Environment ===
JAVA_HOME=/var/lib/jenkins/tools/hudson.model.JDK/JDK17
MAVEN_HOME=/var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/Maven3
PATH=/var/lib/jenkins/tools/hudson.model.JDK/JDK17/bin:...

总结

本文详细介绍了Jenkins的基础配置,包括系统配置、工具配置、凭据管理、安全设置和插件管理。正确的配置是高效使用Jenkins的基础。

下一篇我们将学习如何创建第一个Jenkins Freestyle Job。

发表回复

后才能评论