部署設定指南

使用 JSON 格式的 ALM Accelerator for Power Platform 設定檔來自動化您的解決方案部署。 他們會設置連線參考資料、環境變數和權限,共用畫布應用程式,並將解決方案部署到下游環境時更新解決方案組件 (例如 Power Automate 流程) 的所有權。

您可以使用此文章中的設定檔,設定部署解決方案的環境特有的專案。 您所需的設定檔,因此您需要遵循此文章中的步驟,將視您的解決方案管線部署的元件而定。 例如,如果您的解決方案只包含 Dataverse 資料表和模型驅動的應用程式,而不需要每個環境的設定或資料,則這些步驟可能可以略過。

我們已經提供設定檔的範例,請參閱 ALMAcceleratorSampleSolution 部署設定自訂部署設定

在開始之前

本文是手動設定部署設定檔的逐步指南。 本文會提供 ALM 加速器應用程式和管線所執行動作的詳細資料和上下文,並充當系統管理員的參照,以瞭解程式中每個步驟的細節。

但是,我們建議您在 ALM 加速器應用程式中設定部署設定

建立部署設定 JSON 檔案

配置目錄的根目錄中儲存 customDeploymentSettings.json 時,相同的設定將會套用至所有環境。 假設您使用檔案轉換或標記取代管線工作來儲存所有的環境特定資訊,您可以在管線變數中指定環境特定值。

但是,您也可以建立環境特定的 customDeploymentSettings json 檔案。 將檔案儲存在設定目錄的子目錄中,為您的環境指定名稱。 目錄名稱必須符合設定管線時所建立的 EnvironmentName 變數 (驗證、測試、生產)。 如果沒有環境特定的部署設定 JSON 和目錄,管線將還原為設定目錄根目錄中的設定。

設定目錄階層的螢幕擷取畫面。

您也可以建立使用者特定的設定,例如先前影像中的 JohannaDev 目錄。 當您從原始檔控制匯入未受管理的解決方案時,開發人員可以使用它們來選擇特定的設定。

用於設定連線參照和環境變數的部署設定 JSON 檔案。

{
    "EnvironmentVariables": [
        {
            "SchemaName": "cat_shared_sharepointonline_97456712308a4e65aae18bafcd84c81f",
            "Value": "#{environmentvariable.cat_shared_sharepointonline_97456712308a4e65aae18bafcd84c81f}#"
        },
        {
            "SchemaName": "cat_shared_sharepointonline_21f63b2d26f043fb85a5c32fc0c65924",
            "Value": "#{environmentvariable.cat_shared_sharepointonline_21f63b2d26f043fb85a5c32fc0c65924}#"
        },
        {
            "SchemaName": "cat_TextEnvironmentVariable",
            "Value": "#{environmentvariable.cat_TextEnvironmentVariable}#"
        },
        {
            "SchemaName": "cat_ConnectorBaseUrl",
            "Value": "#{environmentvariable.cat_ConnectorBaseUrl}#"
        },
        {
            "SchemaName": "cat_DecimalEnvironmentVariable",
            "Value": "#{environmentvariable.cat_DecimalEnvironmentVariable}#"
        },
        {
            "SchemaName": "cat_JsonEnvironmentVariable",
            "Value": "#{environmentvariable.cat_JsonEnvironmentVariable}#"
        },
        {
            "SchemaName": "cat_ConnectorHostUrl",
            "Value": "#{environmentvariable.cat_ConnectorHostUrl}#"
        }
    ],
    "ConnectionReferences": [
        {
            "LogicalName": "new_sharedsharepointonline_b49bb",
            "ConnectionId": "#{connectionreference.new_sharedsharepointonline_b49bb}#",
            "ConnectorId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
        },
        {
            "LogicalName": "cat_CDS_Current",
            "ConnectionId": "#{connectionreference.cat_CDS_Current}#",
            "ConnectorId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
        }
    ]
}
  1. 將前述的 JSON 代碼範例複製到名為 deploymentSettings.json 的新檔案中。

  2. 將檔案保存在 Git 的設定資料夾中。

設定資料夾結構的螢幕擷取畫面。

建立連線參照 JSON

