如何创建 Jenkins CI CD 流水线

了解到Jenkins具有内置支持持续集成/持续交付(CI/CD)吗?通过在项目中实施Jenkins CI CD管道,可以显著改进软件开发流程。

Jenkins是迄今为止最受欢迎的DevOps自动化工具之一。如果您想要开始使用Jenkins CI CD管道,您来对地方了。

继续阅读,在本教程中,您将学习如何在GitHub上设置Jenkins CI CD管道。

先决条件

本教程假设您具备以下要求,以便按照示例进行操作。

您必须已经安装了Jenkins。本教程中的示例将使用在Windows 10 20H2计算机上运行的Jenkins v2.319.1。

  • 您的 Jenkins 网页控制台必须可以通过互联网访问。
  • A Github account to which you’ll connect with the Jenkins CI CD pipeline.
  • Git SCM。本教程使用最新的(2.34.1)64 位 Windows 版 Git。

准备 GitHub 存储库

本教程涉及将 Jenkins CI CD 流水线与 GitHub 存储库集成。与创建空白项目不同,复制现有存储库可以更快地开始。

1. 首先,打开浏览器并登录到您的 GitHub 帐户

2. 接下来,导航到示例存储库 URL(来自 Microsoft Connect 2016 的 MyShuttle2 应用程序)。一旦您进入存储库页面,点击页面右上角的Fork按钮。

Forking a repo

等待复制过程完成。最终,您将在您的 GitHub 帐户中拥有名为“用户名/MyShuttle2”的存储库,您拥有对其的完全访问权限。

3. 现在,向存储库添加一个名为Jenkinsfile的新文件。Jenkinsfile 是包含 Jenkins 流水线定义的文本文件。此文件应位于源代码存储库内。

在您的存储库页面上,点击添加文件 -> 创建新文件

Adding a new file

4. 在新文件中键入Jenkinsfile作为文件名。然后,复制下面的代码并粘贴到你的Jenkinsfile中。

  • 术语pipeline是一组用于持续交付的代码编写的指令。
  • A stage block contains a series of steps in a pipeline, visualizing the Jenkins pipeline process.
  • A step is a single task that executes a specific process at a defined time. A pipeline contains a series of steps.

这个Jenkinsfile只是一个管道脚本的基本示例。在生产中,管道脚本将会更加复杂,并包括在一个或所有阶段上的多个动作。

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                echo 'Building..'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing..'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying....'
            }
        }
    }
}

编写代码后,你的文件将会像下面的截图一样。

Jenkinsfile pipeline script

5. 滚动到页面底部,点击Commit new file

Committing the new file

现在你的仓库中有一个Jenkinsfile。

New Jenkinsfile on the GitHub repo

6. 最后,复制仓库的URL。为此,点击Code,然后点击Copy按钮。在Jenkins CI CD管道创建过程中,你将需要这个URL。

Copying the repository URL

创建一个Jenkins CI CD管道

开发一个功能涉及许多代码更改。在每次代码更改之间,有一组任务需要执行。这些任务可能包括提交更改、编译、测试和打包。

像Jenkins这样的自动化服务有助于使这些步骤快速且无错误。

1. 打开浏览器,导航到你的Jenkins URL,并登录。

2. 在Jenkins 仪表板上,点击左侧菜单中的New Item选项。

Creating a new item in Jenkins

3. 输入新管道的名称。在本教程中,你将其命名为demoPipeline并选择Pipeline模板。点击OK完成。

Creating a Pipeline project

4. 在配置页面的常规选项卡下勾选GitHub项目框。然后,将之前复制的存储库URL粘贴到项目URL框中。

Specifying the GitHub repository URL

5. 滚动到构建触发器部分,勾选下面截图中的GitHub hook trigger for GITScm polling框。

Specifying the build trigger

6. 接下来,继续向下滚动到流水线部分,并选择/指定以下值:

  • 定义: 来自SCM的流水线脚本
  • SCM: Git
  • 存储库URL: 您的存储库URL
Specifying the pipeline values

7. 滚动到页面底部,确认脚本路径的值为Jenkinsfile。此值引用了您之前在准备Github存储库时创建的Jenkinsfile。最后,点击保存

Saving the pipeline configuration

在GitHub中配置Webhook

要使Jenkins运行一个新任务,您必须首先在GitHub存储库中创建一个Webhook。此Webhook将在存储库中发生新的推送时立即通知Jenkins。

按照以下步骤创建Webhook。

1. 转到您GitHub存储库的设置页面,点击Webhooks选项卡。在Webhooks页面上,点击添加Webhook

Adding a webhook

2. 指定您的 Jenkins URL,并在 Payload URL 字段中附加 /github-webhook/。例如,HTTP://jenkinsURLhere/github-webhook/

此外,将 Content type 值更改为 application/json。

Setting the webhook URL and content type

3. 在 要触发此 Webhook 的事件 选择中,点击 让我选择单个事件 选项。

Selecting individual events

4. 滚动到底部,选中 PushesPull requests 复选框。这些选项将确保 GitHub 在这些特定事件期间向 Jenkins 发送负载。

Enabling Pushes and Pull requests events

5. 通过点击底部的 添加 webhook 按钮来验证 webhook。如果 webhook 验证成功,您将在页面顶部看到类似于下图的通知。

Webhook creation notification

执行和触发 Jenkins CI CD Pipeline 作业

现在您已经创建并配置了您的管道,如何知道管道是否正常工作?Jenkins 提供了一个 管道阶段视图 插件来帮助您查看管道状态。

1. 要打开管道状态,请在 Jenkins 中打开管道,然后单击 状态。如下所示,阶段视图 状态显示为 没有可用数据,因为尚未触发管道的事件。

Jenkins pipeline stage view

2. 生成初始构建数据,请单击 立即构建 并等待构建过程完成。 正如下面所示,阶段视图现在有一个条目,说明此构建中没有更改。

To generate initial build data, click Build Now

3. 现在,通过向存储库提交一个新的虚拟文件来测试流水线。 要这样做,请返回到您的 GitHub 存储库并单击 添加文件 -> 创建新文件

输入 dummy 作为新文件的名称,并确保添加内容。

Creating a new file

最后,单击页面底部的 提交新文件

4. 返回到您的 Jenkins 流水线状态页面,您应该会看到一个带有一个提交的新构建条目,如下所示。

Jenkins pipeline build status

结论

在本教程中,您已经学会了如何设置 Jenkins CI CD 流水线以自动化软件开发生命周期。 您还学会了如何使用 Jenkins 来维护软件项目中的 CI 操作链。

您认为 Jenkins CI CD 流水线是您将应用于项目的策略吗? 还是您已经有其他更好的 CI/CD 解决方案?

Source:
https://adamtheautomator.com/jenkins-ci-cd/