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.
- Úložiště Azure Repos s VYUŽITÍM MSI
- Úložiště Azure Repos s využitím PAT
- Aplikace DevCenter úložiště GitHub
- Úložiště GitHub s PAT
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.
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í.
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:
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.
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í vyberte v levém navigačním panelu možnost Konfigurace a zásady.
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.
Pokud chcete do testovacího prostředí přidat úložiště artefaktů, vyberte Přidat v horním řádku nabídek.
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í.
Zvolte Uložit.
Ú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
VsoGit
pro 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
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 .
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
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 succeeded
a 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
, PersonalAccessToken
a 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"