在將解決方案匯入環境之後,ConnectionReferences customDeploymentConfiguration 檔案中的屬性會設定您解決方案中的連線參考資料。 ConnectionReferences也會根據變數中指定的連接負責人,來啟用流程。

  1. 在目標環境中手動建立連接。

  2. 複製離線的識別碼。

    • 連接參照的邏輯名稱可從您的解決方案中的連接參照元件取得。

      解決方案中的連接參照架構名稱會突出顯示在 [名稱] 標籤下方的停用文字欄位中。

    • 在您建立連接識別碼後,可以透過連接的 URL 來取得。 例如,如果 URL 為 https://.../connections/shared_commondataservice/9f66d1d455f3474ebf24e4fa2c04cea2/details,連線識別碼為 9f66d1d455f3474ebf24e4fa2c04cea2

  3. 編輯 customDeploymentSettings.json 檔案,並將識別碼貼到 ConnectionReferences 屬性中,如下列範例程式碼所示:

    "ConnectionReferences": 
    [
            {
                "LogicalName": "new_sharedsharepointonline_b49bb",
                "ConnectionId": "#{connectionreference.new_sharedsharepointonline_b49bb}#",
                "ConnectorId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
            },
            {
                "LogicalName": "cat_CDS_Current",
                "ConnectionId": "#{connectionreference.cat_CDS_Current}#",
                "ConnectorId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
            }
    ]
    
  4. 如果您使用「取代權杖」副檔名,並在您的設定中新增標記 (如上例所示),請為您的解決方案打開管線,然後選取編輯>變數

  5. 管線變數畫面中,建立連線 <connection_reference_logicalname>。 在此範例中,管線變數的名稱為 connection.cat_CDS_Current

  6. 將該值設定為您先前發現的連線識別碼。

  7. 若要確認該值不會儲存為純文字,請選取保留此值密碼

若適合的話,請針對您建立的每個解決方案和管道重複上述步驟。

在部署設定檔中建立環境變數 JSON

在將解決方案匯入環境之後,customDeploymentConfiguration.json 檔案中的 EnvironmentVariables 屬性會設定您解決方案中的 Dataverse 環境變數。

重要

匯出和原始程式碼控制解決方案時,會將環境變數值與解決方案一起匯出。 環境變數包含敏感資訊時,這可能會造成安全性的危險。 我們建議您不要將敏感資訊儲存在環境變數中。 確保您的環境變數值不受原始程式碼管理的一種方式,就是在開發環境中建立專門用於環境變數值的解決方案,並在該解決方案中設定變數的值。 這可防止在匯出解決方案和儲存於原始程式碼管理期間,不會匯出值。

  1. 可以從解決方案中的環境變數元件複製環境變數的結構描述。

    解決方案中的環境變數架構名稱會突出顯示在 [名稱] 標籤下方的停用文字欄位中。

  2. 編輯 customDeploymentSettings.json 檔案,並將名稱貼到 EnvironmentVariables 屬性中,如下列範例程式碼所示:

    {
        "EnvironmentVariables": [
            {
                "SchemaName": "cat_TextEnvironmentVariable",
                "Value": "#{variable.cat_TextEnvironmentVariable}#"
            },
            {
                "SchemaName": "cat_DecimalEnvironmentVariable",
                "Value": "#{variable.cat_DecimalEnvironmentVariable}#"
            },
            {
                "SchemaName": "cat_JsonEnvironmentVariable",
                "Value": "{\"name\":\"#{variable.cat_JsonEnvironmentVariable.name}#\"}"
            }
        ]    
    }
    
  3. 如果您使用「取代權杖」副檔名,並在您的設定中新增標記 (如上例所示),請為您的解決方案打開管線,然後選取編輯>變數

  4. 管線變數畫面中,為您的設定中的每個標記建立一個管線變數,例如 variable.cat_TextEnvironmentVariable

  5. 要為該環境設定為環境變數的值。

  6. 若要確認該值不會儲存為純文字,請選取保留此值密碼

若適合的話,請針對您建立的每個解決方案和管道重複上述步驟。

建立自訂部署設定 JSON 檔案

此自訂部署設定 JSON 檔案包含使用者啟動流程的設定、指定流程的擁有權、將畫布應用程式與 Microsoft Entra 群組共用,以及部署後建立 Dataverse 群組團隊。

