温馨提示×

如何在Ubuntu上自定义Jenkins部署

小樊
46
2026-06-30 15:30:39
栏目: 智能运维

在 Ubuntu 上自定义 Jenkins 的部署方式通常涉及多个层面:
安装方式、运行方式、构建流程、权限配置、插件、流水线等。下面我从常见实践 + 可自定义点的角度,系统讲一遍,你可以按需组合使用。


一、Jenkins 安装方式(决定部署形态)

✅ 方式 1:APT 安装(最常见,适合入门)

sudo apt update
sudo apt install openjdk-17-jdk -y
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install jenkins -y

特点

  • systemd 服务运行
  • 配置文件在 /etc/default/jenkins
  • 数据目录:/var/lib/jenkins

✅ 适合:传统服务器部署


✅ 方式 2:Docker 部署(强烈推荐,更灵活)

docker run -d \
  --name jenkins \
  -p 8080:8080 \
  -p 50000:50000 \
  -v jenkins_home:/var/jenkins_home \
  jenkins/jenkins:lts

自定义点

  • 挂载自定义目录
  • 指定 Java 版本
  • 自定义网络
  • 与 Docker-in-Docker 集成

✅ 适合:CI/CD、容器化部署


二、Jenkins 基础自定义配置

1️⃣ 修改 Jenkins 端口 & 参数

编辑:

sudo nano /etc/default/jenkins

常见参数:

JENKINS_PORT=8081
JENKINS_HOME=/data/jenkins
JAVA_OPTS="-Xmx2g"

重启:

sudo systemctl restart jenkins

2️⃣ 修改 Jenkins 工作目录

JENKINS_HOME=/data/jenkins_home

⚠️ 注意:

  • 目录权限必须属于 jenkins
sudo chown -R jenkins:jenkins /data/jenkins_home

三、自定义 Jenkins 构建方式

✅ 方式 1:Freestyle 项目(简单)

适合:

  • shell 脚本部署
  • 单项目、简单流程

示例构建脚本

git pull
npm install
npm run build
scp dist/* user@server:/var/www/html

✅ 方式 2:Pipeline(强烈推荐)

1️⃣ 安装插件

  • Pipeline
  • Git
  • Docker Pipeline

2️⃣ Jenkinsfile 示例

pipeline {
    agent any

    environment {
        APP_NAME = "myapp"
    }

    stages {
        stage('Checkout') {
            steps {
                git 'https://github.com/user/repo.git'
            }
        }

        stage('Build') {
            steps {
                sh 'npm install && npm run build'
            }
        }

        stage('Deploy') {
            steps {
                sh '''
                scp -r dist/* user@server:/var/www/html
                '''
            }
        }
    }
}

✅ 优势:

  • 可版本化
  • 可复用
  • 易维护

四、自定义构建节点(Agent)

本地 Agent

java -jar agent.jar -jnlpUrl http://jenkins/...

Docker Agent

pipeline {
    agent {
        docker {
            image 'node:18'
        }
    }
}

✅ 用途:

  • 隔离构建环境
  • 多语言支持
  • 减少污染主节点

五、权限与用户自定义(RBAC)

使用插件

  • Role-based Authorization Strategy

配置角色

admin    -> 全部权限
dev      -> 构建、查看
readonly -> 仅查看

✅ 适合团队部署


六、与 Ubuntu 系统深度集成

1️⃣ 使用 systemd 管理 Jenkins

sudo systemctl status jenkins
sudo systemctl enable jenkins

2️⃣ 配置反向代理(Nginx)

server {
    listen 80;
    server_name jenkins.example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

七、自动化 Jenkins 初始化(高级)

使用 Groovy 脚本

/var/lib/jenkins/init.groovy.d/

示例:自动创建管理员

import jenkins.model.*
import hudson.security.*

def instance = Jenkins.getInstance()
def realm = new HudsonPrivateSecurityRealm(false)
realm.createAccount("admin", "admin123")
instance.setSecurityRealm(realm)

八、常见自定义场景总结

场景 推荐方案
简单部署 apt + freestyle
多项目 CI/CD apt/docker + pipeline
容器化环境 docker + agent
企业权限管理 RBAC
自动初始化 Groovy

九、下一步我可以帮你

你可以直接告诉我:

  • ✅ 是 物理机 / 云服务器 / Docker
  • ✅ 部署 前端 / 后端 / 微服务
  • ✅ 是否要 自动部署到多台服务器
  • ✅ 是否需要 HTTPS、GitLab、GitHub 集成

我可以给你一份 完全可运行的自定义部署方案

0