205 lines
4.8 KiB
Markdown
205 lines
4.8 KiB
Markdown
|
# Jenkins 用户名密码配置快速指南
|
|||
|
|
|||
|
## 🚀 简化配置步骤(使用用户名密码)
|
|||
|
|
|||
|
### 1. 准备工作
|
|||
|
|
|||
|
#### 1.1 确保目标服务器SSH配置
|
|||
|
在您的目标服务器 (116.62.163.84) 上执行:
|
|||
|
|
|||
|
```bash
|
|||
|
# 编辑SSH配置文件
|
|||
|
sudo vi /etc/ssh/sshd_config
|
|||
|
|
|||
|
# 确保以下配置项
|
|||
|
PasswordAuthentication yes
|
|||
|
PermitRootLogin yes
|
|||
|
|
|||
|
# 重启SSH服务
|
|||
|
sudo systemctl restart sshd
|
|||
|
```
|
|||
|
|
|||
|
#### 1.2 安装sshpass(在Jenkins服务器上)
|
|||
|
```bash
|
|||
|
# Ubuntu/Debian
|
|||
|
sudo apt-get update && sudo apt-get install -y sshpass
|
|||
|
|
|||
|
# CentOS/RHEL
|
|||
|
sudo yum install -y sshpass
|
|||
|
|
|||
|
# 或者通过EPEL仓库
|
|||
|
sudo yum install -y epel-release
|
|||
|
sudo yum install -y sshpass
|
|||
|
```
|
|||
|
|
|||
|
### 2. Jenkins凭据配置
|
|||
|
|
|||
|
#### 2.1 Git仓库凭据
|
|||
|
1. **管理Jenkins** → **凭据** → **系统** → **全局凭据** → **添加凭据**
|
|||
|
2. 配置信息:
|
|||
|
```
|
|||
|
类型: Username with password
|
|||
|
范围: 全局
|
|||
|
用户名: wangtianqi
|
|||
|
密码: [您的Git密码]
|
|||
|
ID: git-credentials
|
|||
|
描述: Git Repository Access
|
|||
|
```
|
|||
|
|
|||
|
#### 2.2 服务器SSH凭据
|
|||
|
1. **管理Jenkins** → **凭据** → **系统** → **全局凭据** → **添加凭据**
|
|||
|
2. 配置信息:
|
|||
|
```
|
|||
|
类型: Username with password
|
|||
|
范围: 全局
|
|||
|
用户名: root
|
|||
|
密码: [服务器root密码]
|
|||
|
ID: deploy-server-ssh
|
|||
|
描述: Deploy Server SSH Access
|
|||
|
```
|
|||
|
|
|||
|
### 3. 创建Pipeline项目
|
|||
|
|
|||
|
#### 3.1 新建项目
|
|||
|
1. **Jenkins首页** → **新建任务**
|
|||
|
2. **任务名称**: `java-demo-pipeline`
|
|||
|
3. **选择类型**: `Pipeline`
|
|||
|
4. **点击确定**
|
|||
|
|
|||
|
#### 3.2 配置Pipeline
|
|||
|
在项目配置页面的**Pipeline**部分:
|
|||
|
|
|||
|
```
|
|||
|
Definition: Pipeline script from SCM
|
|||
|
SCM: Git
|
|||
|
Repository URL: http://116.62.163.84:15006/wangtianqi/java_demo.git
|
|||
|
Credentials: git-credentials (选择刚创建的Git凭据)
|
|||
|
Branch: */main
|
|||
|
Script Path: Jenkinsfile
|
|||
|
```
|
|||
|
|
|||
|
### 4. 工具配置
|
|||
|
|
|||
|
#### 4.1 JDK配置
|
|||
|
**管理Jenkins** → **全局工具配置** → **JDK**
|
|||
|
```
|
|||
|
名称: JDK-17
|
|||
|
自动安装: 勾选
|
|||
|
版本: Java 17 (或手动指定JAVA_HOME)
|
|||
|
```
|
|||
|
|
|||
|
#### 4.2 Maven配置
|
|||
|
**管理Jenkins** → **全局工具配置** → **Maven**
|
|||
|
```
|
|||
|
名称: Maven-3.9.3
|
|||
|
自动安装: 勾选
|
|||
|
版本: 3.9.3
|
|||
|
```
|
|||
|
|
|||
|
### 5. 必需插件
|
|||
|
|
|||
|
在**管理Jenkins** → **插件管理**中安装:
|
|||
|
|
|||
|
```
|
|||
|
✅ Maven Integration Plugin
|
|||
|
✅ JaCoCo Plugin
|
|||
|
✅ Docker Pipeline Plugin
|
|||
|
✅ Credentials Plugin (通常已预装)
|
|||
|
✅ SSH Credentials Plugin
|
|||
|
✅ Pipeline Plugin (通常已预装)
|
|||
|
```
|
|||
|
|
|||
|
### 6. 测试连接
|
|||
|
|
|||
|
#### 6.1 测试Git连接
|
|||
|
在Pipeline项目中点击**立即构建**,查看是否能成功克隆代码。
|
|||
|
|
|||
|
#### 6.2 测试SSH连接
|
|||
|
您可以在Jenkins的**脚本命令行**中测试SSH连接:
|
|||
|
|
|||
|
**管理Jenkins** → **脚本命令行**,输入:
|
|||
|
|
|||
|
```groovy
|
|||
|
withCredentials([usernamePassword(credentialsId: 'deploy-server-ssh', usernameVariable: 'SSH_USER', passwordVariable: 'SSH_PASS')]) {
|
|||
|
sh 'sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no $SSH_USER@116.62.163.84 "echo \'SSH连接成功!\'"'
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
### 7. 构建执行
|
|||
|
|
|||
|
1. **保存项目配置**
|
|||
|
2. **点击立即构建**
|
|||
|
3. **查看构建日志**:点击构建号 → **控制台输出**
|
|||
|
|
|||
|
### 8. 构建流程说明
|
|||
|
|
|||
|
```
|
|||
|
🔄 代码检出 → 🔍 环境检查 → 🔨 编译 → 🧪 单元测试
|
|||
|
↓
|
|||
|
🔍 代码扫描 → 📦 打包 → 🐳 构建镜像 → 📤 传输镜像
|
|||
|
↓
|
|||
|
🚀 部署应用 → 🏥 健康检查 → ✅ 完成
|
|||
|
```
|
|||
|
|
|||
|
### 9. 分支部署策略
|
|||
|
|
|||
|
- **main/master分支**: 部署到生产环境 (端口80)
|
|||
|
- **develop分支**: 部署到测试环境 (端口8080)
|
|||
|
- **feature分支**: 部署到测试环境 (端口8080)
|
|||
|
|
|||
|
### 10. 验证部署
|
|||
|
|
|||
|
构建成功后访问:
|
|||
|
|
|||
|
```bash
|
|||
|
# 生产环境 (main分支)
|
|||
|
curl http://116.62.163.84/api/health
|
|||
|
|
|||
|
# 测试环境 (develop分支)
|
|||
|
curl http://116.62.163.84:8080/api/health
|
|||
|
```
|
|||
|
|
|||
|
### 11. 常见问题
|
|||
|
|
|||
|
#### Q1: sshpass命令未找到
|
|||
|
**解决方案**: 在Jenkins服务器上安装sshpass
|
|||
|
```bash
|
|||
|
sudo apt-get install sshpass # Ubuntu
|
|||
|
sudo yum install sshpass # CentOS
|
|||
|
```
|
|||
|
|
|||
|
#### Q2: SSH连接被拒绝
|
|||
|
**解决方案**: 检查目标服务器SSH配置
|
|||
|
```bash
|
|||
|
# 在目标服务器上
|
|||
|
sudo vi /etc/ssh/sshd_config
|
|||
|
# 确保 PasswordAuthentication yes
|
|||
|
sudo systemctl restart sshd
|
|||
|
```
|
|||
|
|
|||
|
#### Q3: Docker权限不足
|
|||
|
**解决方案**: 将jenkins用户添加到docker组
|
|||
|
```bash
|
|||
|
sudo usermod -aG docker jenkins
|
|||
|
sudo systemctl restart jenkins
|
|||
|
```
|
|||
|
|
|||
|
### 12. 安全建议
|
|||
|
|
|||
|
1. **使用强密码**: 确保服务器密码足够复杂
|
|||
|
2. **限制SSH访问**: 配置防火墙仅允许Jenkins服务器访问
|
|||
|
3. **定期更新密码**: 定期修改服务器密码并更新Jenkins凭据
|
|||
|
4. **监控登录日志**: 定期检查服务器登录日志
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## 🎉 完成!
|
|||
|
|
|||
|
按照以上步骤配置后,您就可以使用用户名密码的方式进行Jenkins CI/CD了!
|
|||
|
|
|||
|
如果遇到问题,请检查:
|
|||
|
1. 凭据ID是否正确 (`deploy-server-ssh`)
|
|||
|
2. 用户名密码是否正确
|
|||
|
3. 目标服务器SSH服务是否正常
|
|||
|
4. Jenkins服务器是否安装了sshpass
|