Skip to main content
☘️ Septvean's Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Jenkins 部署

基础环境

  • 系统:AlmaLinux 9
  • Java:21.0.9
  • Jenkins:2.528.3

Jenkins 官方安装文档:Installing Jenkins

查看 Java 要求:Java Support Policy

  • 这里部署 Jenkins LTS(版本号:2.528.3),使用 Java 21(版本号:21.0.9)

部署 JDK

cd /data/septvean/bash/java

bash -x deploy-jdk-21.sh 21.0.9

/usr/local/jdk/21.0.9/bin/java -version

# java version "21.0.9" 2025-10-21 LTS
# Java(TM) SE Runtime Environment (build 21.0.9+7-LTS-338)
# Java HotSpot(TM) 64-Bit Server VM (build 21.0.9+7-LTS-338, mixed mode, sharing)

部署 Jenkins

# 安装依赖包
dnf install -y git git-core dejavu-sans-fonts fontconfig freetype xorg-x11-server-Xvfb

# 创建用户
useradd -r -s /sbin/nologin jenkins

# 创建目录
#   app: Jenkins War包 目录
#   builder: 编译工具 目录
#   data: Jenkins HOME 目录
#   log: Jenkins 日志
mkdir -pv /data/jenkins/{app,builder,data,log}

# 设置代理
# export http_proxy=http://192.168.101.200:1080; export https_proxy=http://192.168.101.200:1080;

# 下载 War 包
cd /data/jenkins/app
wget -c -O jenkins-2.528.3.war https://get.jenkins.io/war-stable/2.528.3/jenkins.war
ln -svf jenkins-2.528.3.war jenkins.war

# 创建日志文件
touch /data/jenkins/log/{error.log,run.log}

# 设置权限
chown -R jenkins:jenkins /data/jenkins

# 设置环境变量
# export JENKINS_HOME='/data/jenkins/data'

# 启动 (端口 8200, 前缀 /jenkins) 用于测试
# /usr/local/jdk/21.0.9/bin/java \
# -jar jenkins.war \
# --httpPort=8200 \
# --prefix=/jenkins

# 其它参数
# java -jar jenkins.war --help

# 创建 service
#
# JVM 参数根据实际情况配置
#
#   Environment="JAVA_OPTS='-server -Xms256m -Xmx512m'"
#
# 启动参数
#
#   httpListenAddress 设置为 0.0.0.0
#   httpPort 设置为 8200
#
# 或者 httpListenAddress 设置为 127.0.0.1, 使用 Nginx 反向代理
#
#   ExecStart=/usr/local/jdk/21.0.9/bin/java -jar jenkins.war --httpListenAddress=127.0.0.1 --httpPort=8200 --prefix=/jenkins
tee /etc/systemd/system/jenkins.service <<'EOF'
[Unit]
Description=Jenkins Server
After=network.target

[Service]
Type=simple
User=jenkins
Group=jenkins

# 环境变量
Environment="JENKINS_HOME=/data/jenkins/data"
Environment="JAVA_OPTS='-server -Xms256m -Xmx512m'"

# 工作目录
WorkingDirectory=/data/jenkins/app

# 启动命令
ExecStart=/usr/local/jdk/21.0.9/bin/java -jar jenkins.war --httpListenAddress=0.0.0.0 --httpPort=8200

# 日志输出到文件
StandardOutput=append:/data/jenkins/log/run.log
StandardError=append:/data/jenkins/log/error.log

# 自动重启策略
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target
EOF

# 创建服务
systemctl daemon-reload
systemctl start jenkins
systemctl status jenkins

# ● jenkins.service - Jenkins Server
#      Loaded: loaded (/etc/systemd/system/jenkins.service; disabled; preset: disabled)
#      Active: active (running) since Sat 2026-01-03 21:59:00 CST; 4s ago
#    Main PID: 3822 (java)
#       Tasks: 32 (limit: 209715)
#      Memory: 254.4M (peak: 254.4M)
#         CPU: 7.262s
#      CGroup: /system.slice/jenkins.service
#              └─3822 /usr/local/jdk/21.0.9/bin/java -jar jenkins.war --httpListenAddress=0.0.0.0 --httpPort=8200

# Jan 03 21:59:00 node-201.server.com systemd[1]: Started Jenkins Server.

# 查看 Jenkins 日志
journalctl -u jenkins -f

# 设置为开机启动
systemctl enable jenkins

