一、Jenkins的常用类型介绍

1、自由风格软件项目(FreeStyle Project)

自由风格项目是Jenkins中最简单、最灵活的任务类型之一。它允许用户配置和组织构建过程的各个方面。在自由风格项目中,你可以定义构建脚本、设置触发构建的条件、配置源代码管理、构建后的操作等。这是一个适用于各种类型项目的通用任务类型。
特点:
灵活性高,适用于各种构建场景。
支持构建后的操作,比如邮件通知、部署等。

2、Maven 项目

对于使用Maven进行构建的Java项目,Jenkins提供了专门的Maven项目类型。在Maven项目中,你可以配置Maven构建的一些参数,比如clean install。Jenkins将自动处理Maven构建生命周期。
特点:
针对Maven项目进行了优化,简化了配置。
自动管理Maven构建生命周期。

3、多配置项目(Multi-Configuration Project)

多配置项目是一种用于构建和测试不同配置的任务类型。它允许你定义一组不同的构建配置,然后在这些配置上执行构建。这对于需要在不同环境或配置下运行测试的项目非常有用。
特点:
支持配置矩阵,适用于多配置的测试场景
可以同时运行多个构建配置

4、流水线项目(Pipeline Project)

流水线项目引入了Pipeline DSL(Domain Specific Language),使得构建过程变得更加可编程和可维护。Pipeline项目使用Jenkinsfile定义整个构建过程,包括构建、测试、部署等。这使得流水线项目非常适用于复杂的构建和部署流程。
特点:
支持可编程的构建过程。
高度可定制,适用于复杂项目的构建和部署。

5、 多分支项目(Multi-Branch Project)

多分支项目是针对版本控制系统中多个分支的构建需求而设计的。它会自动检测版本控制系统中的不同分支,并为每个分支创建一个独立的构建任务。
特点:
自动检测并构建版本控制系统中的各个分支。
适用于维护多个分支的项目。

二、配置运行环境及插件

1、安装Blue Ocean插件
在这里插入图片描述
2、Maven配置

  • Maven 全局配置

在这里插入图片描述

  • Maven在本机的安装目录

在这里插入图片描述

3、JDK安装目录
在这里插入图片描述

三、新增流水线项目(Pipeline Project)

1、新增Item 输入一个任务名称,选择Pipeline选项
在这里插入图片描述
2、进入该任务Configure配置页面,构建触发器并在Gitee仓库添加WebHook
在这里插入图片描述
3、流水线脚本

  • Pipeline script:在本页面构建流水线执行脚本
  • Pipeline script from SCM:仓库的根目录存放Jenkinsfile,流水线脚本从Gitee仓库获取并执行
  • 选择Git+maven的构建脚本方式(完整脚本我放在最后)
    在这里插入图片描述
    4、手动执行脚本测试,项目成功启动
    在这里插入图片描述

5、完整脚本

pipeline {
  agent any
    tools{
    
    maven "maven3.3.9"
    jdk"jdk8"
    }
    stages {
        
        stage('拉取代码') {
            agent none
            steps {
                git(url: 'https://gitee.com/xiestrong/jenkins-auto-build-demo.git', credentialsId: 'gitee-id', branch: 'master', changelog: true, poll: false)
                echo '拉取代码完成'

            }
        }
        
        
        stage('项目编译') {
            steps {
                    bat 'mvn clean package -Dmaven.test.skip=true'
                    echo '项目编译打包完成'
            }
        }
        stage('创建指定目录文件夹&移动项目路径') {
            steps {
                    bat '''
                    setlocal enabledelayedexpansion
                    set "BASE_DIR=C:\\projectTest"
                    set "DATE_FORMAT=%Y%m%d"
                    
                    for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set "DT=%%a"
                    set "YEAR=!DT:~0,4!"
                    set "MONTH=!DT:~4,2!"
                    set "DAY=!DT:~6,2!"
                    set "TARGET_FOLDER=%BASE_DIR%\\!YEAR!!MONTH!!DAY!"
                    
                    if not exist "!TARGET_FOLDER!\\" (
                        mkdir "!TARGET_FOLDER!"
                        
                    )
                    
                    xcopy /Y "C:\\ProgramData\\Jenkins\\.jenkins\\workspace\\metting-api-auto-build\\target\\*.jar" "%BASE_DIR%\\!YEAR!!MONTH!!DAY!"
                    
                    '''
                    echo '创建指定目录文件夹&移动项目路径完成'
            }
        }
        stage('结束指定端口进程') {
            steps {
                    bat '''
                    FOR /F "tokens=5" %%a IN ('netstat -aon ^| findstr ":8862"') DO (
                        IF "%%a" NEQ "0" (
                            TaskKill.exe /F /PID %%a & exit /b
                            echo 'end port suuccess'
                        ) ELSE (
                            echo 'not find port'
                        )
                    )
                    '''
            }
        }

        stage('运行项目') {
            steps {
                    bat '''
                    setlocal enabledelayedexpansion
                    set "BASE_DIR=C:\\projectTest"
                    set "DATE_FORMAT=%Y%m%d"
                    
                    for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set "DT=%%a"
                    set "YEAR=!DT:~0,4!"
                    set "MONTH=!DT:~4,2!"
                    set "DAY=!DT:~6,2!"
                    set "TARGET_FOLDER=%BASE_DIR%\\!YEAR!!MONTH!!DAY!"
                    
                    java -jar %BASE_DIR%\\!YEAR!!MONTH!!DAY!/RookieMeeting-0.0.1-SNAPSHOT.jar &
                    '''
                    echo '运行项目完成'
            }
        }
 

    }
}
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