Sdílet prostřednictvím


Přidání úložiště artefaktů do testovacího prostředí

V tomto článku se dozvíte, jak přidat úložiště artefaktů do testovacího prostředí v Azure DevTest Labs. Artefakty jsou nástroje nebo aplikace, které se mají nainstalovat na virtuální počítače. Artefakty definujete v souboru JSON, který načítáte z úložiště GitHub nebo Azure Repos.

Veřejné úložiště artefaktů GitHubu DevTest Labs poskytuje mnoho běžných artefaktů pro Windows a Linux. Artefakty v tomto veřejném úložišti jsou ve výchozím nastavení dostupné v DevTest Labs. Informace o přidávání artefaktů do virtuálních počítačů najdete v tématu Přidání artefaktů do virtuálních počítačů DevTest Labs.

Můžete také vytvořit vlastní artefakty, které nejsou dostupné ve veřejném úložišti artefaktů. Další informace o vytváření vlastních artefaktů najdete v tématu Vytváření vlastních artefaktů. Vlastní artefakty můžete přidat do vlastního úložiště artefaktů a přidat ho do testovacího prostředí, aby mohli artefakty používat všichni uživatelé testovacího prostředí.

V tomto článku se dozvíte, jak do testovacího prostředí přidat úložiště artefaktů pomocí webu Azure Portal, šablony Azure Resource Management (ARM) nebo Azure PowerShellu. K automatizaci přidání úložiště artefaktů do testovacího prostředí můžete použít také skript Azure PowerShellu nebo Azure CLI.

Poznámka:

Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Přidání úložiště artefaktů

Úložiště artefaktů můžete přidat z úložiště Azure Repos nebo z úložiště GitHub. Můžete se rozhodnout ověřit přiřazením oprávnění ke spravované identitě, pomocí ověřování aplikací GitHubu nebo pomocí pat. Další informace o spravovaných identitách najdete v tématu Co jsou spravované identity pro prostředky Azure?

Vyberte kartu pro typ úložiště a ověřování, které chcete použít.

Pokud chcete přidat úložiště artefaktů, proveďte následující úlohy:

  • Přiřaďte oprávnění ve službě Azure Repos pro spravovanou identitu.
  • Přidejte úložiště artefaktů.

Přiřazení oprávnění pro spravovanou identitu v Azure Repos

Spravované identitě musíte udělit oprávnění k úložišti v Azure Repos.

  1. Přihlaste se ke své organizaci Azure DevOps.

    Poznámka:

    Vaše organizace Azure DevOps musí být ve stejném adresáři jako předplatné Azure, které obsahuje vaše testovací prostředí.

  2. Vyberte Nastavení organizace.

    Snímek obrazovky se stránkou organizace Azure DevOps se zvýrazněnou možností Nastavení organizace

  3. Na stránce Přehled vyberte Uživatelé.

    Snímek obrazovky se stránkou Přehled organizace se zvýrazněnou možností Uživatelé

  4. Na stránce Uživatelé vyberte Přidat uživatele.

    Snímek obrazovky se stránkou Uživatelé se zvýrazněnou možností Přidat uživatele

  5. Dokončete přidání nových uživatelů zadáním nebo výběrem následujících informací a pak vyberte Přidat:

    Jméno Hodnota
    Uživatelé nebo instanční objekty Zadejte název testovacího prostředí.
    Pokud používáte MSI přiřazenou systémem, zadejte název testovacího prostředí, nikoli ID objektu spravovaného účtu. Pokud používáte MSI přiřazenou uživatelem, použijte název spravovaného účtu.
    Úroveň přístupu Vyberte Basic.
    Přidat do projektů Vyberte projekt, který obsahuje vaše úložiště.
    Skupiny Azure DevOps Vyberte čtenáře projektu.
    Odesílání e-mailových pozvánek (jenom uživatelům) Zrušte zaškrtnutí políčka.

    Snímek obrazovky znázorňující přidání uživatelů se zvýrazněnými ukázkovými položkami a zvýrazněnou možností Přidat

