快速入門:建立 GitHub 工作流程以發佈應用程式

在本快速入門中,您將瞭解如何建立 GitHub 工作流程從原始程式碼發佈您的 .NET 應用程式。 自動將您的 .NET 應用程式從 GitHub 發佈至目的地稱為持續部署 (CD)。 在本快速入門中,您會發佈至 Azure 的許多可能目的地。

必要條件

  • GitHub 帳戶。
  • .NET 原始程式碼存放庫。
  • 具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶
  • ASP.NET Core Web 應用程式。
  • Azure App Service 資源。

新增發行設定檔

若要將應用程式發佈至 Azure,請對於應用程式的 App Service 執行個體開啟 Azure 入口網站。 在資源 [概觀] 中,選取 [取得發行設定檔] 並在本機儲存 *.PublishSetting 檔案。

Azure Portal, App Service resource: Get publish profile

警告

發行設定檔包含敏感性資訊,例如用來存取 Azure App Service 資源的認證。 這項資訊應該一律非常小心處理。

在 GitHub 存放庫中,瀏覽至 [設定],並且從左側導覽功能表中選取 [祕密]。 選取 [新增存放庫密碼],以新增祕密。

GitHub / Settings / Secret: Add new repository secret

輸入 AZURE_PUBLISH_PROFILE 做為 [名稱],並且將發行設定檔中的 XML 內容貼到 [值] 文字區域中。 選取 [新增祕密]。 如需詳細資訊,請參閱加密的祕密

建立工作流程檔案

在 GitHub 存放庫中,將新的 YAML 檔案新增至 .github/workflows 目錄。 選擇有意義的檔案名稱,可清楚指出工作流程要執行的動作的名稱。 如需詳細資訊,請參閱工作流程檔案

重要

GitHub 要求將工作流程組合檔案放在 .github/workflow 目錄內。

工作流程檔案通常會透過 jobs.<job_id>/steps[*] 定義一個或多個 GitHub Actions 的組合。 如需詳細資訊,請參閱 GitHub Actions 的工作流程語法

建立名為 publish-app.yml 的新檔案,將下列 YML 內容複寫並貼上到其中:

name: publish

on:
  push:
    branches: [ production ]

env:
  AZURE_WEBAPP_NAME: DotNetWeb
  AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root:
  DOTNET_VERSION: '6.0.401' # The .NET SDK version to use

jobs:
  publish:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Setup .NET Core
      uses: actions/setup-dotnet@v3
      with:
        dotnet-version: ${{ env.DOTNET_VERSION }}

    - name: Install dependencies
      run: dotnet restore
      
    - name: Build
      run: |
        cd DotNet.WebApp
        dotnet build --configuration Release --no-restore
        dotnet publish -c Release -o ../dotnet-webapp -r linux-x64 --self-contained true /p:UseAppHost=true
    - name: Test
      run: |
        cd DotNet.WebApp.Tests
        dotnet test --no-restore --verbosity normal
      
    - uses: azure/webapps-deploy@v2
      name: Deploy
      with:
        app-name: ${{ env.AZURE_WEBAPP_NAME }}
        publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }}
        package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/dotnet-webapp'

在上述工作流程組合中:

  • name: publish 會定義名稱,"publish" 會出現在工作流程狀態徽章中。

    name: publish
    
  • on 節點表示觸發工作流程的事件:

    on:
      push:
        branches: [ production ]
    
    • pushproduction 分支上發生時觸發。
  • env 節點會定義具名環境變數 (env var)。

    env:
      AZURE_WEBAPP_NAME: DotNetWeb
      AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root:
      DOTNET_VERSION: '6.0.401' # The .NET SDK version to use
    
    • 環境變數 AZURE_WEBAPP_NAME 會被指派值 DotNetWeb
    • 環境變數 AZURE_WEBAPP_PACKAGE_PATH 會被指派值 '.'
    • 環境變數 DOTNET_VERSION 會被指派值 '6.0.401'。 稍後會參考環境變數,以指定 actions/setup-dotnet@v3 GitHub Actions 的 dotnet-version
  • jobs 節點會建置工作流程進行所需的步驟。

    jobs:
      publish:
    
        runs-on: ubuntu-latest
    
        steps:
        - uses: actions/checkout@v3
        - name: Setup .NET Core
          uses: actions/setup-dotnet@v3
          with:
            dotnet-version: ${{ env.DOTNET_VERSION }}
    
        - name: Install dependencies
          run: dotnet restore
          
        - name: Build
          run: |
            cd DotNet.WebApp
            dotnet build --configuration Release --no-restore
            dotnet publish -c Release -o ../dotnet-webapp -r linux-x64 --self-contained true /p:UseAppHost=true
        - name: Test
          run: |
            cd DotNet.WebApp.Tests
            dotnet test --no-restore --verbosity normal
          
        - uses: azure/webapps-deploy@v2
          name: Deploy
          with:
            app-name: ${{ env.AZURE_WEBAPP_NAME }}
            publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }}
            package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/dotnet-webapp'
    
    • 有一個名為 publish 的單一作業將在最新版本的 Ubuntu 上執行。
    • actions/setup-dotnet@v3 GitHub Actions 可用來使用來自 DOTNET_VERSION 環境變數指定的版本設定 .NET SDK。
    • 呼叫 dotnet restore 命令。
    • 呼叫 dotnet build 命令。
    • 呼叫 dotnet publish 命令。
    • 呼叫 dotnet test 命令。
    • azure/webapps-deploy@v2 GitHub Action 會使用指定的 publish-profilepackage 來部署應用程式。
      • publish-profile 會從 AZURE_PUBLISH_PROFILE 存放庫祕密被指派。

建立工作流程狀態徽章

GitHub 存放庫的常見命名法是讓存放庫目錄根目錄有一個 README.md 檔案。 同樣地,最好報告各種工作流程的最新狀態。 所有工作流程都可以產生狀態徽章,其在 README.md 檔案內視覺上具有吸引力。 若要新增工作流程狀態徽章:

  1. 從 GitHub 存放庫,選取 [動作] 瀏覽選項。

  2. 所有存放庫工作流程都會顯示在左側,選取所需的工作流程和省略符號 (...) 按鈕。

    • 省略符號 (...) 按鈕會展開所選工作流程的功能表選項。
  3. 選取 [建立狀態徽章] 功能表選項。

    GitHub: Create status badge

  4. 選取 [複製狀態徽章 Markdown] 按鈕。

    GitHub: Copy status badge Markdown

  5. 將 Markdown 貼上到 README.md 檔案,儲存檔案、認可並推送變更。

如需詳細資訊,請參閱新增工作流程狀態徽章

範例發佈工作流程狀態徽章

通過 失敗 無狀態
GitHub: publish passing badge GitHub: publish failing badge GitHub: publish no-status badge

另請參閱

下一步