第三章:快速入门

创建您的第一个 Jenkins 构建任务,学习基本操作和工作流程。

最后更新: 2024-01-15
页面目录

Jenkins 快速入门

本章将带您创建第一个 Jenkins 构建任务,熟悉 Jenkins 的基本操作界面和工作流程。

访问 Jenkins

启动 Jenkins 后,通过浏览器访问:

http://localhost:8080

登录后,您将看到 Jenkins 主界面:

┌─────────────────────────────────────────────────────────────────┐
│  Jenkins                                      [用户名 ▼]        │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  + 新建任务                    🔍 搜索                             │
│                                                                  │
│  ┌─────────────────────────────────────────────────────────────┐ │
│  │  ● dashboard                                               │ │
│  │  ├─ 任务状态概览                                             │ │
│  │  │   • 构建历史                                              │ │
│  │  │   • 节点状态                                              │ │
│  │  │   • 系统信息                                              │ │
│  │  └─ 快速链接                                                │ │
│  └─────────────────────────────────────────────────────────────┘ │
│                                                                  │
│  + 创建流水线项目 + 新建任务                                       │
└─────────────────────────────────────────────────────────────────┘

创建第一个 Freestyle 项目

步骤 1:新建任务

  1. 点击左侧 「新建任务」
  2. 输入任务名称:my-first-build
  3. 选择 「构建一个自由风格的软件项目」
  4. 点击 「确定」

步骤 2:配置项目

General 配置

配置项 说明
描述 我的第一个 Jenkins 项目 项目说明
丢弃旧的构建 保留最近 10 次构建
参数化构建过程 暂不使用

源码管理

选择 Git 并配置仓库:

Repository URL: https://github.com/example/sample-project.git
Credentials:    [添加 GitHub 凭据]
Branch:         */main

构建触发器

配置自动触发条件:

触发方式 配置
轮询 SCM H/5 * * * * (每5分钟检查)
Build after other projects project-name
定时构建 H 2 * * * (每天凌晨2点)

构建步骤

添加构建步骤:

1. 执行 Shell

#!/bin/bash
echo "======================================"
echo "开始构建..."
echo "======================================"

# 编译项目
echo "Step 1: 编译代码"
./mvnw clean compile

# 运行测试
echo "Step 2: 运行测试"
./mvnw test

# 打包
echo "Step 3: 打包应用"
./mvnw package -DskipTests

echo "======================================"
echo "构建完成!"
echo "======================================"

2. 记录 JUnit 测试结果

测试报告 XML: target/surefire-reports/*.xml

3. 归档构建产物

待归档的文件: target/*.jar

步骤 3:保存并构建

  1. 点击 「保存」
  2. 在项目页面点击 「立即构建」
  3. 查看构建进度和控制台输出

构建结果解读

控制台输出

构建过程中可以实时查看日志:

Started by user admin
Running as SYSTEM
Building remotely on Agent-1 (linux) in workspace /home/jenkins/workspace/my-first-build
[Pipeline] timeout
Timeout set to expire in 10 min
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Build)
[Pipeline] echo
开始构建...
[Pipeline] echo
Step 1: 编译代码
+ ./mvnw clean compile
...
Finished: SUCCESS

构建状态图标

状态 图标 含义
🔵 蓝色 成功 所有步骤执行成功
🔴 红色 失败 某步骤执行失败
🟡 黄色 不稳定 测试失败但编译成功
⚪ 灰色 中止 构建被手动取消
🟠 橙色 灰度 正在构建中

创建第一个 Pipeline 项目

Pipeline 语法简介

Pipeline 使用声明式语法,在 Jenkinsfile 中定义:

pipeline {
    agent any
    
    environment {
        APP_NAME = 'my-app'
        VERSION = '1.0.0'
    }
    
    options {
        timeout(time: 30, unit: 'MINUTES')
        buildDiscarder(logRotator(numToKeepStr: '10'))
    }
    
    stages {
        stage('Checkout') {
            steps {
                echo '检出代码...'
                checkout scm
            }
        }
        
        stage('Build') {
            steps {
                echo '编译项目...'
                sh 'mvn clean package -DskipTests'
            }
        }
        
        stage('Test') {
            steps {
                echo '运行测试...'
                sh 'mvn test'
            }
            post {
                always {
                    junit 'target/surefire-reports/*.xml'
                }
            }
        }
        
        stage('Deploy') {
            when {
                branch 'main'
            }
            steps {
                echo '部署应用...'
                sh './deploy.sh'
            }
        }
    }
    
    post {
        always {
            echo '清理工作...'
        }
        success {
            echo '构建成功!'
        }
        failure {
            echo '构建失败!'
        }
    }
}

创建 Pipeline 项目

  1. 点击 「新建任务」
  2. 输入任务名称:my-first-pipeline
  3. 选择 「Pipeline」
  4. 在 Pipeline 脚本框中粘贴上述代码
  5. 点击 「保存」「立即构建」

常用操作

查看构建历史

项目首页 → 构建历史 → 点击构建编号 → 控制台输出

参数化构建

添加字符串参数:

pipeline {
    parameters {
        string(name: 'BRANCH', defaultValue: 'main', description: 'Git 分支名')
        choice(name: 'ENV', choices: ['dev', 'staging', 'prod'], description: '部署环境')
        booleanParam(name: 'SKIP_TEST', defaultValue: false, description: '跳过测试')
    }
    
    stages {
        stage('Build') {
            steps {
                echo "构建分支: ${params.BRANCH}"
                echo "部署环境: ${params.ENV}"
            }
        }
    }
}

邮件通知

配置构建后操作:

构建后操作 → Editable Email Notification
    Default Content: $BUILD_STATUS - $PROJECT_NAME
    Recipients: $DEFAULT_RECIPIENTS

实践练习

练习 1:Hello World Pipeline

创建一个最简单的 Pipeline:

pipeline {
    agent any
    stages {
        stage('Hello') {
            steps {
                echo 'Hello Jenkins!'
                sh 'echo "Today is $(date)"'
            }
        }
    }
}

练习 2:多阶段构建

创建一个包含编译、测试、部署的完整 Pipeline:

pipeline {
    agent {
        label 'docker'
    }
    
    stages {
        stage('Clone') {
            steps {
                git 'https://github.com/spring-projects/spring-boot.git'
            }
        }
        
        stage('Build') {
            steps {
                sh './mvnw clean package -DskipTests'
            }
        }
        
        stage('Test') {
            steps {
                sh './mvnw test'
            }
            post {
                always {
                    junit '**/target/surefire-reports/*.xml'
                }
            }
        }
        
        stage('Docker Build') {
            steps {
                sh '''
                    docker build -t myapp:$BUILD_NUMBER .
                '''
            }
        }
    }
    
    post {
        always {
            cleanWs()
        }
    }
}

下一步

现在您已经掌握了 Jenkins 的基本操作。接下来让我们深入学习 Pipeline 的核心概念和语法。

👉 Pipeline 基础


🎯 练习提示:建议在本地环境中动手实践,创建不同的项目类型,熟悉 Jenkins 的各种配置选项。