{
  "ActivateFlowConfiguration": [
    {
      "solutionComponentName": "DevOpsKitSampleFlow",
      "solutionComponentUniqueName": "0a43b549-50ed-ea11-a815-000d3af3a7c4",
      "activateAsUser": "#{activateflow.activateas.DevOpsKitSampleFlow}#"
    },
    {
      "solutionComponentName": "CallMeFromCanvasApp",
      "solutionComponentUniqueName": "71cc728c-2487-eb11-a812-000d3a8fe6a3",
      "activateAsUser": "#{activateflow.activateas.CallMeFromCanvasApp}#"
    },
    {
      "solutionComponentName": "GetEnvironmentVariables",
      "solutionComponentUniqueName": "d2f7f0e2-a1a9-eb11-b1ac-000d3a53c3c2",
      "activateAsUser": "#{activateflow.activateas.GetEnvironmentVariables}#"
    }
  ],
  "SolutionComponentOwnershipConfiguration": [
    {
      "solutionComponentType": 29,
      "solutionComponentName": "DevOpsKitSampleFlow",
      "solutionComponentUniqueName": "0a43b549-50ed-ea11-a815-000d3af3a7c4",
      "ownerEmail": "#{owner.ownerEmail.DevOpsKitSampleFlow}#"
    },
    {
      "solutionComponentType": 29,
      "solutionComponentName": "CallMeFromCanvasApp",
      "solutionComponentUniqueName": "71cc728c-2487-eb11-a812-000d3a8fe6a3",
      "ownerEmail": "#{owner.ownerEmail.CallMeFromCanvasApp}#"
    },
    {
      "solutionComponentType": 29,
      "solutionComponentName": "GetEnvironmentVariables",
      "solutionComponentUniqueName": "d2f7f0e2-a1a9-eb11-b1ac-000d3a53c3c2",
      "ownerEmail": "#{owner.ownerEmail.GetEnvironmentVariables}#"
    }
  ],
  "AadGroupCanvasConfiguration": [
    {
      "aadGroupId": "#{canvasshare.aadGroupId.DevOpsKitSampleCanvasApp}#",
      "canvasNameInSolution": "cat_devopskitsamplecanvasapp_c7ec5",
      "canvasDisplayName": "DevOpsKitSampleCanvasApp",
      "roleName": "#{canvasshare.roleName.DevOpsKitSampleCanvasApp}#"
    }
  ],
  "AadGroupTeamConfiguration": [
    {
      "aadGroupTeamName": "Sample Group Team Name",
      "aadSecurityGroupId": "#{team.samplegroupteamname.aadSecurityGroupId}#",
      "dataverseSecurityRoleNames": [
        "#{team.samplegroupteamname.role}#"
      ]
    }
  ]
}
  1. 將前述的 JSON 代碼範例複製到名為 customDeploymentSettings.json 的新檔案中。

  2. 將檔案保存在 Git 的設定資料夾中。

自訂部署設定的配置資料夾結構的螢幕擷取畫面。

在自訂部署設定檔中建立自訂環境變數 JSON

將解決方案匯出並儲存在原始程式碼控制中時,會在 customDeploymentConfiguration.json 中使用屬性 DefaultEnvironmentVariables 設定 Dataverse 預設環境變數。

Note

只有在使用管道變數設定匯出管道時,才會套用預設的環境變數設定 VerifyDefaultEnvironmentVariableValues = True

  1. 可以從解決方案中的環境變數元件複製環境變數的結構描述。

    環境變數架構名稱會突出顯示在 [名稱] 標籤下方的停用文字欄位中。

  2. 編輯 customDeploymentSettings.json 檔案,並將名稱貼到 DefaultEnvironmentVariables 屬性中,如下列範例程式碼所示:

    {
      "DefaultEnvironmentVariables": [
        [ "cat_TextEnvironmentVariable", "#{defaultvariable.cat_TextEnvironmentVariable}#" ],
        [ "cat_DecimalEnvironmentVariable", "#{defaultvariable.cat_DecimalEnvironmentVariable}#" ],
        [ "cat_jsonEnvironmentVariable", "{\"name\":\"#{defaultvariable.cat_jsonEnvironmentVariable.name}#\"}" ]
      ]
    }
    
  3. 如果您使用「取代權杖」副檔名,並在您的設定中新增標記 (如上例所示),請為您的解決方案打開管線,然後選取編輯>變數

  4. 管線變數畫面中,為您的設定中的每個標記建立一個管線變數,例如 defaultvariable.cat_TextEnvironmentVariable

若適合的話,請針對您建立的每個解決方案和管道重複上述步驟。

建立 Microsoft Entra 群組畫布配置 JSON

