在 Ubuntu 上部署 Jenkins 的标准流程
一 环境准备
- 操作系统建议使用 Ubuntu 22.04 LTS(或 20.04 LTS)。
- 安装 Java 运行环境(二选一或更高版本):
- OpenJDK 11(通用稳定):sudo apt update && sudo apt install -y openjdk-11-jdk
- OpenJDK 17(部分新版本偏好):sudo apt update && sudo apt install -y openjdk-17-jdk
- 验证:java -version 应返回已安装的版本号。
二 安装与启动 Jenkins
- 导入 Jenkins GPG 密钥并添加官方 APT 源(推荐新版签名方式):
- wget -O /usr/share/keyrings/jenkins-keyring.asc https://pkg.jenkins.io/debian-stable/jenkins.io-2023.keys
- echo “deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian stable binary/” | sudo tee /etc/apt/sources.list.d/jenkins.list
- 安装并启动:
- sudo apt update && sudo apt install -y jenkins
- sudo systemctl start jenkins
- sudo systemctl enable jenkins
- sudo systemctl status jenkins(确认状态为 active)
- 如 8080 端口被占用,可编辑服务文件(/usr/lib/systemd/system/jenkins.service)中的 Environment=“JENKINS_PORT=8080”,改为如 8088,然后执行:sudo systemctl daemon-reload && sudo systemctl restart jenkins。
三 初始化与安全配置
- 获取初始管理员密码:sudo cat /var/lib/jenkins/secrets/initialAdminPassword
- 访问 Web 界面:打开浏览器输入 http://<服务器IP或域名>:8080,粘贴初始密码进入向导。
- 插件安装:选择 Install Suggested Plugins,或手动安装常用插件(如 Git、Pipeline、Docker、Credentials Binding、GitHub Integration 等)。
- 创建管理员用户与实例 URL:按向导完成设置,确保 Jenkins URL 正确(可使用域名或服务器 IP)。
四 防火墙与端口开放
- 如使用 UFW:
- 开放 Web 端口与 Agent 通信端口:sudo ufw allow 8080/tcp;sudo ufw allow 50000/tcp
- sudo ufw reload
- 如使用云服务器,还需在云平台安全组放行对应端口。
五 创建第一条自动化部署流水线
- 准备代码与凭据:
- 在代码仓库配置 Deploy Keys 或使用 HTTPS + Personal Access Token。
- 在 Jenkins:Manage Jenkins → Manage Credentials → System → Global credentials 添加 SSH 私钥 或 用户名/密码 凭据。
- 新建任务:New Item → 选择 Pipeline → 勾选 Pipeline script from SCM → 选择 Git,填写仓库 URL 与凭据。
- 示例声明式流水线(Jenkinsfile,按项目替换命令与路径):
pipeline {
agent any
stages {
stage(‘Build’) {
steps {
sh ‘mvn clean package’ // Java 项目示例
// sh ‘npm install && npm run build’ // Node 示例
}
}
stage(‘Deploy’) {
steps {
publishOverSSH(
transfers: [
sshTransfer(
sourceFiles: ‘target/*.jar’, // 构建产物路径
removePrefix: ‘target’,
remoteDirectory: ‘/opt/app’ // 目标服务器目录
)
],
usePromotionTimestamp: false,
useWorkspaceInPromotion: false,
verbose: true
)
}
}
}
}
- 触发方式:可配置 轮询 SCM(如每分钟 */1 * * * *)或 Webhook 实现代码变更自动构建与部署。