前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Jenkins 企业级 CI/CD 实践:安装、配置与 Kubernetes & Docker 集成

Jenkins 企业级 CI/CD 实践:安装、配置与 Kubernetes & Docker 集成

原创
作者头像
网罗开发
发布2025-02-07 17:29:06
发布2025-02-07 17:29:06
2330
举报
文章被收录于专栏:网罗开发

摘要

Jenkins 是最流行的开源 CI/CD 工具之一,广泛用于自动化软件构建、测试和部署。然而,由于其配置复杂插件众多,许多企业在落地 Jenkins 时面临挑战。本指南将详细讲解 Jenkins 的安装、Pipeline 配置、Agent 管理、插件扩展,并演示如何与 Kubernetes、Docker 集成,构建高效的自动化部署流程。

为什么选择 Jenkins?

Jenkins 拥有:

  • 强大的 CI/CD 能力:支持多种构建工具(Maven、Gradle)、测试框架(JUnit、Selenium)。
  • 丰富的插件生态:集成 Git、Docker、Kubernetes、Ansible 等。
  • 支持分布式构建:通过 Jenkins Agent 可扩展计算资源。

企业落地 Jenkins 面临的挑战

  • 安装 & 配置复杂:需要手动配置 Agent、Credentials、Pipeline。
  • 插件管理困难:企业环境通常依赖多个插件,管理不当易导致兼容性问题。
  • 云原生集成难度高:传统 Jenkins 需要手动管理构建环境,与 Kubernetes、Docker 集成需要额外配置。

本指南将解决以上痛点,帮助企业高效落地 Jenkins

Jenkins 安装与基础配置

在 Linux 服务器安装 Jenkins

安装 Jenkins
代码语言:bash
复制
wget -O /etc/yum.repos.d/jenkins.repo \
    https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins -y
systemctl enable jenkins
systemctl start jenkins
访问 Jenkins

Jenkins 默认运行在 http://<服务器IP>:8080,初次访问时,需要输入管理员密码:

代码语言:bash
复制
cat /var/lib/jenkins/secrets/initialAdminPassword

安装推荐插件

  • Pipeline(用于声明式流水线)
  • Blue Ocean(可视化 Pipeline)
  • Git Plugin(支持 Git 版本控制)
  • Docker Plugin(支持 Docker 构建)
  • Kubernetes Plugin(支持 Kubernetes 运行 Agent)

Jenkins Pipeline 配置

Jenkins Pipeline 采用 DSL 语法 定义 CI/CD 过程,主要分为:

  1. Declarative Pipeline(声明式):结构化、易读,推荐使用。
  2. Scripted Pipeline(脚本式):自由度高,但较复杂。

声明式 Pipeline 示例

创建 Jenkinsfile

代码语言:groovy
复制
pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps {
                git url: 'https://github.com/example/repo.git', branch: 'main'
            }
        }
        stage('Build') {
            steps {
                sh 'mvn clean package'
            }
        }
        stage('Test') {
            steps {
                sh 'mvn test'
            }
        }
        stage('Deploy') {
            steps {
                sh 'scp target/*.jar user@server:/deploy/path'
            }
        }
    }
}

Scripted Pipeline 示例

代码语言:groovy
复制
node {
    stage('Checkout') {
        git url: 'https://github.com/example/repo.git'
    }
    stage('Build') {
        sh 'mvn package'
    }
    stage('Test') {
        sh 'mvn test'
    }
    stage('Deploy') {
        sh 'scp target/*.jar user@server:/deploy/path'
    }
}

Jenkins Agent 配置

Jenkins 默认使用 Master 运行 Job,但为提高并发能力,可以配置 Agent(节点)

添加 SSH 连接的 Jenkins Agent

在 Jenkins 管理 > 节点管理 添加新节点,执行:

代码语言:bash
复制
java -jar agent.jar -jnlpUrl http://jenkins-server:8080/computer/agent/slave-agent.jnlp -secret <SECRET>

Docker 运行 Jenkins Agent

代码语言:bash
复制
docker run -d --rm --name jenkins-agent \
    -v /var/run/docker.sock:/var/run/docker.sock \
    jenkins/inbound-agent

与 Kubernetes & Docker 集成

使用 Docker 运行构建

安装 Docker Pipeline Plugin,并修改 Jenkinsfile

代码语言:groovy
复制
pipeline {
    agent {
        docker {
            image 'maven:3.8.4'
        }
    }
    stages {
        stage('Build') {
            steps {
                sh 'mvn package'
            }
        }
    }
}

在 Kubernetes 上运行 Jenkins

部署 Jenkins 到 Kubernetes
代码语言:yaml
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins
  template:
    metadata:
      labels:
        app: jenkins
    spec:
      containers:
      - name: jenkins
        image: jenkins/jenkins:lts
        ports:
        - containerPort: 8080
配置 Kubernetes Agent

安装 Kubernetes Plugin,然后在 Jenkinsfile 配置:

代码语言:groovy
复制
podTemplate(label: 'k8s-agent', containers: [
    containerTemplate(name: 'maven', image: 'maven:3.8.4', ttyEnabled: true)
]) {
    node('k8s-agent') {
        stage('Build') {
            container('maven') {
                sh 'mvn package'
            }
        }
    }
}

QA 环节

Q1: Jenkins 与 GitHub Actions、GitLab CI/CD 的区别?

特性

Jenkins

GitHub Actions

GitLab CI/CD

安装

需手动安装

GitHub 内置

GitLab 内置

插件扩展

丰富

限制较多

中等

分布式构建

支持

受限

支持

Docker 集成

中等

Q2: Jenkins 任务运行太慢?

优化方法:

  1. 使用并行 Stage
代码语言:groovy
复制
stage('Parallel Build') {
    parallel {
        stage('Unit Test') {
            steps {
                sh 'mvn test'
            }
        }
        stage('Integration Test') {
            steps {
                sh 'mvn verify'
            }
        }
    }
}
  1. 启用分布式构建,增加 Jenkins Agent
  2. 结合 Kubernetes 扩展构建能力

总结

Jenkins 是一款强大的 CI/CD 工具,但在企业落地时面临安装、配置和集成的挑战。本文详细介绍了 Jenkins 的 安装、Pipeline 配置、Agent 管理、插件扩展,并演示了如何与 Docker、Kubernetes 结合,提升部署自动化能力。同时,提供了优化 Jenkins 运行效率的方法,并对比了 GitHub Actions、GitLab CI/CD 的差异。企业可通过 分布式构建、并行流水线、云原生部署 来提高 Jenkins 的可扩展性。未来可探索 Jenkins + ArgoCD、Ansible、Serverless 等更先进的 DevOps 方案。

参考资料

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 摘要
  • 为什么选择 Jenkins?
  • 企业落地 Jenkins 面临的挑战
  • Jenkins 安装与基础配置
    • 在 Linux 服务器安装 Jenkins
      • 安装 Jenkins
      • 访问 Jenkins
    • 安装推荐插件
  • Jenkins Pipeline 配置
    • 声明式 Pipeline 示例
    • Scripted Pipeline 示例
  • Jenkins Agent 配置
    • 添加 SSH 连接的 Jenkins Agent
    • Docker 运行 Jenkins Agent
  • 与 Kubernetes & Docker 集成
    • 使用 Docker 运行构建
    • 在 Kubernetes 上运行 Jenkins
      • 部署 Jenkins 到 Kubernetes
      • 配置 Kubernetes Agent
  • QA 环节
    • Q1: Jenkins 与 GitHub Actions、GitLab CI/CD 的区别?
    • Q2: Jenkins 任务运行太慢?
  • 总结
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档