天天看點

使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI/CD)–第4天主題路線圖Jenkins先決條件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD持續部署結論

目錄

主題

路線圖

Jenkins

先決條件

使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD

建立新的管道作業

添加參數

添加管道腳本

運作建構

安裝Dotnet

安排建構

建構自動輪詢

持續部署

結論

主題

在該系列的第一篇文章中,我們通過兩種方法(管道方法和自由樣式項目方法)了解了Jenkins的概念,術語,涉及的技術,安裝Jenkins,建立ASP.NET Core應用程式以及使用Jenkins持續內建ASP.NET Core應用程式。在第二篇文章中,我們将ASP.NET Core應用程式釋出到Azure App Service和Azure上的Configured Jenkins。在該系列的第三篇文章中,我們重點介紹了Azure Active Directory和Service Principal,以及如何将Jenkins與Azure Service Principal內建。

路線圖

本系列文章将說明如何在本地開發環境中為CI和CD的ASP.NET Core Web應用程式使用Jenkins,将Web應用程式釋出到Azure Web App Service以及在Azure上配置Jenkins以便持續內建和持續部署托管應用程式。GitHub将DevOps用作源代碼控制存儲庫。我們将使用Jenkins建立一個管道,該管道從GitHub擷取代碼,建構代碼,運作測試并部署程式包。這是對GitHub上代碼的每次送出的重複性任務。

以下是我們将遵循的路線圖,以完全了解使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI / CD)的端到端開發和配置。

  • 第一天:使用Jenkins持續內建ASP.NET Core應用程式
  • 第2天:将ASP.NET Core應用程式釋出到Azure應用服務,并在Azure上配置Jenkins
  • 第3天:将Jenkins與Azure Active Directory和Service Principal內建
  • 第4天:使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD

Jenkins

Jenkins是自動化的開源工具,可幫助團隊/開發人員持續建構和測試軟體代碼。它使開發人員無需人工幹預即可輕松內建和測試代碼。可以設定該工具以建立一個部署管道,該管道包括在每次代碼送出時對代碼進行持續內建,不斷地測試建構,釋出工件和文檔以及部署代碼。可以在伺服器上配置Jenkins,根據部署需要将其配置為開發,暫存或生産。

使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI/CD)–第4天主題路線圖Jenkins先決條件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD持續部署結論

先決條件

在開始本文之前,請閱讀本系列的前兩篇文章。

以下是開發人員在開始使用計算機之前的先決條件。

  1. Visual Studio 2017/2019年
  2. 已安裝Dotnet 2.1 SDK
  3. 免費/付費Azure訂閱
  4. Java 1.5或更高版本
  5. Git帳戶
  6. Windows版Git

使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD

本節将說明如何啟用應用程式的持續內建和部署。所有必需的設定均已完成。我們隻需要立即配置Jenkins即可實作。我們将使用管道項目方法進行此操作。

使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI/CD)–第4天主題路線圖Jenkins先決條件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD持續部署結論

建立新的管道作業

在Jenkins首頁上,建立一個新作業。

使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI/CD)–第4天主題路線圖Jenkins先決條件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD持續部署結論

給管道項目取一個有意義的名稱(例如,Jenkins-on-Azure),然後選擇“Pipeline”作為項目類型。

使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI/CD)–第4天主題路線圖Jenkins先決條件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD持續部署結論

添加參數

在“正常”頁籤上,選中選項“此項目已參數化 ”。我們将在此處添加一些參數。

使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI/CD)–第4天主題路線圖Jenkins先決條件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD持續部署結論

添加三個字元串參數,命名git_repo為提供git存儲庫的URL,res_group提供資源組的名稱和JenkinsIntegration,這将是我們的Web應用程式項目的名稱。您可以在此處提供預設值,否則将在運作建構時要求您提供預設值。

使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI/CD)–第4天主題路線圖Jenkins先決條件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD持續部署結論

添加名為azure_cred_id的憑據參數,并将憑據類型選擇為“Microsoft Azure Service Principal”,預設值為我們之前建立的id服務主體。

使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI/CD)–第4天主題路線圖Jenkins先決條件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD持續部署結論

添加管道腳本

在“管道腳本”部分中,提供管道腳本以進行git簽出,建構,釋出和部署。

