跳到主要内容

创建第一个 Job

本章将指导你创建并运行第一个 Jenkins Job,通过实践加深对 Jenkins 的理解。

创建 Freestyle Job

1. 新建任务

  1. 登录 Jenkins Web 界面
  2. 点击左侧菜单"新建 Item"
  3. 输入任务名称:hello-world
  4. 选择"Freestyle project"
  5. 点击"确定"

2. 配置任务

描述

在描述框中输入:

我的第一个 Jenkins 任务
用于学习 Jenkins 基础操作

构建步骤

  1. 滚动到"构建"部分
  2. 点击"增加构建步骤"
  3. 选择"执行 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. 保存并运行

  1. 点击"保存"
  2. 点击"立即构建"
  3. 在"构建历史"中查看构建结果
  4. 点击构建号,选择"控制台输出"查看日志

创建 Git 项目 Job

1. 配置源码管理

  1. 创建新任务,选择 Freestyle project
  2. 在"源码管理"部分选择"Git"
  3. 输入仓库 URL:https://github.com/jenkins-docs/simple-java-maven-app.git
  4. 点击"保存"

2. 配置构建触发器

定时构建(每15分钟):

H/15 * * * *

轮询 SCM(每5分钟检查):

*/5 * * * *

3. 添加构建步骤

# 查看项目结构
ls -la

# 查看 README
cat README.md

创建 Pipeline Job

1. 新建 Pipeline 任务

  1. 点击"新建 Item"
  2. 输入名称:my-first-pipeline
  3. 选择"Pipeline"
  4. 点击"确定"

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. 点击"保存"
  2. 点击"立即构建"
  3. 查看"阶段视图"了解构建进度

参数化构建

1. 启用参数化构建

  1. 进入任务配置
  2. 勾选"参数化构建过程"
  3. 添加参数:

字符串参数

  • 名称:USERNAME
  • 默认值:Jenkins
  • 描述:输入用户名

选项参数

  • 名称:ENVIRONMENT
  • 选项:developmenttestingproduction
  • 描述:选择部署环境

布尔值参数

  • 名称: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. 发送邮件通知

配置邮件通知:

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

构建历史

  • 构建号:每次构建自动递增
  • 状态图标:显示构建结果
  • 时间戳:构建开始时间
  • 持续时间:构建耗时

工作空间

查看构建工作目录:

  1. 进入任务页面
  2. 点击"工作空间"
  3. 浏览文件结构

常用环境变量

变量名说明示例
BUILD_NUMBER构建编号1
BUILD_ID构建 ID1
BUILD_URL构建 URLhttp://jenkins/job/test/1/
JOB_NAME任务名称my-job
JOB_URL任务 URLhttp://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 创建后,你可以:

  1. 学习 Pipeline 基础语法