Skip to main content
Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Jenkins 基础教程

下面是一份 超全、结构清晰、可直接收藏的 Jenkins 全套知识体系,包括概念、安装、Pipeline、流水线最佳实践、运维、集群、故障排查等,让你一次性吃透 Jenkins。

1. Jenkins 是什么?

Jenkins 是最常用的 CI/CD 持续集成与持续交付平台

特点:

  • 免费、开源
  • 插件生态超丰富
  • 支持 Pipeline as Code(Jenkinsfile)
  • 支持分布式构建(Master + Agent)

2. Jenkins 基础概念

概念 说明
Master(Controller 负责 UI、管理任务、调度构建
Agent(Worker) 实际执行构建
Job / Project 构建任务,Freestyle/ Pipeline
Pipeline 用 Groovy DSL 写的流水线
Stage 流水线的大步骤
Step 每一步执行的命令
Node 指定构建在哪个 agent 上跑
Label 给 agent 打标签,让 pipeline 选择

3. Jenkins 安装方式

✅ 方式一:使用 Docker(推荐)

docker run -d \
    -p 8080:8080 \
    -p 50000:50000 \
    -v jenkins_home:/var/jenkins_home \
    jenkins/jenkins:lts

方式二:Linux 安装(Ubuntu)

apt update
apt install openjdk-17-jdk -y
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
echo deb http://pkg.jenkins.io/debian binary/ > /etc/apt/sources.list.d/jenkins.list
apt update
apt install jenkins
systemctl enable --now jenkins

方式三:Kubernetes(企业级)

使用 Helm:

helm repo add jenkins https://charts.jenkins.io
helm install my-jenkins jenkins/jenkins

4. Jenkins 插件(必装清单)

插件 用途
Pipeline Jenkinsfile 流水线基础
Git / GitHub Git SCM 支持
Credentials Binding 凭证绑定
Blue Ocean 更直观的 UI
Docker Pipeline 使用 Docker
Kubernetes Plugin 动态 Agent
Email-ext 邮件通知
AnsiColor 控制台彩色输出

5. Jenkins Pipeline 教程(从零到精通)

🔷 最简 Jenkinsfile(示例)

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo "Building..."
            }
        }
        stage('Test') {
            steps {
                echo "Testing..."
            }
        }
        stage('Deploy') {
            steps {
                echo "Deploying..."
            }
        }
    }
}

🔷 指定 Agent

agent { label 'linux' }

🔷 使用多个 Agent

stage('Test on different OS') {
    matrix {
        axes {
            axis { name 'OS'; values 'linux', 'windows' }
        }
        agent { label "${OS}" }
        stages {
            stage('Run Tests') {
                steps {
                    echo "Run test on ${OS}"
                }
            }
        }
    }
}

🔷 环境变量

environment {
    VERSION = "1.0.0"
}

🔷 使用凭证(例如 Git Token)

withCredentials([string(credentialsId: 'github-token', variable: 'TOKEN')]) {
    sh "git clone https://token:${TOKEN}@github.com/xxx/xxx.git"
}

🔷 Docker 构建

pipeline {
    agent any
    stages {
        stage('Docker Build') {
            steps {
                script {
                    docker.build("myapp:${BUILD_NUMBER}")
                }
            }
        }
    }
}

6. CI/CD 实战(生产级)

🌟 构建 + 测试 + 打包镜像 + 推送 + 部署 K8s

pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps { checkout scm }
        }

        stage('Build') {
            steps {
                sh "python3 -m build"
            }
        }

        stage('Unit Test') {
            steps {
                sh "pytest tests/"
            }
        }

        stage('Docker Build & Push') {
            steps {
                script {
                    docker.withRegistry("https://registry.xxx.com", "harbor-cred") {
                        def image = docker.build("myapp:${env.BUILD_NUMBER}")
                        image.push()
                    }
                }
            }
        }

        stage('Deploy to K8s') {
            steps {
                sh """
                kubectl set image deployment/myapp myapp=myapp:${BUILD_NUMBER}
                kubectl rollout status deployment/myapp
                """
            }
        }
    }
}

7. Jenkins 运维与优化

性能优化建议:

  • Jenkins Home 放 SSD
  • 定期清理构建历史
  • 插件数量控制在 < 40
  • 使用专门的 agent 执行重任务(如 Docker)
  • JVM 参数调整(如 heap 2-4G)

示例 /etc/default/jenkins:

JAVA_ARGS="-Xms1g -Xmx4g -XX:+UseG1GC"

8. Jenkins 集群(Master + Agent)

Agent 连接方式:

  • SSH
  • JNLP
  • Docker Agent
  • Kubernetes 动态 Agent(企业最推荐)

K8s 动态 Agent 示例:

spec:
  containers:
    - name: jnlp
      image: jenkins/inbound-agent
      args: ['$(JENKINS_SECRET)', '$(JENKINS_NAME)']

9. Jenkins 常见故障排查

🔥 1. 构建卡住不动

原因:

  • Agent 离线
  • 网络问题
  • Workspace 被锁死

解决:

Manage Jenkins -> Nodes -> 重连 Agent

🔥 2. Git 拉取失败

原因:

  • 凭证错误
  • Token 过期
  • Git 服务器网络问题

解决:

  • 检查 Credentials
  • 重新绑定 Token

🔥 3. 插件冲突

解决:

  • 查看 /var/jenkins_home/logs/all*
  • 禁用冲突插件
  • 升级 Jenkins 核心版本

10 Jenkins 最佳实践(企业级)

  • 所有 Job 用 Pipeline,不用 Freestyle
  • Docker 里执行构建,保持环境一致
  • 将 Jenkinsfile 放入 Git
  • 使用 Kubernetes 动态 Agent(成本最低)
  • 凭证统一放 Credentials,不写死
  • Job 分阶段,可观察性强
  • 通知钉钉 / 企业微信 / Slack