Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje, 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í.
Tento článek ukazuje, 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.
Note
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ů pomocí webu Azure Portal
Ú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 záložku pro typ úložiště a ověřování, které chcete použít.
- Úložiště Azure Repos se spravovanými identitami
- Repozitář Azure Repos s PAT
- Úložiště GitHub s aplikací Dev Center
- Úložiště GitHub s osobním přístupovým tokenem
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.
Přihlaste se ke své organizaci Azure DevOps.
Note
Vaše organizace Azure DevOps musí být ve stejném adresáři jako předplatné Azure, které obsahuje vaše testovací prostředí.
Vyberte Nastavení organizace.
Na stránce Přehled vyberte Uživatelé.
Na stránce Uživatelé vyberte Přidat uživatele.
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:
Name Value Uživatelé nebo instanční objekty Zadejte název testovacího prostředí.
Pokud používáte spravovanou identitu přiřazenou systémem, zadejte název testovacího prostředí, nikoli ID objektu spravovaného účtu. Pokud používáte spravovanou identitu přiřazenou uživatelem, použijte název spravovaného účtu.Access level Select 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.
Přidání úložiště artefaktů Azure DevOps do testovacího prostředí na webu Azure Portal
Na stránce Přehled testovacího prostředí v levém podokně vyberte Konfigurace a zásady .
Na stránce Konfigurace a zásady vyberte úložiště v části Externí prostředky v levém podokně.
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 tento repozitář není pro vaši laboratoř 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 Povolit v horní části podokna.
Pokud chcete přidat úložiště artefaktů do testovacího prostředí, vyberte Přidat v horní části podokna.
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 vyberte, pokud chcete pro ověřování použít spravovanou identitu.
Select Save.
Ú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í. Pokud testovací prostředí ještě neexistuje, šablona ji vytvoří.
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ě.
- Lab name.
- 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. - Repository type. Povolené hodnoty jsou
VsoGitpro Azure Repos neboGitHub. - 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:
- Nasazení prostředků pomocí šablon ARM a Azure PowerShellu
- Nasazení prostředků pomocí šablon ARM a Azure CLI
- Nasazení prostředků pomocí šablon ARM na webu Azure Portal
- Nasazení prostředků pomocí šablon ARM a rozhraní REST API Resource Manageru
Pro účely tohoto postupu nasaďte šablonu pomocí Azure PowerShellu.
Note
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 .
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 westusVytvoř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 a name isn't 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 it's 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
# Alternative 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
Parameters
Skript PowerShellu přebírá následující parametry:
| Parameter | Description |
|---|---|
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 není zadaný název. |
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ů. Tuto hodnotu 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 Tuto hodnotu jste zkopírovali dříve. |
SourceType |
Ať už je úložiště artefaktů VSOGit (Azure Repos) nebo úložiště GitHub. |
Úložiště potřebuje k identifikaci interní název. Tento název 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 it's not set by user.
if ($ArtifactRepositoryName -eq $null){
$ArtifactRepositoryName = "PrivateRepo" + (Get-Random -Maximum 999)
}
PowerShell commands
Skript používá následující příkazy PowerShellu:
| Command | 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 . Předchozí 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. Zdroje artefaktů DevTest Labs zobrazují rozhraní REST API pro vytváření a správu zdrojů artefaktů DevTest Labs. Předchozí 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é po providers v 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"