Jenkins流水线(Pipeline)入门教程

科长
2023-12-28 / 0 评论 / 127 阅读 / 正在检测是否收录...
Jenkinsfile是Jenkins的一种脚本语言,用于定义和执行持续集成(CI)和持续交付(CD)流水线。它允许开发人员以代码的方式描述和管理整个构建和部署过程,可以与版本控制系统(如Git)集成,实现自动化的构建、测试和部署。

本文将介绍如何快速入门使用Jenkinsfile来创建一个简单的CI/CD流水线。

安装和配置Jenkins

首先,你需要安装Jenkins并完成基本的配置。你可以在查看公众号往期文章里面的部署教程文章。

创建一个新的Jenkins任务

在Jenkins的主界面上,点击新建任务创建一个新的任务。在弹出的页面上,输入任务名称,并选择Pipeline作为任务类型,然后点击确定

编写Jenkinsfile

在任务配置页面中,找到流水线部分,将定义设置为Pipeline script,然后在脚本文本框中输入以下内容:

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                // 添加构建步骤,例如编译代码、运行测试等
                echo "编译"
            }
        }
        stage('Test') {
            steps {
                // 添加测试步骤,例如运行单元测试、集成测试等
                 echo "测试"
            }
        }
        stage('Deploy') {
            steps {
                // 添加部署步骤,例如将构建结果部署到服务器
                 echo "部署"
            }
        }
    }
}

在上面的示例中,我们定义了三个阶段:Build、Test和Deploy。每个阶段可以包含一个或多个步骤,你可以根据实际需求添加、修改或删除步骤。

pipeline中的关键字

在上面的Jenkinsfile示例中,我们使用了一些关键字来定义和管理流水线。以下是对每个关键字的简要介绍:

  1. pipeline: 这是Jenkinsfile中的顶级关键字,用于定义整个流水线。它包含一个stages块,用于定义流水线中的阶段。
  2. agent: 这个关键字指定在Jenkins中运行流水线的代理。any表示可以在任何可用的代理上运行流水线,也可以指定特定的代理。
  3. stages: 这是在pipeline块中定义的关键字,用于定义流水线中的阶段。每个阶段都包含一个或多个步骤。
  4. stage: 这个关键字用于定义流水线中的一个阶段。可以在流水线中定义多个阶段,并按照定义的顺序依次执行。
  5. steps: 这是在stage块中定义的关键字,用于定义阶段中的步骤。每个步骤表示流水线中的一个任务或操作。
  6. parallel: 这个关键字用于在流水线中并行执行多个步骤。可以将多个步骤定义在parallel块中,并行执行以提高执行效率。

除了上述关键字之外,还可以在流水线中使用其他关键字来实现更复杂的逻辑和定制,例如:

  • input: 这个关键字用于在流水线中暂停执行,并等待用户输入。可以在流水线中插入一个交互式步骤,以便用户提供额外的信息或确认。
  • when: 这个关键字用于根据条件控制流水线中的步骤是否执行。可以根据某些条件来决定是否跳过或执行特定的步骤。

保存并运行流水线

在完成Jenkinsfile的编写后,点击页面底部的保存按钮保存配置。然后,点击页左侧的Build Now按钮来运行流水线。

Jenkins将根据Jenkinsfile中定义的步骤顺序执行流水线。每个阶段中的步骤将按顺序执行,并根据执行结果决定是否继续执行下一个阶段。

你可以在流水线执行期间查看控制台输出,以了解每个步骤的执行情况。如果有错误或失败的步骤,你可以根据输出信息进行调试和修复。

自定义流水线

上面的示例只是一个简单的CI/CD流水线,你可以根据实际需求进行定制。以下是一些常见的定制选项:

  • 添加更多的阶段和步骤:根据你的需求,可以添加额外的阶段和步骤,例如代码质量检查、部署到不同环境等。
  • 参数化流水线:你可以在Jenkinsfile中定义参数,以便在每次运行流水线时灵活地传递不同的值。
  • 并行执行:如果某些步骤是独立的,你可以在流水线中使用parallel关键字将它们并行执行,以提高执行速度。

案例

模拟构建一个Spring Boot项目Jenkins流水线时,可以按照以下步骤编写Jenkinsfile:

pipeline {
    agent any
    environment {
        // 定义环境变量,例如构建版本号等
    }
    stages {
        stage('Checkout') {
            steps {
                // 从GitHub仓库中拉取代码
                git credentialsId: 'github-credentials', url: 'https://github.com/your-repo.git'
            }
        }
        stage('Build') {
            steps {
                // 使用Maven构建项目
                sh 'mvn clean package'
            }
        }
        stage('Deploy') {
            steps {
                // 将构建结果上传到目标服务器,并运行
                 sshPublisher(publishers: [sshPublisherDesc(configName: 'PublishSSH', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'sh start.sh', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: 'PipelineDemo', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'target/xx.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }
    }
}

在上述示例中,我们将流水线分为三个阶段:CheckoutBuildDeploy。每个阶段中的步骤用来执行相应的操作。

Checkout阶段中,我们使用git步骤从GitHub仓库中拉取代码。您需要将credentialsId替换为您在Jenkins中配置的与GitHub仓库相关的凭据ID,并将url替换为您的GitHub仓库URL。

Build阶段中,我们使用sh步骤使用Maven构建项目。确保您的Jenkins服务器上已经安装了Maven。

Deploy阶段中,我们使用sshPublisher步骤将构建结果上传到目标服务器。将configName 改为ssh服务器的名称,将sourceFiles替换为构建结果的路径,将remoteDirectory替换为部署目标路径,execCommand在文件上传完成后执行的命令。

0

评论 (0)

取消