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 服务器磁盘满了,清理一下构建历史"

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

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

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

相关推荐
Howrun7779 分钟前
关于Linux服务器的协作问题
linux·运维·服务器
yunfuuwqi2 小时前
OpenClaw✅真·喂饭级教程:2026年OpenClaw(原Moltbot)一键部署+接入飞书最佳实践
运维·服务器·网络·人工智能·飞书·京东云
迎仔2 小时前
C-算力中心网络隔离实施方法:怎么搞?
运维·网络
代码游侠2 小时前
C语言核心概念复习——网络协议与TCP/IP
linux·运维·服务器·网络·算法
AtoposのCX3304 小时前
Docker运行hello-world镜像失败或超时
运维·docker
Dragon~Snow5 小时前
Linux Centos9 安装 Elasticsearch
linux·elasticsearch·jenkins
熊延5 小时前
麒麟V10系统安装部署elasticsearch
linux·运维·服务器·elasticsearch·搜索引擎·全文检索
Yeats_Liao8 小时前
评估体系构建:基于自动化指标与人工打分的双重验证
运维·人工智能·深度学习·算法·机器学习·自动化
爱吃生蚝的于勒8 小时前
【Linux】进程信号之捕捉(三)
linux·运维·服务器·c语言·数据结构·c++·学习
文艺理科生Owen8 小时前
Nginx 路径映射深度解析:从本地开发到生产交付的底层哲学
运维·nginx