共用方式為


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

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

先決條件

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

新增發佈設定檔

若要將應用程式發佈至 Azure,請開啟應用程式 App Service 實例的 Azure 入口網站。 在資源 概觀中,選取取得發佈設定檔並將*.PublishSetting檔案儲存到本地。

Azure 入口網站、App Service 資源:取得發佈設定檔

警告

發行設定檔包含敏感資訊,例如用於存取 Azure App Service 資源的認證。 應始終非常謹慎地對待這些信息。

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

GitHub / 設定 / 秘密:新增存放庫秘密

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

建立工作流程檔案

在 GitHub 存放庫中,將新的 YAML 檔案新增至 .github/workflows 目錄。 選擇一個有意義的文件名,該文件名將清楚地表明工作流程的目的。 如需詳細資訊,請參閱 工作流程檔案

這很重要

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

工作流程檔案通常會透過 定義 jobs.<job_id>/steps[*]一或多個 GitHub Action 的組合。 如需詳細資訊,請參閱 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 名稱,並且「發佈」將會在工作流程狀態標誌中出現。

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

    on:
      push:
        branches: [ production ]
    
    • push發生在production分支上時觸發。
  • 節點 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'。 稍後會參考環境變數來指定 dotnet-version 的 GitHub Action actions/setup-dotnet@v3
  • 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 Action 用來設定指定版本的 .NET SDK,該版本是由環境變數DOTNET_VERSION設定。
    • 執行命令 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:建立狀態徽章

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

    GitHub:複製狀態標章 Markdown

  5. 將 Markdown 貼到 README.md 檔案中,儲存檔案,提交並推送變更。

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

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

傳球 失敗 無狀態
GitHub:顯示通過徽標 GitHub:發佈失敗徽章 GitHub:發佈無狀態徽章

另請參閱

後續步驟