node {
    stage('Checkout git repo') {
      git branch: 'master', url: params.git_repo
    }
    stage('build and publish') {
        sh(script: "dotnet publish JenkinsIntegration -c Release ", returnStdout: true)
    }
    stage('deploy') {
        azureWebAppPublish azureCredentialsId: params.azure_cred_id,
            resourceGroup: params.res_group, appName: params.JenkinsIntegration, 
            sourceDirectory: 
                "JenkinsIntegration/JenkinsIntegration/bin/Release/netcoreapp2.1/publish/"
        }
}
           
使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI/CD)–第4天主題路線圖Jenkins先決條件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD持續部署結論

運作建構

儲存配置并轉到首頁。您可以手動觸發建構,并且由于我們沒有在參數中提供預設值,是以它要求提供這些值。提供值,然後單擊“建構”按鈕。

使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI/CD)–第4天主題路線圖Jenkins先決條件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD持續部署結論

我們期待一個幹淨而成功的建構,但是下面我們看到我們的建構失敗了。它說的原因是在釋出時找不到“dotnet”指令。由于Jenkins處在Linux工作區下運作。我們的Linux伺服器應該安裝了dotnet。

使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI/CD)–第4天主題路線圖Jenkins先決條件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD持續部署結論

安裝Dotnet

讓我們在Linux上安裝dotnet SDK 2.1。傳回運作隧道的終端,并一步一步運作以下指令以注冊Microsoft密鑰和源。

  • wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
  • sudo dpkg -i packages-microsoft-prod.deb

現在運作以下指令來安裝.NET Core 2.1 SDK。

  • sudo apt-get install apt-transport-https
  • sudo apt-get update
  • sudo apt-get install dotnet-sdk-2.1
使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI/CD)–第4天主題路線圖Jenkins先決條件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD持續部署結論

這将在Linux伺服器上安裝.NET Core 2.1 SDK。

安排建構

轉到Jenkins的首頁,然後再次嘗試觸發建構。

使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI/CD)–第4天主題路線圖Jenkins先決條件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD持續部署結論

我們看到我們的建構成功了。

使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI/CD)–第4天主題路線圖Jenkins先決條件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD持續部署結論

建構自動輪詢

讓我們為自動輪詢設定建構觸發器,即,一旦代碼在git存儲庫中送出,建構就會觸發。檢查“輪詢SCM”,計劃值應為“ * * * * *”。

使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI/CD)–第4天主題路線圖Jenkins先決條件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD持續部署結論

持續部署

打開浏覽器,浏覽到Azure上已部署的應用程式。我們看到應用程式正在運作。

使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI/CD)–第4天主題路線圖Jenkins先決條件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD持續部署結論

現在,在cshtml檔案中進行一些更改,以檢查是否觸發了自動生成。是以,我将Index.cshtml檔案中的文本從“Jenkins入門”更改為“Azure上的Jenkins入門” 。

使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI/CD)–第4天主題路線圖Jenkins先決條件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD持續部署結論

并且,将應用程式的版本更改為2.0。

使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI/CD)–第4天主題路線圖Jenkins先決條件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD持續部署結論

送出代碼并推送到源代碼處。

使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI/CD)–第4天主題路線圖Jenkins先決條件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD持續部署結論

我們看到,将代碼推送到存儲庫後,一秒鐘之内就會自動生成觸發器。

使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI/CD)–第4天主題路線圖Jenkins先決條件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD持續部署結論

檢查建構是否成功。

使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI/CD)–第4天主題路線圖Jenkins先決條件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD持續部署結論

回到浏覽器,并重新整理它,我們看到所做的更改已反映在此處,這意味着我們的應用程式已自動部署在Azure上。

使用Jenkins在Azure Web App上進行ASP.NET Core應用程式的持續內建和部署(CI/CD)–第4天主題路線圖Jenkins先決條件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core應用程式的CI/CD持續部署結論

結論

在本系列文章中,我們了解了Jenkins的用法以及它在我們的軟體開發生命周期中的有用性。我們學習了在本地開發環境中為CI和CD的ASP.NET Core Web應用程式的使用Jenkins,将Web應用程式釋出到Azure Web App Service,以及在Azure上配置Jenkins以便持續內建和持續部署托管應用程式的過程。Jenkins是一個廣泛的話題,在使用它時,需要耐心等待設定,但是一旦設定,它就可以無縫運作。