Přidání úložiště artefaktů Azure DevOps do testovacího prostředí na webu Azure Portal

  1. Na stránce Přehled testovacího prostředí vyberte v levém navigačním panelu možnost Konfigurace a zásady.

  2. Na stránce Konfigurace a zásady vyberte úložiště v části Externí prostředky v levém navigačním panelu.

    Na stránce Úložiště se veřejné úložiště artefaktů automaticky prezentuje a připojí se k veřejnému úložišti GitHub DevTest Labs. Pokud toto úložiště není pro vaše testovací prostředí povolené, můžete ho povolit zaškrtnutím políčka vedle veřejného úložiště artefaktů a následným výběrem možnosti Povolit na horním řádku nabídek.

  3. Pokud chcete do testovacího prostředí přidat úložiště artefaktů, vyberte Přidat v horním řádku nabídek.

    Snímek obrazovky znázorňující konfigurační obrazovku Úložiště

  4. V podokně Úložiště zadejte následující informace:

    • Název: Název úložiště, který se má použít v testovacím prostředí.
    • Adresa URL klonu Gitu: Adresa URL klonu Git HTTPS z Azure Repos.
    • Větev (volitelná): Větev s definicemi artefaktů.
    • Cesty ke složkám: Složka pro definice šablony ARM vzhledem k adrese URL klonu Gitu. Nezapomeňte do cesty ke složce zahrnout počáteční lomítko.
    • Spravovaná identita: Tuto možnost použijte k využití spravované identity k ověřování.
  5. Zvolte Uložit.

    Snímek obrazovky znázorňující přidání nového úložiště artefaktů do testovacího prostředí

Úložiště se teď zobrazí v seznamu úložišť testovacího prostředí.

Přidání úložiště artefaktů pomocí šablony ARM

Šablony ARM jsou soubory JSON, které popisují prostředky Azure, které se mají vytvořit. Další informace o šablonách ARM najdete v tématu Vysvětlení struktury a syntaxe šablon ARM.

Následující šablona ARM přidá úložiště artefaktů do testovacího prostředí. Šablona vytvoří testovací prostředí, pokud ještě neexistuje.

Kontrola šablony ARM

Ukázková šablona shromažďuje následující informace v parametrech. Některé parametry mají výchozí hodnoty, ale příkaz nasazení musí zadat název testovacího prostředí, identifikátor URI úložiště artefaktů, typ úložiště a osobní přístupový token úložiště.

  • Název testovacího prostředí
  • Zobrazovaný název úložiště artefaktů v DevTest Labs Výchozí hodnota je Team Repository.
  • Identifikátor URI úložiště artefaktů, který jste zkopírovali dříve.
  • Větev úložiště, která obsahuje artefakty. Výchozí hodnota je main.
  • Název složky, která obsahuje artefakty. Výchozí hodnota je: /Artifacts.
  • Typ úložiště. Povolené hodnoty jsou VsoGitpro Azure Repos nebo GitHub.
  • Osobní přístupový token pro úložiště, které jste si zkopírovali dříve.
{

    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "labName": {
            "type": "string"
        },
        "artifactRepositoryDisplayName": {
            "type": "string",
            "defaultValue": "Team Repository"
        },
        "artifactRepoUri": {
            "type": "string"
        },
        "artifactRepoBranch": {
            "type": "string",
            "defaultValue": "main"
        },
        "artifactRepoFolder": {
            "type": "string",
            "defaultValue": "/Artifacts"
        },
        "artifactRepoType": {
            "type": "string",
            "allowedValues": ["VsoGit", "GitHub"]
        },
        "artifactRepoSecurityToken": {
            "type": "securestring"
        }
    },
    "variables": {
        "artifactRepositoryName": "[concat('Repo-', uniqueString(subscription().subscriptionId))]"
    },
    "resources": [{
            "apiVersion": "2016-05-15",
            "type": "Microsoft.DevTestLab/labs",
            "name": "[parameters('labName')]",
            "location": "[resourceGroup().location]",
            "resources": [
                {
                    "apiVersion": "2016-05-15",
                    "name": "[variables('artifactRepositoryName')]",
                    "type": "artifactSources",
                    "dependsOn": [
                        "[resourceId('Microsoft.DevTestLab/labs', parameters('labName'))]"
                    ],
                    "properties": {
                        "uri": "[parameters('artifactRepoUri')]",
                        "folderPath": "[parameters('artifactRepoFolder')]",
                        "branchRef": "[parameters('artifactRepoBranch')]",
                        "displayName": "[parameters('artifactRepositoryDisplayName')]",
                        "securityToken": "[parameters('artifactRepoSecurityToken')]",
                        "sourceType": "[parameters('artifactRepoType')]",
                        "status": "Enabled"
                    }
                }
            ]
        }
    ]
}

Nasazení šablony

Existuje několik způsobů, jak nasadit šablony ARM pro vytvoření nebo aktualizaci prostředků Azure. Informace a pokyny najdete v následujících článcích:

V tomto příkladu nasaďte šablonu pomocí Azure PowerShellu.

Poznámka:

