Jenkins自动化构建详细教程
1. 什么是Jenkins
Jenkins是一个开源的持续集成和持续交付(CI/CD)工具,用于自动化构建、测试和部署软件。它提供了一个强大的平台,可以自动化软件的开发、测试和部署流程,帮助团队更快、更可靠地交付软件。
2. Jenkins安装和配置
2.1. 安装Jenkins
系统要求:Java 8或更高版本
下载Jenkins:访问Jenkins官方网站https://www.jenkins.io/download/下载适合你系统的Jenkins版本
安装Jenkins:
Windows:下载msi安装包,双击安装
Linux (Ubuntu/Debian):
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins
macOS:使用Homebrew安装
brew install jenkins
启动Jenkins服务:
Linux:
sudo systemctl start jenkins
Windows:服务中找到Jenkins并启动
macOS:
brew services start jenkins
2.2. 初始配置
访问Jenkins:打开浏览器,访问http://localhost:8080
解锁Jenkins:查看初始密码
Linux:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Windows:C:\Program Files\Jenkins\home\secrets\initialAdminPassword
macOS:~/.jenkins/secrets/initialAdminPassword
安装建议的插件:选择"Install suggested plugins"
创建管理员账户:按照提示创建管理员用户
设置Jenkins URL:确认或修改Jenkins URL
3. 创建自动化构建任务
3.1. 新建任务
点击Jenkins主页面上的"新建Item"
输入任务名称(例如:my-project-build)
选择"自由风格的软件项目"(Freestyle project)
点击"确定"
3.2. 配置源代码管理
在任务配置页面,找到"源代码管理"部分
选择"Git"
输入Repository URL:
https://github.com/yourusername/yourrepository.git
添加凭据(如果需要)
点击"添加"按钮
选择"Jenkins"
输入你的Git凭据
选择"Username with password"
输入用户名和密码/个人访问令牌
点击"添加"
在凭据下拉菜单中选择刚刚添加的凭据
指定分支(例如:*/main 或 */master)
3.3. 配置构建触发器
在任务配置页面,找到"构建触发器"部分
选择触发方式:
"Poll SCM":定期检查代码变更
# 每5分钟检查一次
H/5 * * * *
"GitHub hook trigger for GITScm polling":通过GitHub webhook触发
"Build periodically":定期构建
# 每天凌晨1点构建
H 1 * * *
4. 构建脚本编写
4.1. 添加构建步骤
在任务配置页面,找到"构建"部分
点击"添加构建步骤"
选择"Execute shell"(Linux/macOS)或"Execute Windows batch command"(Windows)
4.2. 构建脚本示例
#### Python项目构建示例
# 创建虚拟环境
python3 -m venv venv
# 激活虚拟环境
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt
# 运行测试
python -m pytest tests/
# 打包应用
python setup.py sdist bdist_wheel
#### Node.js项目构建示例
# 安装依赖
npm install
# 运行测试
npm test
# 构建应用
npm run build
# 打包应用
npm run package
#### Java Maven项目构建示例
# 清理项目
mvn clean
# 运行测试
mvn test
# 构建项目
mvn package
# 安装到本地仓库
mvn install
5. 构建后操作
5.1. 配置构建后操作
在任务配置页面,找到"构建后操作"部分
点击"添加构建后操作"
5.2. 常用构建后操作
"Archive the artifacts":保存构建产物
输入要保存的文件路径,例如:
dist/*.whl
target/*.jar
"Publish JUnit test result report":发布测试结果
输入测试报告文件路径,例如:
**/test-reports/*.xml
"Send build artifacts over SSH":通过SSH发送构建产物
配置SSH服务器
指定传输的源文件和目标目录
"E-mail Notification":邮件通知
输入收件人邮箱地址
配置邮件触发条件(例如:每次不稳定构建时)
6. 高级配置
6.1. 使用Pipeline
Jenkins Pipeline(也称为"Pipeline")是一套插件,支持实现和集成持续交付流水线到Jenkins。
创建Pipeline任务
点击"新建Item"
输入任务名称
选择"流水线"(Pipeline)
点击"确定"
编写Pipeline脚本
在任务配置页面,找到"流水线"部分
选择"Pipeline script"
编写Jenkinsfile:
pipeline {
agent any
environment {
PATH = "/usr/local/bin:${env.PATH}"
}
stages {
stage('Checkout') {
steps {
git url: 'https://github.com/yourusername/yourrepository.git', branch: 'main'
}
}
stage('Build') {
steps {
sh 'npm install'
sh 'npm run build'
}
}
stage('Test') {
steps {
sh 'npm test'
}
post {
always {
junit 'test-results/*.xml'
}
}
}
stage('Deploy') {
when {
branch 'main'
}
steps {
sh 'npm run deploy'
}
}
}
post {
always {
echo 'Build completed'
}
success {
echo 'Build was successful!'
}
failure {
echo 'Build failed!'
emailext (
subject: "Build Failed: ${env.JOB_NAME} - ${env.BUILD_NUMBER}",
body: """
Build failed for ${env.JOB_NAME} - ${env.BUILD_NUMBER}
Build URL: ${env.BUILD_URL}
""",
to: 'team@example.com'
)
}
}
}
6.2. 使用共享库
共享库允许你定义在多个Pipeline之间共享的代码。
创建共享库
创建一个Git仓库来存放共享库代码
遵循Jenkins共享库目录结构:
(root)
├── vars # 全局变量
│ └── myStep.groovy # 自定义步骤
└── src # 标准Java目录结构
└── com
└── mycorp
└── pipeline
└── Utils.groovy # 共享类
在Jenkins中配置共享库
进入"Manage Jenkins" > "Configure System"
找到"Global Pipeline Libraries"部分
点击"Add"
输入名称(例如:my-shared-library)
选择"Retrieval Method"(例如:Modern SCM)
配置SCM(例如:Git)
输入共享库仓库URL
在Pipeline中使用共享库
@Library('my-shared-library')_
pipeline {
agent any
stages {
stage('Example') {
steps {
myCustomStep()
}
}
}
}
6.3. 参数化构建
参数化构建允许你在运行构建时提供参数。
在任务配置页面,勾选"参数化构建过程"
点击"添加参数"
选择参数类型:
"String Parameter":字符串参数
"Choice Parameter":选择参数
"Boolean Parameter":布尔参数
"File Parameter":文件参数
配置参数:
// 示例:Choice参数
ENVIRONMENT
dev
test
prod
在构建脚本中使用参数:
// 在Shell脚本中使用
echo "Building for environment: $ENVIRONMENT"
// 在Pipeline中使用
pipeline {
agent any
parameters {
choice(name: 'ENVIRONMENT', choices: ['dev', 'test', 'prod'], description: 'Select environment')
}
stages {
stage('Build') {
steps {
echo "Building for environment: ${params.ENVIRONMENT}"
}
}
}
}
7. 总结
Jenkins是一个功能强大的自动化构建工具,通过本教程,我们学习了Jenkins的基本概念、安装配置、创建自动化构建任务、编写构建脚本、配置构建后操作以及一些高级配置技巧。Jenkins的灵活性使其能够适应各种软件开发环境,帮助团队实现持续集成和持续交付,提高软件交付速度和质量。
要充分利用Jenkins的潜力,建议继续探索其丰富的插件生态系统,根据项目需求定制化构建流程,并结合版本控制系统、测试工具和部署工具,构建完整的CI/CD流水线。




