在 Ubuntu 上自定义 Jenkins 的部署方式通常涉及多个层面:
安装方式、运行方式、构建流程、权限配置、插件、流水线等。下面我从常见实践 + 可自定义点的角度,系统讲一遍,你可以按需组合使用。
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✅ 适合:传统服务器部署
docker run -d \
--name jenkins \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
jenkins/jenkins:lts
自定义点
✅ 适合:CI/CD、容器化部署
编辑:
sudo nano /etc/default/jenkins
常见参数:
JENKINS_PORT=8081
JENKINS_HOME=/data/jenkins
JAVA_OPTS="-Xmx2g"
重启:
sudo systemctl restart jenkins
JENKINS_HOME=/data/jenkins_home
⚠️ 注意:
jenkinssudo chown -R jenkins:jenkins /data/jenkins_home
适合:
示例构建脚本
git pull
npm install
npm run build
scp dist/* user@server:/var/www/html
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
'''
}
}
}
}
✅ 优势:
java -jar agent.jar -jnlpUrl http://jenkins/...
pipeline {
agent {
docker {
image 'node:18'
}
}
}
✅ 用途:
admin -> 全部权限
dev -> 构建、查看
readonly -> 仅查看
✅ 适合团队部署
sudo systemctl status jenkins
sudo systemctl enable jenkins
server {
listen 80;
server_name jenkins.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
/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 |
你可以直接告诉我:
我可以给你一份 完全可运行的自定义部署方案。