Rutiny, které nasazují šablonu, jsou specifické pro kontext, takže používají aktuálního tenanta a předplatného. Pokud potřebujete změnit kontext, před nasazením šablony použijte Set-AzContext .

  1. Vytvořte skupinu prostředků pomocí rutiny New-AzResourceGroup. Pokud skupina prostředků, kterou chcete použít, již existuje, přeskočte tento krok.

    New-AzResourceGroup -Name MyLabResourceGroup1 -Location westus
    
  2. Vytvořte nasazení do skupiny prostředků pomocí Rutiny New-AzResourceGroupDeployment. Do stejné skupiny prostředků můžete provést několik nasazení prostředků. Pokud nasazujete několikrát do stejné skupiny prostředků, ujistěte se, že je každý název nasazení jedinečný.

    New-AzResourceGroupDeployment `
        -Name MyLabResourceGroup-Deployment1 `
        -ResourceGroupName MyLabResourceGroup1 `
        -TemplateFile azuredeploy.json `
        -TemplateParameterFile azuredeploy.parameters.json
    

Po New-AzResourceGroupDeployment úspěšném spuštění výstup zobrazí důležité informace, jako je stav zřizování, což by mělo být succeededa všechny výstupy šablony.

Přidání úložiště artefaktů pomocí Azure PowerShellu

Následující ukázkový skript PowerShellu New-DevTestLabArtifactRepository.ps1 přidá úložiště artefaktů do testovacího prostředí. Úplný skript obsahuje několik podrobných zpráv a komentářů.


<#

.SYNOPSIS
This script creates a new custom repository and adds it to an existing DevTest Lab.

.PARAMETER LabName
The name of the lab.

.PARAMETER LabResourceGroupName
The name of the resource group that contains the lab.

.PARAMETER ArtifactRepositoryName
Name for the new artifact repository. The script creates a random name for the repository if not specified.

.PARAMETER ArtifactRepositoryDisplayName
Display name for the artifact repository.
This name appears in the list of artifact repositories for a lab.

.PARAMETER RepositoryUri
Uri to the artifact repository.

.PARAMETER RepositoryBranch
Branch that contains the artifact files. Defaults to 'main'.

.PARAMETER FolderPath
Folder that contains the artifact files. Defaults to '/Artifacts'

.PARAMETER PersonalAccessToken
Personal access token for the GitHub or Azure Repos repository.

.PARAMETER SourceType
Whether the artifact repository is a VSOGit (Azure Repos) or GitHub repository.

.EXAMPLE
Set-AzContext -SubscriptionId aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.\New-DevTestLabArtifactRepository.ps1 -LabName "mydevtestlab" -LabResourceGroupName "mydtlrg" -ArtifactRepositoryName "MyTeam Repository" -RepositoryUri "https://github.com/<myteam>/<nameofrepo>.git" -PersonalAccessToken "1111...." -SourceType "GitHub"

.NOTES
The script uses the current Azure context. To set the context, use Set-AzContext.

#>


[CmdletBinding()]
Param(

    [Parameter(Mandatory=$true)]
    $LabName,

    [Parameter(Mandatory=$true)]
    $LabResourceGroupName,
    $ArtifactRepositoryName,
    $ArtifactRepositoryDisplayName  = 'Team Artifact Repository',

    [Parameter(Mandatory=$true)]
    $RepositoryUri,
    $RepositoryBranch = 'main',
    $FolderPath = '/Artifacts',

    [Parameter(Mandatory=$true)]
    $PersonalAccessToken ,

    [Parameter(Mandatory=$true)]
    [ValidateSet('VsoGit', 'GitHub')]
    $SourceType
)

# Set artifact repository internal name if not specified.

if ($ArtifactRepositoryName -eq $null){
    $ArtifactRepositoryName = "PrivateRepo" + (Get-Random -Maximum 999)
}

# Sign in to Azure.
Connect-AzAccount


#Get Lab Resource.
$LabResource = Get-AzResource -ResourceType 'Microsoft.DevTestLab/labs' -ResourceName $LabName -ResourceGroupName $LabResourceGroupName

Write-Verbose "Lab Name: $($LabResource.Name)"
Write-Verbose "Lab Resource Group Name: $($LabResource.ResourceGroupName)"
Write-Verbose "Lab Resource Location: $($LabResource.Location)"

Write-Verbose "Artifact Repository Internal Name: $ArtifactRepositoryName"

#Prepare properties object for the call to New-AzResource.
$propertiesObject = @{
    uri = $RepositoryUri;
    folderPath = $FolderPath;
    branchRef = $RepositoryBranch;
    displayName = $ArtifactRepositoryDisplayName;
    securityToken = $PersonalAccessToken;
    sourceType = $SourceType;
    status = 'Enabled'
}

Write-Verbose "Properties to be passed to New-AzResource:$($propertiesObject | Out-String)"

#Add resource to the current subscription.
$resourcetype = 'Microsoft.DevTestLab/labs/artifactSources'
$resourceName = $LabName + '/' + $ArtifactRepositoryName
Write-Verbose "Az ResourceType: $resourcetype"
Write-Verbose "Az ResourceName: $resourceName"

