Jenkins

Jenkins 是一个开源的、用 Java 编写的自动化服务器,主要用于持续集成和持续交付(CI/CD),专门负责处理代码从编写到上线的重复性工作。

不只是CI/CD,还能做各种定时任务:

  • 每天凌晨2点自动备份数据库

  • 每小时清理临时文件

  • 每周生成项目报告

  • 定时监控服务器状态

Jenkins 工作原理

核心架构

主节点(Master)

├── 管理控制台(Web界面)

├── 流水线配置

└── 调度任务

从节点(Agent/Slave)

├── 执行构建任务

├── 运行测试

└── 执行部署

实际应用场景

场景1:Web 项目自动化部署

复制代码
// Jenkinsfile 示例(声明式流水线)
pipeline {
    agent any
    stages {
        stage('拉取代码') {
            steps {
                git 'https://github.com/your-company/your-app.git'
            }
        }
        stage('安装依赖') {
            steps {
                sh 'npm install'
            }
        }
        stage('运行测试') {
            steps {
                sh 'npm test'
            }
        }
        stage('构建') {
            steps {
                sh 'npm run build'
            }
        }
        stage('部署到测试环境') {
            steps {
                sh 'scp -r dist/* test-server:/var/www/'
            }
        }
    }
}

场景2:Java 微服务 CI/CD

复制代码
pipeline {
    agent {
        docker {
            image 'maven:3.8-openjdk-11'
        }
    }
    stages {
        stage('构建JAR包') {
            steps {
                sh 'mvn clean package -DskipTests'
            }
        }
        stage('单元测试') {
            steps {
                sh 'mvn test'
            }
        }
        stage('构建Docker镜像') {
            steps {
                sh '''
                    docker build -t your-app:$BUILD_NUMBER .
                    docker push your-registry/your-app:$BUILD_NUMBER
                '''
            }
        }
        stage('部署到K8s') {
            steps {
                sh 'kubectl set image deployment/your-app your-app=your-registry/your-app:$BUILD_NUMBER'
            }
        }
    }
}

场景3:定时数据备份

复制代码
// 每天凌晨3点自动备份
pipeline {
    triggers {
        cron('0 3 * * *')
    }
    stages {
        stage('备份数据库') {
            steps {
                sh 'mysqldump -u root -p密码 数据库名 > backup_$(date +%Y%m%d).sql'
            }
        }
        stage('上传到云存储') {
            steps {
                sh 'aws s3 cp backup_$(date +%Y%m%d).sql s3://my-backup-bucket/'
            }
        }
    }
}

实际工作中的 Jenkins

开发人员视角

# 日常操作:

1. 写代码

2. git commit -m "修复bug"

3. git push origin main

4. Jenkins自动开始构建

5. 等待Slack/邮件通知结果

6. 查看测试报告(如有失败)

运维人员视角

# 管理任务:

1. 配置Jenkins任务

2. 管理构建节点

3. 监控构建队列

4. 查看构建历史

5. 插件更新和维护

6. 备份Jenkins配置

团队管理者视角

# 价值体现:

✅ 每次提交都自动测试,代码质量提升

✅ 发布频率从每月一次到每天多次

✅ 减少人为部署错误

✅ 所有构建过程可追溯

✅ 团队效率显著提高

在 DevOps 文化中,Jenkins 是连接开发(Dev)和运维(Ops)的核心枢纽。它让软件发布从"手工艺术"变成了"自动化流水线",是现代软件工程不可或缺的基础设施。

实际工作中的常见问题

更通俗易懂的理解下Jenkins是怎么供开发和运维使用的:

开发常说的话:

  • "Jenkins 构建又失败了,帮我看看日志?"

  • "我想部署到测试环境,点哪个按钮?"

  • "这个构建怎么这么慢?"

  • "我的分支构建失败了,但本地是好的"

运维常说的话:

  • "Jenkins 服务器磁盘满了,清理一下构建历史"

  • "新项目需要什么构建环境?我来配置"

  • "生产发布需要审批,等领导点一下"

  • "构建机内存不够了,再加两台服务器"

相关推荐
invicinble5 小时前
nginx的基本认识
运维·nginx
阿基米东5 小时前
Traefik:为云原生而生的自动化反向代理
运维·云原生·自动化
Trouvaille ~5 小时前
【LInux】进程程序替换与shell实现:从fork到exec的完整闭环
linux·运维·c语言·c++·ssh·进程替换·基础入门
BAOYUCompany5 小时前
暴雨服务器成功中标湖南石油化工职业技术学院
运维·服务器
sdszoe49225 小时前
思科DHCP+OSPF综合实验
运维·服务器·网络·ospf·思科dhcp
2501_927283585 小时前
全程自动化:智慧工厂的物流协奏新篇章
运维·人工智能·自动化·制造·agv
嘻哈baby5 小时前
Nginx反向代理与负载均衡实战指南
运维·nginx·负载均衡
翼龙云_cloud6 小时前
阿里云渠道商:轻量服务器远程协作性能优化指南
运维·服务器·阿里云·性能优化·云计算
菜鸡的升级之路6 小时前
服务器卡死排查流程
运维·服务器