访问:http://192.168.101.201:8200/


Nginx 配置

    location /jenkins {

        # 代理
        proxy_pass http://127.0.0.1:8200;

        # 修正 Jenkins 返回的重定向路径
        proxy_redirect 127.0.0.1 $scheme://$host/jenkins;

        # 设置请求头
        proxy_set_header Host $host:$server_port;
        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;

        # WebSocket
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        # 超时设置
        proxy_connect_timeout   3s;
        proxy_send_timeout      300s;
        proxy_read_timeout      300s;

        # 关闭代理缓冲
        proxy_buffering off;

    }

Nginx 加载配置

nginx -t
nginx -s reload

访问:https://devops.v2ep.com/jenkins/


初始化 Jenkins

管理员密码

cat /data/jenkins/data/secrets/initialAdminPassword

如果提示离线,添加 HTTP 代理。

自定义 Jenkins:选择插件来安装

Organization and Administration

  • Dashboard View
  • Folders
  • OWASP Markup Formatter

Build Features

  • Build Name and Description Setter
  • Build Timeout
  • Credentials Binding
  • Timestamper
  • Workspace Cleanup

Build Tools

  • 全不选

Build Analysis and Reporting

  • 默认 (全不选)

Pipelines and Continuous Delivery

  • Pipeline
  • Pipeline Graph View
  • Conditional BuildStep
  • Parameterized Trigger
  • Copy Artifact

Source Code Management

  • Git
  • Git Parameter
  • GitLab

Distributed Builds

  • 单机:全不选
  • 集群:Matrix Project

User Management and Security

  • Matrix Authorization Strategy
  • PAM Authentication
  • Role-based Authorization Strategy

Notifications and Publishing

  • 默认

Appearance

  • 全不选

Languages

  • Locale
  • 千万不要选择 Localization: Chinese (Simplified) !!

安装

如果有安装失败的,点击“重试”。

创建第一个管理员用户

  • 不创建 -> “使用admin账户继续”

实例配置

  • Jenkins URL:根据情况修改 (默认)
  • 保存并完成

开始使用 Jenkins


配置 Jenkins

  • 点击右上角的设置图标

进入管理页面

系统配置

Manage Jenkins -> System Configuration -> System

  • 主节点,不执行任务,将 executors 设置为 0
  • 不发送使用统计
  • 清除 HTTP 代理

外观配置

Manage Jenkins -> System Configuration -> Appearance

  • Default Language:Use Default Locale - English (United States) (en_US)
  • ✅ Ignore browser preference and force this language to all users
  • ✅ Allow all users to use their own language preference

安全配置

Manage Jenkins -> System Configuration -> Security

  • Authorization -> Project-based Matrix Authorization Strategy -> Anonymous -> 勾选 Job/Read 和 Job/Build
  • CSRF Protection -> Enable proxy compatibility

这两个配置是为了解决 GitLab 触发 Jenkins WebHook 时出现的错误

Hook executed successfully but returned HTTP 403 <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/> <title>Error 403 anonymous is missing the Job/Build permission</title> </head> <body><h2>HTTP ERROR 403 anonymous is missing the Job/Build permission</h2> <table> <tr><th>URI:</th><td>/jenkins/project/ci-test</td></tr> <tr><th>STATUS:</th><td>403</td></tr> <tr><th>MESSAGE:</th><td>anonymous is missing the Job/Build permission</td></tr> <tr><th>SERVLET:</th><td>Stapler</td></tr> </table> <hr/><a href="https://jetty.org/">Powered by Jetty:// 12.0.25</a><hr/> </body> </html>

安装插件

Manage Jenkins -> System Configuration -> Plugins

安装以下插件:

  • Blue Ocean
  • Generic Webhook Trigger
  • Multibranch Scan Webhook Trigger
  • Pipeline: Stage View

Multibranch Scan Webhook Trigger 插件,用于 Multibranch Pipeline 设置 Webhook token

  • Scan Multibranch Pipeline Triggers -> Scan by webhook -> Trigger token

修改密码

admin -> Security -> Password

重启 Jenkins

systemctl restart jenkins

更新 Jenkins

cd /data/jenkins/app/
ls -al
wget -c -O jenkins-2.528.3.war https://updates.jenkins.io/download/war/2.528.3/jenkins.war
ln -svf jenkins-2.528.3.war jenkins.war
chown -R jenkins:jenkins jenkins.*
systemctl restart jenkins.service