# 建 Jenkins 平台步骤

以下是搭建 **Jenkins 项目平台** 的完整步骤，涵盖 **安装、配置、流水线创建** 和 **自动化部署**，适用于 Linux/Windows 环境：

---

### **1. 安装 Jenkins**
#### **Linux (Ubuntu/CentOS)**
```bash
# 安装 Java (Jenkins 依赖)
sudo apt update && sudo apt install openjdk-11-jdk -y  # Ubuntu
sudo yum install java-11-openjdk -y                   # CentOS

# 添加 Jenkins 仓库并安装
curl -fsSL https://pkg.jenkins.io/debian/jenkins.io.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt update && sudo apt install jenkins -y

# 启动 Jenkins
sudo systemctl start jenkins
sudo systemctl enable jenkins
```

#### **Windows**
1. 下载 [Jenkins Windows Installer](https://www.jenkins.io/download/) 并运行。
2. 安装完成后，访问 `http://localhost:8080`。

---

### **2. 初始配置**
1. **解锁 Jenkins**  
   访问 `http://<服务器IP>:8080`，输入初始密码（路径在终端显示，通常为 `/var/lib/jenkins/secrets/initialAdminPassword`）。
2. **安装推荐插件**  
   选择 "Install suggested plugins"（包括 Git、Pipeline 等核心插件）。
3. **创建管理员账户**  
   设置用户名和密码。

---

### **3. 关键插件安装**
进入 **Manage Jenkins > Plugins**，安装以下插件：
- **Git**：代码仓库集成。
- **Pipeline**：定义流水线任务。
- **Docker**：容器化构建支持。
- **Blue Ocean**：可视化流水线编辑器（可选）。
- **SSH Agent**：远程服务器部署。

---

### **4. 创建第一个流水线项目**
#### **方式1：自由风格项目**
1. **新建任务** > 选择 "Freestyle project"。
2. **配置 Git 仓库**：  
   - 在 "Source Code Management" 中选择 Git，填写仓库 URL（如 `https://github.com/your-repo.git`）。
   - 添加凭据（GitHub 用户名/密码或 SSH 密钥）。
3. **构建触发器**：  
   - 定时构建：`H/5 * * * *`（每5分钟检查一次）。
   - GitHub Webhook：需在 GitHub 仓库设置中配置 Webhook URL（`http://<Jenkins-IP>:8080/github-webhook/`）。
4. **构建步骤**：  
   - 执行 Shell 命令（如 `mvn clean package`）或调用 Docker 构建。

#### **方式2：Pipeline 脚本（推荐）**
1. 新建任务 > 选择 "Pipeline"。
2. 在 **Pipeline** 选项卡中，输入脚本示例：
   ```groovy
   pipeline {
       agent any
       stages {
           stage('Checkout') {
               steps {
                   git 'https://github.com/your-repo.git'
               }
           }
           stage('Build') {
               steps {
                   sh 'mvn clean package'
               }
           }
           stage('Test') {
               steps {
                   sh 'mvn test'
               }
           }
           stage('Deploy') {
               steps {
                   sh 'docker build -t myapp .'
                   sh 'docker push myrepo/myapp'
               }
           }
       }
   }
   ```

---

### **5. 集成 Docker 和 Kubernetes**
#### **Docker 构建**
1. 确保 Jenkins 服务器已安装 Docker，并将 Jenkins 用户加入 `docker` 组：
   ```bash
   sudo usermod -aG docker jenkins
   sudo systemctl restart jenkins
   ```
2. 在 Pipeline 中添加 Docker 步骤：
   ```groovy
   stage('Docker Build') {
       steps {
           script {
               docker.build("myapp:${env.BUILD_ID}").push()
           }
       }
   }
   ```

#### **Kubernetes 部署**
1. 安装 **Kubernetes CLI (kubectl)** 并配置 `~/.kube/config`。
2. 添加 Pipeline 阶段：
   ```groovy
   stage('Deploy to k8s') {
       steps {
           sh 'kubectl apply -f k8s/deployment.yaml'
       }
   }
   ```

---

### **6. 配置自动化触发**
#### **GitHub Webhook**
1. 在 GitHub 仓库 > Settings > Webhooks 中添加：
   - Payload URL: `http://<Jenkins-IP>:8080/github-webhook/`
   - Content type: `application/json`
2. 在 Jenkins 任务中勾选 **"GitHub hook trigger for GITScm polling"**。

#### **Jenkinsfile（代码即配置）**
1. 在项目根目录创建 `Jenkinsfile`，提交到仓库。
2. Jenkins 任务选择 **"Pipeline script from SCM"**，指定仓库和文件路径。

---

### **7. 监控与安全**
- **日志查看**：  
  进入任务控制台输出界面，实时查看构建日志。
- **权限管理**：  
  **Manage Jenkins > Configure Global Security**，启用 "Role-Based Strategy"。
- **备份**：  
  定期备份 `/var/lib/jenkins` 目录。

---

### **8. 常见问题解决**
- **权限不足**：  
  ```bash
  sudo chown -R jenkins:jenkins /var/lib/jenkins
  ```
- **插件安装失败**：  
  更换 Jenkins 插件镜像源（**Manage Jenkins > Plugin Manager > Advanced**，修改 Update Site 为清华镜像）。
- **端口冲突**：  
  修改 Jenkins 端口：  
  ```bash
  sudo systemctl edit jenkins
  # 添加 Environment="JENKINS_PORT=8081"
  sudo systemctl restart jenkins
  ```

---

### **总结**
- **快速开始**：通过 Docker 或包管理器一键安装 Jenkins。
- **核心能力**：通过 Pipeline 实现代码构建、测试、部署全自动化。
- **扩展性**：集成 Docker/K8s、GitHub Webhook 等现代工具链。

完成后，团队可实现代码提交后自动触发测试和部署，显著提升交付效率！ 🚀