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čtete z GitHubu nebo Azure Repos úložiště Git.

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 k dispozici 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 úložiště do testovacího prostředí, aby je mohli 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í Azure Portal, šablony Azure Resource Management (ARM) nebo Azure PowerShell. K automatizaci přidávání úložiště artefaktů do testovacího prostředí můžete použít také skript Azure PowerShell nebo Azure CLI.

Poznámka

K interakci s Azure doporučujeme použít modul Azure Az PowerShell. 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.

Požadavky

Pokud chcete do testovacího prostředí přidat úložiště artefaktů, musíte znát adresu URL klonu HTTPS Gitu a token PAT pro úložiště GitHub nebo Azure Repos, které obsahuje soubory artefaktů.

Získání adresy URL klonu a tokenu PAT pro GitHub

  1. Na domovské stránce úložiště GitHub, které obsahuje vaše artefakty, vyberte Kód a v části Clone (Klonovat) zkopírujte adresu URL HTTPS.
  2. V pravém horním rohu GitHubu vyberte svůj profilový obrázek a pak vyberte Nastavení.
  3. Na stránce vašeho profilu v nabídce vlevo vyberte Nastavení pro vývojáře a pak osobní přístupové tokeny.
  4. Vyberte Generate new token (Vygenerovat nový token).
  5. Na stránce Nový token PAT zadejte v části Poznámka volitelný popis tokenu. Přijměte všechny výchozí hodnoty a pak vyberte Vygenerovat token.
  6. Uložte vygenerovaný token.

Získejte adresu URL klonu a token PAT pro Azure Repos

  1. Na hlavní stránce úložiště, které obsahuje vaše artefakty, vyberte Klonovat. Na stránce Clone Repository (Klonovat úložiště ) zkopírujte adresu URL klonu.
  2. V pravém horním rohu stránky Azure DevOps vyberte Uživatelské nastavení>Osobní přístupové tokeny.
  3. Na stránce Tokeny PAT vyberte Nový token.
  4. Vyplňte informace o tokenu, pro obory vyberte Číst a pak vyberte Vytvořit.
  5. Na stránce Úspěch nezapomeňte token zkopírovat, protože Azure Repos token neukládá nebo ho znovu nezobrazuje.

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

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

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

    Na stránce Úložiště se automaticky zobrazí veřejné úložiště artefaktů , které se připojí k veřejnému úložišti GitHubu 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é ú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ů, v horním řádku nabídek vyberte Přidat .

    Snímek obrazovky znázorňující obrazovku konfigurace úložišť

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

    • Název: Název úložiště, který se použije v testovacím prostředí.
    • Adresa URL pro git clone: Adresa URL klonu HTTPS gitu z GitHubu nebo Azure Repos.
    • Branch (volitelná): Větev, která obsahuje definice artefaktů.
    • Osobní přístupový token: Token PAT z GitHubu nebo Azure Repos.
    • 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.
  5. Vyberte 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ště pro testovací 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 pro 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 VsoGit, pro Azure Repos nebo GitHub.
  • Osobní přístupový token pro úložiště, který jste 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 PowerShell.

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, už existuje, tento krok přeskočte.

    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 nasadit několik prostředků. Pokud nasazujete do stejné skupiny prostředků několikrát, ujistěte se, že je název každého 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í se ve výstupu zobrazí důležité informace, jako je stav zřizování, který by měl být succeeded, a všechny výstupy šablony.

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

Následující ukázkový skript PowerShellu ,New-DevTestLabArtifactRepository.ps1, přidá úložiště artefaktů do testovacího prostředí. Celý skript obsahuje některé podrobné zprávy a komentáře.


<#

.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 11111111-1111-1111-1111-111111111111
.\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řijímá následující parametry:

Parametr Popis
LabName Název testovacího prostředí.
ArtifactRepositoryName Název nového úložiště artefaktů Skript vytvoří náhodný název úložiště, pokud není zadaný.
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 zkopírovali dříve.
SourceType Jestli je úložištěm artefaktů VSOGit (Azure Repos) nebo GitHub.

Úložiště potřebuje interní název pro identifikaci, který se liší od zobrazovaného názvu v Azure Portal. Interní název se při použití Azure Portal nezobrazí, ale uvidíte ho při použití rozhraní Azure REST API nebo Azure PowerShell. Skript vytvoří náhodný název, pokud ho příkaz pro nasazení neurčí.

#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 Poznámky
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 potřebuje k ResourceId tomu, aby znala typ prostředku, který se má vytvořit, buď , nebo ResourceNameResourceType a. Aktuální skript používá dvojici ResourceName a ResourceType .

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 . DevTest Labs Artifact Sources (Zdroje artefaktů DevTest Labs) zobrazuje 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šechno, co je uvedené dále providers v identifikátoru 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 zdroje 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ími hodnotami v příkladech LabName, LabResourceGroupName, , ArtifactRepositoryNameRepositoryUri, 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