如何創建 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 Web控制台必须通过互联网访问。
  • 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.接下来,导航到示例存储库网址(来自Microsoft Connect 2016的MyShuttle2应用程序)。一旦您在存储库页面上,点击页面右上角的Fork按钮。

Forking a repo

等待分叉过程完成。最后,您将在GitHub帐户上拥有名为“用户名/MyShuttle2”的存储库,您可以完全访问。

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

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

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. 在配置页面的General选项卡下勾选GitHub项目框。然后,将之前复制的存储库URL粘贴到Project URL框中。

Specifying the GitHub repository URL

5. 滚动到Build Triggers部分,勾选GitHub hook trigger for GITScm polling框,如下截图所示。

Specifying the build trigger

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

  • DefinitionPipeline script from SCM
  • SCMGit
  • Repository URL您的存储库URL
Specifying the pipeline values

7. 滚动到页面底部,确认Script Path值为Jenkinsfile。此值引用了您在准备GitHub存储库时创建的Jenkinsfile。最后,点击Save

Saving the pipeline configuration

在GitHub中配置Webhook

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

按照以下步骤创建Webhook。

1. 转到Settings页面,点击GitHub存储库的Webhooks选项卡。在Webhooks页面上,点击Add 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. 在 Which events would you like to trigger this webhook 選擇中,點擊 Let me select individual events 選項。

Selecting individual events

4. 向下滾動,勾選 PushesPull requests 复選框。這些選項將確保 GitHub 在這些特定事件期間向 Jenkins 發送 payload。

Enabling Pushes and Pull requests events

5. 點擊底部的 Add webhook 按鈕驗證 webhook。如果 webhook 驗證成功,您將在頁面頂部看到一個類似下面截圖的通知。

Webhook creation notification

執行和觸發 Jenkins CI/CD Pipeline Job

現在您已經創建並配置了您的 pipeline,如何確定 pipeline 是否正常運作?Jenkins 提供了一個 Pipeline Stage View 插件來幫助您查看 pipeline 狀態。

1. 若要打開 pipeline 狀態,打開 Jenkins 中的 pipeline,然後點擊 Status。如下面所示,Stage View 狀態顯示 No data available,因為尚未有觸發 pipeline 的事件。

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/