创建第一个 Job
本章将指导你创建并运行第一个 Jenkins Job,通过实践加深对 Jenkins 的理解。
创建 Freestyle Job
1. 新建任务
- 登录 Jenkins Web 界面
- 点击左侧菜单"新建 Item"
- 输入任务名称:
hello-world - 选择"Freestyle project"
- 点击"确定"
2. 配置任务
描述
在描述框中输入:
我的第一个 Jenkins 任务
用于学习 Jenkins 基础操作
构建步骤
- 滚动到"构建"部分
- 点击"增加构建步骤"
- 选择"执行 Shell"(Linux/macOS)或"执行 Windows 批处理命令"(Windows)
Shell 脚本示例:
#!/bin/bash
echo "================================"
echo "Hello, Jenkins!"
echo "构建时间: $(date)"
echo "工作目录: $(pwd)"
echo "================================"
Windows 批处理示例:
@echo off
echo =================================
echo Hello, Jenkins!
echo Build time: %date% %time%
echo Work directory: %cd%
echo =================================
3. 保存并运行
- 点击"保存"
- 点击"立即构建"
- 在"构建历史"中查看构建结果
- 点击构建号,选择"控制台输出"查看日志
创建 Git 项目 Job
1. 配置源码管理
- 创建新任务,选择 Freestyle project
- 在"源码管理"部分选择"Git"
- 输入仓库 URL:
https://github.com/jenkins-docs/simple-java-maven-app.git - 点击"保存"
2. 配置构建触发器
定时构建(每15分钟):
H/15 * * * *
轮询 SCM(每5分钟检查):
*/5 * * * *
3. 添加构建步骤
# 查看项目结构
ls -la
# 查看 README
cat README.md
创建 Pipeline Job
1. 新建 Pipeline 任务
- 点击"新建 Item"
- 输入名称:
my-first-pipeline - 选择"Pipeline"
- 点击"确定"
2. 编写 Pipeline 脚本
在 Pipeline 部分选择"Pipeline script",输入:
pipeline {
agent any
stages {
stage('Hello') {
steps {
echo 'Hello, Pipeline!'
}
}
stage('Build Info') {
steps {
echo "Build Number: ${env.BUILD_NUMBER}"
echo "Job Name: ${env.JOB_NAME}"
echo "Workspace: ${env.WORKSPACE}"
}
}
stage('Commands') {
steps {
script {
if (isUnix()) {
sh 'echo "Running on Unix"'
sh 'uname -a'
} else {
bat 'echo "Running on Windows"'
bat 'ver'
}
}
}
}
}
post {
always {
echo 'Pipeline completed!'
}
success {
echo 'Build succeeded!'
}
failure {
echo 'Build failed!'
}
}
}
3. 运行 Pipeline
- 点击"保存"
- 点击"立即构建"
- 查看"阶段视图"了解构建进度
参数化构建
1. 启用参数化构建
- 进入任务配置
- 勾选"参数化构建过程"
- 添加参数:
字符串参数:
- 名称:
USERNAME - 默认值:
Jenkins - 描述:
输入用户名
选项参数:
- 名称:
ENVIRONMENT - 选项:
development、testing、production - 描述:
选择部署环境
布尔值参数:
- 名称:
SKIP_TESTS - 默认值:未勾选
- 描述:
跳过测试
2. 在构建中使用参数
Freestyle Job(Shell):
echo "Hello, ${USERNAME}!"
echo "Environment: ${ENVIRONMENT}"
if [ "${SKIP_TESTS}" = "true" ]; then
echo "Tests skipped"
else
echo "Running tests..."
fi
Pipeline Job:
pipeline {
agent any
parameters {
string(name: 'USERNAME', defaultValue: 'Jenkins', description: '输入用户名')
choice(name: 'ENVIRONMENT', choices: ['development', 'testing', 'production'], description: '选择部署环境')
booleanParam(name: 'SKIP_TESTS', defaultValue: false, description: '跳过测试')
}
stages {
stage('Greeting') {
steps {
echo "Hello, ${params.USERNAME}!"
echo "Environment: ${params.ENVIRONMENT}"
}
}
stage('Test') {
when {
expression { !params.SKIP_TESTS }
}
steps {
echo 'Running tests...'
}
}
}
}
构建后操作
1. 归档产物
在"构建后操作"中添加"归档产物":
- 要归档的文件:
target/*.jar - 勾选"仅在构建成功时归档"
2. 发送邮件通知
配置邮件通知:
- Recipients:
[email protected] - 勾选"每次不稳定的构建都发送邮件"
3. 构建其他项目
配置下游项目:
- 要构建的项目:
deploy-job - 触发条件:仅在构建稳定时
查看构建结果
控制台输出
查看详细的构建日志:
Started by user admin
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/lib/jenkins/workspace/my-first-pipeline
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Hello)
[Pipeline] echo
Hello, Pipeline!
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
构建历史
- 构建号:每次构建自动递增
- 状态图标:显示构建结果
- 时间戳:构建开始时间
- 持续时间:构建耗时
工作空间
查看构建工作目录:
- 进入任务页面
- 点击"工作空间"
- 浏览文件结构
常用环境变量
| 变量名 | 说明 | 示例 |
|---|---|---|
BUILD_NUMBER | 构建编号 | 1 |
BUILD_ID | 构建 ID | 1 |
BUILD_URL | 构建 URL | http://jenkins/job/test/1/ |
JOB_NAME | 任务名称 | my-job |
JOB_URL | 任务 URL | http://jenkins/job/my-job/ |
WORKSPACE | 工作空间路径 | /var/lib/jenkins/workspace/my-job |
NODE_NAME | 节点名称 | master |
BUILD_USER | 触发构建的用户 | admin |
使用环境变量:
pipeline {
agent any
stages {
stage('Info') {
steps {
echo "Build: ${env.BUILD_NUMBER}"
echo "Job: ${env.JOB_NAME}"
echo "Node: ${env.NODE_NAME}"
}
}
}
}
实践练习
练习 1:Hello World
创建一个简单的 Job,输出 "Hello, Jenkins!" 和当前时间。
练习 2:Git 克隆
创建一个 Job,从 GitHub 克隆任意开源项目,并列出项目根目录文件。
练习 3:参数化构建
创建一个参数化 Job,接受用户名和环境参数,根据参数输出不同内容。
练习 4:多阶段 Pipeline
创建一个包含 Build、Test、Deploy 三个阶段的 Pipeline,每个阶段输出不同的信息。
常见问题
1. 权限不足
如果遇到权限错误:
# 检查 Jenkins 用户权限
sudo usermod -aG docker jenkins
sudo systemctl restart jenkins
2. 找不到命令
确保工具已安装并在 PATH 中:
pipeline {
agent any
tools {
maven 'Maven-3.8'
jdk 'JDK-11'
}
stages {
stage('Build') {
steps {
sh 'mvn --version'
}
}
}
}
3. 工作空间锁定
如果工作空间被锁定:
- 等待当前构建完成
- 或取消正在运行的构建
- 或配置并发构建选项
下一步
完成基础 Job 创建后,你可以: