Guida alla configurazione della distribuzione

ALM Accelerator for Power Platform utilizza i file di configurazione in formato JSON per automatizzare la distribuzione delle tue soluzioni. Impostano i riferimenti di connessione, le variabili di ambiente e le autorizzazioni, condividono le app canvas e aggiornano la proprietà dei componenti della soluzione come i flussi Power Automate quando le soluzioni vengono distribuite negli ambienti downstream.

I file di configurazione in questo articolo consentono di configurare elementi specifici dell'ambiente in cui viene distribuita una soluzione. I file di configurazione necessari, e quindi i passaggi da seguire in questo articolo, dipendono dai componenti distribuiti dalle pipeline della soluzione. Ad esempio, se la tua soluzione contiene solo tabelle e app basate su modello Dataverse senza alcuna configurazione per ambiente o dati necessari, puoi saltare alcuni di questi passaggi.

Abbiamo fornito file di configurazione di esempio nelle impostazioni di distribuzione e impostazioni di distribuzione personalizzate di ALMAcceleratorSampleSolution.

Prima di iniziare

Questo articolo è una guida dettagliata all'impostazione manuale dei file di configurazione della distribuzione. Fornisce dettagli e contesto per le azioni eseguite dall'app e dalle pipeline ALM Accelerator e funge da riferimento per gli amministratori che desiderano conoscere le specifiche di ogni fase del processo.

Ti consigliamo di configurare le impostazioni di distribuzione nell'app ALM Accelerator.

Creare un file JSON di impostazioni di distribuzione

Quando si archivia il file customDeploymentSettings.json nella radice della directory config, la stessa configurazione viene applicata a tutti gli ambienti. Presupponendo che tu stia usando attività di pipeline di trasformazione file o sostituzione token per informazioni specifiche per ambienti particolari, puoi specificare i valori per ogni ambiente nelle variabili della pipeline.

Tuttavia, puoi anche creare file customDeploymentSettings.json specifici dell'ambiente. Memorizzali nelle sottodirectory della directory config, denominata per i tuoi ambienti. Il nome della directory deve corrispondere alla variabile EnvironmentName creata durante l'impostazione della pipeline per gli ambienti di convalida, test e produzione. Se non vengono trovati JSON e directory delle impostazioni di distribuzione specifiche dell'ambiente, le pipeline torneranno alla configurazione nella radice della directory config.

Screenshot di una gerarchica di directory config.

Puoi anche creare file di configurazione specifici dell'utente come la directory JohannaDev nell'immagine precedente. Gli sviluppatori possono usarli per scegliere una configurazione specifica quando importano soluzioni non gestite dal controllo del codice sorgente.

Il file JSON con le impostazioni di distribuzione configura i riferimenti di connessione e le variabili di ambiente.

{
    "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. Copia l'esempio di codice JSON precedente in un nuovo file denominato deploymentSettings.json.

  2. Salva il file nella cartella config in Git.

Screenshot della struttura di cartelle config.

Creare un riferimento di connessione JSON

La proprietà ConnectionReferences nel file customDeploymentConfiguration.json imposta i riferimenti di connessione nella soluzione dopo che la soluzione è stata importata in un ambiente. ConnectionReferences abilitare anche i flussi dopo l'importazione della soluzione, in base al proprietario della connessione specificato nella variabile.

  1. Crea le connessioni manualmente nei tuoi ambienti di destinazione.

  2. Copia gli ID per le connessioni.

    • Ottieni il nome logico per il riferimento di connessione dal componente di riferimento di connessione nella soluzione.

      Screenshot del nome di uno schema di riferimento della connessione in una soluzione, evidenziato in un campo di testo disabilitato sotto l'etichetta Nome.

    • Ottieni l'ID connessione dall'URL della connessione dopo averlo creato. Ad esempio se l'URL è "https://.../connections/shared_commondataservice/9f66d1d455f3474ebf24e4fa2c04cea2/details", l'ID connessione è 9f66d1d455f3474ebf24e4fa2c04cea2.

  3. Modifica il file customDeploymentSettings.json e incolla gli ID nella proprietà ConnectionReferences, come nel seguente codice di esempio:

    "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. Se usi l'estensione "Sostituisci token" e aggiungi token alla tua configurazione come nell'esempio precedente, apri la pipeline per la tua soluzione, quindi seleziona Modifica>Variabili.

  5. Nella schermata Variabili della pipeline crea la connessione <connection_reference_logicalname>. In questo esempio, la variabile della pipeline è denominata connection.cat_CDS_Current.

  6. Imposta il valore sull'ID connessione che hai trovato in precedenza.

  7. Per assicurarti che il valore non venga salvato come testo normale, seleziona Mantieni segreto questo valore.

Se applicabile, ripeti i passaggi precedenti per ogni soluzione e pipeline che crei.

Creare la variabile di ambiente JSON nel file di configurazione della distribuzione

La proprietà EnvironmentVariables nel file customDeploymentConfiguration.json imposta le variabili di ambiente Dataverse nella soluzione dopo che la soluzione è stata importata in un ambiente.

Importante

Durante l'esportazione delle soluzioni con il controllo del codice sorgente, i valori delle variabili di ambiente vengono esportati con la soluzione. Questo può rappresentare un rischio per la sicurezza se le variabili di ambiente contengono informazioni riservate. Si consiglia di non archiviare informazioni riservate nelle variabili di ambiente. Un modo per garantire che i valori delle variabili di ambiente non siano controllati dal codice sorgente consiste nel creare una soluzione specifica per i valori delle variabili di ambiente negli ambienti di sviluppo e impostare il valore in tale soluzione. Ciò impedisce l'esportazione dei valori con la soluzione e l'archiviazione nel controllo del codice sorgente.

  1. Copia il nome dello schema per la variabile di ambiente dal componente di variabile di ambiente nella soluzione.

    Screenshot del nome di uno schema di variabile di ambiente in una soluzione, evidenziato in un campo di testo disabilitato sotto l'etichetta Nome.

  2. Modifica il file customDeploymentSettings.json e incolla il nome nella proprietà EnvironmentVariables, come nel seguente codice di esempio:

    {
        "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. Se usi l'estensione "Sostituisci token" e aggiungi token alla tua configurazione come nell'esempio precedente, apri la pipeline per la tua soluzione, quindi seleziona Modifica>Variabili.

  4. Nella schermata Variabili della pipeline crea una variabile della pipeline per ogni token nella tua configurazione, ad esempio variable.cat_TextEnvironmentVariable.

  5. Imposta il valore della variabile per quell'ambiente.

  6. Per assicurarti che il valore non venga salvato come testo normale, seleziona Mantieni segreto questo valore.

Se applicabile, ripeti i passaggi precedenti per ogni soluzione e pipeline che crei.

Creare un file JSON di impostazioni di distribuzione personalizzate

Il file JSON delle impostazioni di distribuzione personalizzate contiene le impostazioni che attivano i flussi per conto di un utente, specificano la proprietà dei flussi, condividono le app canvas con i gruppi di Microsoft Entra e creano team di gruppi Dataverse dopo la distribuzione.

{
  "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. Copia l'esempio di codice JSON precedente in un nuovo file denominato customDeploymentSettings.json.

  2. Salva il file nella cartella config in Git.

Screenshot di una struttura di cartelle config per le impostazioni di distribuzione personalizzate.

Creare la variabile di ambiente JSON predefinita nel file di configurazione della distribuzione personalizzato

La proprietà DefaultEnvironmentVariables nel file customDeploymentConfiguration.json viene utilizzata nella pipeline di esportazione per l'impostazione delle variabili di ambiente predefinite Dataverse nella soluzione quando la soluzione viene esportata e archiviata nel controllo del codice sorgente.

Nota

Le impostazioni delle variabili di ambiente predefinite si applicano solo se la pipeline di esportazione è configurata con la variabile della pipeline VerifyDefaultEnvironmentVariableValues = True.

  1. Copia il nome dello schema per la variabile di ambiente dal componente di variabile di ambiente nella soluzione.

    Screenshot del nome di uno schema di variabile di ambiente, evidenziato in un campo di testo disabilitato sotto l'etichetta Nome.

  2. Modifica il file customDeploymentSettings.json e incolla il nome nella proprietà DefaultEnvironmentVariables, come nel seguente codice di esempio:

    {
      "DefaultEnvironmentVariables": [
        [ "cat_TextEnvironmentVariable", "#{defaultvariable.cat_TextEnvironmentVariable}#" ],
        [ "cat_DecimalEnvironmentVariable", "#{defaultvariable.cat_DecimalEnvironmentVariable}#" ],
        [ "cat_jsonEnvironmentVariable", "{\"name\":\"#{defaultvariable.cat_jsonEnvironmentVariable.name}#\"}" ]
      ]
    }
    
  3. Se usi l'estensione "Sostituisci token" e aggiungi token alla tua configurazione come nell'esempio precedente, apri la pipeline per la tua soluzione, quindi seleziona Modifica>Variabili.

  4. Nella schermata Variabili della pipeline crea una variabile della pipeline per ogni token nella tua configurazione, ad esempio defaultvariable.cat_TextEnvironmentVariable.

Se applicabile, ripeti i passaggi precedenti per ogni soluzione e pipeline che crei.

Creare un file JSON di configurazione canvas per gruppo Microsoft Entra

La proprietà AadGroupCanvasConfiguration nel file customDeploymentConfiguration.json viene usata per condividere le app canvas nella tua soluzione con specifici gruppi Microsoft Entra dopo che la soluzione è stata importata in un ambiente.

  1. Copia gli ID per l'app canvas e il gruppo Microsoft Entra.

    • Ottieni il nome dello schema per l'app canvas dal componente di app canvas nella soluzione.

      Screenshot del nome di uno schema di etichetta di app canvas, evidenziato in un campo di testo disabilitato sotto l'etichetta Nome.

    • Ottieni l'ID del gruppo Microsoft Entra dalla pagina Gruppo nel portale di Azure.

  2. Modifica il file customDeploymentSettings.json e incolla gli ID nella proprietà AadGroupCanvasConfiguration, come nel seguente codice di esempio:

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

    Il roleName può essere CanView, CanViewWithShare, e CanEdit.

  3. Se usi l'estensione "Sostituisci token" e aggiungi token alla tua configurazione come nell'esempio precedente, apri la pipeline per la tua soluzione, quindi seleziona Modifica>Variabili.

  4. Nella schermata Variabili della pipeline crea una variabile di pipeline per ogni token nella tua configurazione, ad esempio canvasshare.aadGroupId.

  5. Imposta il valore sull' ID gruppo Microsoft Entra in cui l'app deve essere condivisa per quell'ambiente specifico.

  6. Per assicurarti che il valore non venga salvato come testo normale, seleziona Mantieni segreto questo valore.

Se applicabile, ripeti i passaggi precedenti per ogni soluzione e pipeline che crei.

Creare un JSON di configurazione per team e gruppo Microsoft Entra

La proprietà AadGroupTeamConfiguration nel file customDeploymentConfiguration.json esegue il mapping dei team e dei ruoli di Dataverse ai gruppi Microsoft Entra nella soluzione dopo che la soluzione è stata importata in un ambiente.

I ruoli di sicurezza devono essere aggiunti alla soluzione se non vengono creati manualmente nell'ambiente di destinazione. Uno o più ruoli possono essere applicati a un team. I ruoli forniscono le autorizzazioni ai componenti della soluzione richiesti dagli utenti nel gruppo.

  1. Il nome del team Dataverse può essere un team esistente o un nuovo team in cui deve essere creato in Dataverse e mappato a un gruppo Microsoft Entra dopo che la soluzione è stata importata.

  2. I ruoli Dataverse possono essere qualsiasi ruolo di sicurezza in Dataverse che verrebbe applicato al team dopo l'importazione della soluzione. Il ruolo deve avere privilegi per le risorse richieste dalla soluzione, come tabelle e processi.

  3. Ottieni l'ID del gruppo Microsoft Entra dalla pagina Gruppo nel portale di Azure come nella sezione precedente.

  4. Modifica il file customDeploymentSettings.json e incolla il JSON nella proprietà AadGroupTeamConfiguration, come nel seguente codice di esempio:

    {
      "AadGroupTeamConfiguration": [
        {
          "aadGroupTeamName": "alm-accelerator-sample-solution",
          "aadSecurityGroupId": "#{team.aadSecurityGroupId}#",
          "dataverseSecurityRoleNames": [
            "ALM Accelerator Sample Role"
          ]
        }
      ]
    }
    
  5. Se usi l'estensione "Sostituisci token" e aggiungi token alla tua configurazione come nell'esempio precedente, apri la pipeline per la tua soluzione, quindi seleziona Modifica>Variabili.

  6. Nella schermata Variabili della pipeline crea una variabile di pipeline per ogni token nella tua configurazione, ad esempio team.aadSecurityGroupId.

  7. Imposta il valore sull'ID gruppo Microsoft Entra da associare al team in Dataverse.

  8. Per assicurarti che il valore non venga salvato come testo normale, seleziona Mantieni segreto questo valore.

Se applicabile, ripeti i passaggi precedenti per ogni soluzione e pipeline che crei.

Creare un JSON di proprietà del componente della soluzione

La proprietà SolutionComponentOwnershipConfiguration nel file customDeploymentConfiguration.json viene utilizzata per assegnare la proprietà dei componenti della soluzione a utenti Dataverse dopo che la soluzione è stata importata in un ambiente. L'assegnazione della proprietà è utile per componenti come i flussi che saranno di proprietà dell'utente dell'entità servizio per impostazione predefinita quando la soluzione viene importata dalla pipeline e le organizzazioni desiderano riassegnarli dopo l'importazione.

La proprietà SolutionComponentOwnershipConfiguration inoltre abilita i flussi che non hanno riferimenti di connessione. Il flusso viene abilitato dall'utente specificato quando non esistono riferimenti di connessione da utilizzare per abilitare il flusso.

Nota

La pipeline corrente implementa solo la possibilità di impostare la proprietà dei flussi.

  1. Il codice del tipo di componente della soluzione si basa sui tipi di componente specificati nel Riferimento API Web solutioncomponent EntityType. Ad esempio, un flusso Power Automate è di tipo di componente 29. Il tipo di componente deve essere specificato come valore intero, senza virgolette.

  2. Ottieni il nome univoco del componente di flusso Power Automate dalla soluzione non compressa.

    I flussi non richiedono nomi univoci quando vengono creati. L'unico vero identificatore univoco per un flusso è l'ID interno assegnato dal sistema in una soluzione.

    Screenshot di un file XML del flusso di lavoro della soluzione decompresso.

    Screenshot del XML del flusso di lavoro della soluzione decompresso che mostra WorkflowId.

  3. Ottieni l'indirizzo e-mail del proprietario dal record dell'utente in Dataverse o Microsoft 365.

  4. Modifica il file customDeploymentSettings.json e incolla il JSON nella proprietà AadGroupTeamConfiguration, come nel seguente codice di esempio:

    {
      "SolutionComponentOwnershipConfiguration": [
        {
          "solutionComponentType": 29,
          "solutionComponentUniqueName": "00000000-0000-0000-0000-00000000000",
          "ownerEmail": "#{owner.ownerEmail}#"
        },
        {
          "solutionComponentType": 29,
          "solutionComponentUniqueName": "00000000-0000-0000-0000-00000000000",
          "ownerEmail": "#{owner.ownerEmail}#"
        }
      ]
    }
    
  5. Se usi l'estensione "Sostituisci token" e aggiungi token alla tua configurazione come nell'esempio precedente, apri la pipeline per la tua soluzione, quindi seleziona Modifica>Variabili.

  6. Nella schermata Variabili della pipeline crea una variabile di pipeline per ogni token nella tua configurazione, ad esempio owner.ownerEmail.

  7. Imposta il valore sull'indirizzo e-mail del proprietario del componente.

  8. Per assicurarti che il valore non venga salvato come testo normale, seleziona Mantieni segreto questo valore.

Se applicabile, ripeti i passaggi precedenti per ogni soluzione e pipeline che crei.

Importare dati dalla pipeline

Potresti voler importare i dati di configurazione o seed nel tuo ambiente Dataverse dopo aver distribuito la soluzione nell'ambiente di destinazione. Le pipeline sono configurate per importare i dati utilizzando lo strumento di migrazione della configurazione disponibile tramite NuGet. Scopri di più sulla gestione dei dati di configurazione.

Quando i dati di configurazione vengono archiviati nella radice della directory config, gli stessi dati di configurazione vengono distribuiti a tutti gli ambienti. È possibile creare file di dati di configurazione specifici dell'ambiente. Memorizzali nelle sottodirectory della directory config, denominata per i tuoi ambienti. Il nome della directory deve corrispondere alla variabile EnvironmentName creata durante l'impostazione della pipeline per gli ambienti di convalida, test e produzione. Se non vengono trovati dati e directory di configurazione specifici dell'ambiente, le pipeline torneranno ai dati di configurazione nella radice della directory config.

  1. Clona il repository Azure DevOps in cui la tua soluzione deve essere controllata dal codice sorgente e in cui hai creato la pipeline di soluzioni YAML sul tuo computer locale.

  2. Se non l'hai già fatto, crea una directory denominata config nella cartella config nella cartella della soluzione.

    Screenshot della directory config nella directory della soluzione nel repository locale.

  3. Installa lo Strumento di migrazione della configurazione. Segui le istruzioni in Scarica strumenti da NuGet.

  4. Apri lo strumento Migrazione della configurazione seleziona Crea schema, e quindi Continua.

  5. Accedi al tenant da cui vuoi esportare i dati di configurazione.

  6. Seleziona l'ambiente.

  7. Seleziona le tabelle e le colonne che desideri esportare.

  8. Seleziona Salva ed esporta. Salva i dati nel percorso della directory config\ConfigurationMigrationData nel repository Azure DevOps locale nella cartella della soluzione per la quale devono essere importati i dati.

    Nota

    La pipeline cerca questa cartella specifica per eseguire l'importazione dei dati dopo l'importazione della soluzione. Assicurati che il nome della cartella e la sua posizione siano esattamente come indicati qui.

  9. Quando viene richiesto di esportare i dati, seleziona .

  10. Scegli la stessa posizione per i tuoi dati esportati, seleziona Salva, quindi seleziona Esporta dati.

  11. Al termine dell'esportazione, decomprimi i file dal file data.zip nel directory ConfigurationMigrationData. Elimina i file data.zip e SampleData.xml.

    Screenshot dei dati di migrazione della configurazione decompressi nella directory ConfigurationMigrationData.

  12. Esegui il commit delle modifiche con i tuoi dati su Azure DevOps.

Passaggi successivi