將解決方案匯入環境後,會在 customDeploymentConfiguration.json 檔案中使用畫布設定屬性 AadGroupCanvasConfiguration,將您解決方案中的畫布應用程式與特定 Microsoft Entra 群組共用。

  1. 複製畫布應用程式和 Microsoft Entra 群組的識別碼。

    • 畫布應用程式的架構名稱可以從解決方案中的畫布應用程式元件中獲取。

      畫布應用程式標籤架構名稱會突出顯示在 [名稱] 標籤下方的停用文字欄位中。

    • 從 Azure 入口網站中的群組頁面取得 Microsoft Entra 群組識別碼。

      Microsoft Entra 群組識別碼的螢幕擷取畫面,在物件識別碼標籤旁邊的停用文字方塊中強調顯示。

  2. 編輯 customDeploymentSettings.json 檔案,並將識別碼貼到 AadGroupCanvasConfiguration 屬性中,如下列範例程式碼所示:

    {
      "AadGroupCanvasConfiguration": [
        {
          "aadGroupId": "#{canvasshare.aadGroupId}#",
          "canvasNameInSolution": "cat_devopskitsamplecanvasapp_c7ec5",
          "roleName": "#{canvasshare.roleName}#"
        }
      ]
    }
    

    roleName可以是CanViewCanViewWithShare,且CanEdit

  3. 如果您使用「取代權杖」副檔名,並在您的設定中新增標記 (如上例所示),請為您的解決方案打開管線,然後選取編輯>變數

  4. 管線變數畫面中,為您的設定中的每個標記建立一個管線變數,例如:canvasshare.aadGroupId

  5. 將值設定為 Microsoft Entra 群組識別碼,而該特定環境必須共用應用程式的群組識別碼。

  6. 若要確認該值不會儲存為純文字,請選取保留此值密碼

若適合的話,請針對您建立的每個解決方案和管道重複上述步驟。

建立 Microsoft Entra 群組和團隊配置 JSON

將解決方案匯入環境後,customDeploymentConfiguration.json 檔案中的屬性 AadGroupTeamConfiguration,將 Dataverse 團隊和角色對應到解決方案中的 Microsoft Entra 群組。

如果不是在目標環境中手動建立資訊安全形色,則必須將它們新增至您的解決方案。 一個或更多角色可以套用至團隊。 這些角色提供群組中使用者所需的解決方案元件的授權。

  1. Dataverse 團隊名稱可以是任何現有的團隊,也可以是要在 Dataverse 中建立的新團隊,並在該解決方案匯入之後,將該團隊對應至一個 Microsoft Entra群組。

  2. Dataverse 角色可以是 Dataverse中的任何資訊安全角色,這會在解決方案匯入之後,會套用至團隊。 該角色應具有解決方案所需的資源 (例如,資料表和程序) 權限。

  3. 如上一個區段所示,從 Azure 入口網站中的群組頁面取得 Microsoft Entra 群組識別碼。

  4. 編輯 customDeploymentSettings.json 檔案,並將 JSON 貼到 AadGroupTeamConfiguration 屬性中,如下列範例程式碼所示:

    {
      "AadGroupTeamConfiguration": [
        {
          "aadGroupTeamName": "alm-accelerator-sample-solution",
          "aadSecurityGroupId": "#{team.aadSecurityGroupId}#",
          "dataverseSecurityRoleNames": [
            "ALM Accelerator Sample Role"
          ]
        }
      ]
    }
    
  5. 如果您使用「取代權杖」副檔名,並在您的設定中新增標記 (如上例所示),請為您的解決方案打開管線,然後選取編輯>變數

  6. 管線變數畫面中,為您的設定中的每個標記建立一個管線變數,例如:team.aadSecurityGroupId

  7. 將該值設定為與 Dataverse 中的團隊相關聯的 Microsoft Entra 群組識別碼。

  8. 若要確認該值不會儲存為純文字,請選取保留此值密碼

若適合的話,請針對您建立的每個解決方案和管道重複上述步驟。

建立解決方案元件擁有權 JSON

解決方案元件擁有權屬性可用於在將解決方案匯入環境之後,customDeploymentConfiguration.json 檔案中的屬性 SolutionComponentOwnershipConfiguration 將解決方案元件的擁有權指派給 Dataverse 使用者。 指派擁有權適用於當管線匯入解決方案時,由服務主體使用者所擁有並在匯入後,會由服務主體使用者所擁有的元件 (例如流程) 所擁有的元件。