Write-Verbose "Creating artifact repository '$ArtifactRepositoryDisplayName'..."
$result = New-AzResource -Location $LabResource.Location -ResourceGroupName $LabResource.ResourceGroupName -properties $propertiesObject -ResourceType $resourcetype -ResourceName $resourceName -ApiVersion 2016-05-15 -Force

#Alternate implementation:
# Use resourceId rather than resourcetype and resourcename parameters.
# Using resourceId lets you specify the $SubscriptionId rather than using the
# subscription id of Get-AzContext.
#$resourceId = "/subscriptions/$SubscriptionId/resourceGroups/$($LabResource.ResourceGroupName)/providers/Microsoft.DevTestLab/labs/$LabName/artifactSources/$ArtifactRepositoryName"
#$result = New-AzResource -properties $propertiesObject -ResourceId $resourceId -ApiVersion 2016-05-15 -Force


# Check the result.
if ($result.Properties.ProvisioningState -eq "Succeeded") {
    Write-Verbose ("Successfully added artifact repository source '$ArtifactRepositoryDisplayName'")
}
else {
    Write-Error ("Error adding artifact repository source '$ArtifactRepositoryDisplayName'")
}

#Return the newly created resource to use in later scripts.
return $result

Parametry

Skript PowerShellu přebírá následující parametry:

Parametr Popis
LabName Název testovacího prostředí.
ArtifactRepositoryName Název nového úložiště artefaktů Skript vytvoří pro úložiště náhodný název, pokud ho nezadáte.
ArtifactRepositoryDisplayName Zobrazovaný název, který se zobrazí v seznamu úložiště artefaktů testovacího prostředí.
RepositoryUri Identifikátor URI úložiště artefaktů, který jste zkopírovali dříve.
RepositoryBranch Větev úložiště, která obsahuje artefakty. Výchozí hodnota je main.
FolderPath Složka, která obsahuje artefakty. Výchozí hodnota je: /Artifacts.
PersonalAccessToken Token zabezpečení pro přístup k úložišti, které jste si zkopírovali dříve.
SourceType Ať už je úložiště artefaktů úložiště VSOGit (Azure Repos) nebo GitHub.

Úložiště potřebuje interní název pro identifikaci, který se liší od zobrazovaného názvu na webu Azure Portal. Při použití webu Azure Portal se nezobrazuje interní název, ale uvidíte ho při použití rozhraní Azure REST API nebo Azure PowerShellu. Skript vytvoří náhodný název, pokud ho příkaz nasazení nezadá.

#Set artifact repository name, if not set by user
if ($ArtifactRepositoryName -eq $null){
    $ArtifactRepositoryName = "PrivateRepo" + (Get-Random -Maximum 999)
}

Příkazy prostředí PowerShell

Skript používá následující příkazy PowerShellu:

Příkaz Notes
Get-AzResource Získá podrobnosti o testovacím prostředí, například jeho umístění. Zdroj úložiště artefaktů vytvoříte ve stejném umístění a ve stejné skupině prostředků jako testovací prostředí.
New-AzResource Přidá prostředek Azure. Pro přidání úložišť artefaktů neexistuje žádný konkrétní příkaz. Tato rutina musí znát ResourceId typ prostředku, který se má vytvořit, nebo ResourceName ho spárovat ResourceType . Aktuální skript používá metodu ResourceName a ResourceType pár.

Dobrým způsobem, jak zjistit název prostředku a informace o typu prostředku, je použít web Prohlížeče rozhraní Azure REST API. Zdroje artefaktů DevTest Labs zobrazují rozhraní REST API pro vytváření a správu zdrojů artefaktů DevTest Labs. Aktuální skript používá následující ID prostředku:

https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{name}

Typ prostředku je vše uvedené za providers identifikátorem URI s výjimkou položek ve složených závorkách. Název prostředku je vše ve složených závorkách. Pokud pro název prostředku použijete více než jednu položku, oddělte každou položku lomítkem:

$resourcetype = 'Microsoft.DevTestLab/labs/artifactSources'
$resourceName = $LabName + '/' + $ArtifactRepositoryName

Spuštění powershellového skriptu

Spusťte skript PowerShellu a nahraďte vlastní hodnoty ukázkovými hodnotami v hodnotě LabName, LabResourceGroupName, ArtifactRepositoryName, RepositoryUri, PersonalAccessTokena SourceType:

Set-AzContext -SubscriptionId <Your Azure subscription ID>

.\New-DevTestLabArtifactRepository.ps1 -LabName "mydevtestlab" -LabResourceGroupName "mydtlrg" -ArtifactRepositoryName "myteamrepository" -RepositoryUri "https://github.com/myteam/myteamrepository.git" - "1111...." -SourceType "GitHub"

Další kroky