Jenkins 是最流行的开源 CI/CD 工具之一,广泛用于自动化软件构建、测试和部署。然而,由于其配置复杂、插件众多,许多企业在落地 Jenkins 时面临挑战。本指南将详细讲解 Jenkins 的安装、Pipeline 配置、Agent 管理、插件扩展,并演示如何与 Kubernetes、Docker 集成,构建高效的自动化部署流程。
Jenkins 拥有:
本指南将解决以上痛点,帮助企业高效落地 Jenkins。
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 默认运行在 http://<服务器IP>:8080
,初次访问时,需要输入管理员密码:
cat /var/lib/jenkins/secrets/initialAdminPassword
Jenkins Pipeline 采用 DSL 语法 定义 CI/CD 过程,主要分为:
创建 Jenkinsfile
:
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'
}
}
}
}
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 默认使用 Master 运行 Job,但为提高并发能力,可以配置 Agent(节点)。
在 Jenkins 管理 > 节点管理 添加新节点,执行:
java -jar agent.jar -jnlpUrl http://jenkins-server:8080/computer/agent/slave-agent.jnlp -secret <SECRET>
docker run -d --rm --name jenkins-agent \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkins/inbound-agent
安装 Docker Pipeline Plugin,并修改 Jenkinsfile
:
pipeline {
agent {
docker {
image 'maven:3.8.4'
}
}
stages {
stage('Build') {
steps {
sh 'mvn package'
}
}
}
}
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 Plugin,然后在 Jenkinsfile
配置:
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'
}
}
}
}
特性 | Jenkins | GitHub Actions | GitLab CI/CD |
---|---|---|---|
安装 | 需手动安装 | GitHub 内置 | GitLab 内置 |
插件扩展 | 丰富 | 限制较多 | 中等 |
分布式构建 | 支持 | 受限 | 支持 |
Docker 集成 | 强 | 中等 | 强 |
优化方法:
stage('Parallel Build') {
parallel {
stage('Unit Test') {
steps {
sh 'mvn test'
}
}
stage('Integration Test') {
steps {
sh 'mvn verify'
}
}
}
}
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 删除。