SolutionComponentOwnershipConfiguration 屬性也可用來啟用不具有任何連接參照的流程。 當找不到用來啟用流程的連接參照時,會由指定的使用者來啟用流程。

注意

目前管道只會實現設定流程擁有權的能力。

  1. 解決方案元件類型代碼是根據 solutioncomponent EntityType WEB API 參照中指定的元件類型而定。 例如,Power Automate 流程是元件類型 29。 元件類型應指定為整數值 (不含引號)。

  2. 若要從解出的解決方案中取得 Power Automate 流程元件的唯一名稱。

    流動建立時,並不需要唯一的名稱。 流程的唯一真正唯一識別碼是系統用於在解決方案中指派的內部識別碼。

    解壓縮的解決方案工作流程 XML 檔案螢幕擷取畫面。

    顯示 WorkflowId 的解壓縮解決方案工作流程 XML 螢幕擷取畫面。

  3. 您可以從 Dataverse 或 Microsoft 365 中的使用者記錄收集負責人電子郵件地址。

  4. 編輯 customDeploymentSettings.json 檔案,並將 JSON 貼到 AadGroupTeamConfiguration 屬性中,如下列範例程式碼所示:

    {
      "SolutionComponentOwnershipConfiguration": [
        {
          "solutionComponentType": 29,
          "solutionComponentUniqueName": "00000000-0000-0000-0000-00000000000",
          "ownerEmail": "#{owner.ownerEmail}#"
        },
        {
          "solutionComponentType": 29,
          "solutionComponentUniqueName": "00000000-0000-0000-0000-00000000000",
          "ownerEmail": "#{owner.ownerEmail}#"
        }
      ]
    }
    
  5. 如果您使用「取代權杖」副檔名,並在您的設定中新增標記 (如上例所示),請為您的解決方案打開管線,然後選取編輯>變數

  6. 管線變數畫面中,為您的設定中的每個標記建立一個管線變數,例如:owner.ownerEmail

  7. 將值設定為元件負責人的電子郵件地址。

  8. 若要確認該值不會儲存為純文字,請選取保留此值密碼

若適合的話,請針對您建立的每個解決方案和管道重複上述步驟。

從管線匯入資料

您會在將解決方案部署到目標環境之後,將設定或種子資料匯入您的 Dataverse 環境。 管線會設定為使用設定移轉工具 (可透過 NuGet 取得) 匯入資料。 深入了解如何管理設定資料

在配置目錄的根目錄中儲存設定資料時,相同的設定資料將會套用至所有環境。 您可以建立特定環境的設定資料檔案。 將檔案儲存在設定目錄的子目錄中,為您的環境指定名稱。 目錄名稱必須符合設定管線時所建立的 EnvironmentName 變數 (驗證、測試、生產)。 如果找不到環境特定的配置資料和目錄,管線將還原為設定目錄根目錄中的配置資料。

  1. 複製您的解決方案要進行原始程式碼管理的 Azure DevOps 存放庫,以及您在何處建立您的解決方案管道 YAML 至本機電腦。

  2. 如果尚未建立,請在資料夾底下的設定資料夾中建立名為設定的目錄。

    本機存放庫的解決方案目錄下的 Config 目錄螢幕擷取畫面。

  3. 安裝設定移轉工具。 按照從 NuGet 下載工具中的指示進行操作。

  4. 打開設定移轉工具,選取建立架構,然後選取繼續

  5. 登入您要匯出配置資料的租用戶。

  6. 選取您的環境。

  7. 選擇要匯出的資料表和資料行。

  8. 選擇儲存並匯出。 將資料儲存至要匯入此設定資料的解決方案資料夾下的本機 Azure DevOps 儲存庫中的目錄路徑 config\ConfigurationMigrationData

    注意

    當您匯入您的解決方案之後,管線就會尋找這個特定的資料夾來執行匯入。 請確認資料夾的名稱與其位置完全相符。

  9. 系統提示您匯出資料時,請選取

  10. 為匯出的資料選擇相同的位置,並選取儲存,然後選取匯出資料

  11. 匯出完成時,請將檔案從 data.zip 檔案解壓縮至 ConfigurationMigrationData 目錄。 請刪除 data.zipSampleData.xml 檔案。

    在 ConfigurationMigrationData 目錄中解壓縮的配置遷移資料螢幕擷取畫面。

  12. 將您的資料變更認可為 Azure DevOps。

後續步驟