Dodawanie repozytorium artefaktów do laboratorium
W tym artykule opisano sposób dodawania repozytorium artefaktów do laboratorium w usłudze Azure DevTest Labs. Artefakty to narzędzia lub aplikacje do zainstalowania na maszynach wirtualnych. Artefakty są definiowane w pliku JSON ładowanym z repozytorium GitHub lub Azure Repos Git.
Publiczne repozytorium artefaktów usługi DevTest Labs w usłudze GitHub zawiera wiele typowych artefaktów dla systemów Windows i Linux. Artefakty w tym publicznym repozytorium są domyślnie dostępne w usłudze DevTest Labs. Aby uzyskać informacje na temat dodawania artefaktów do maszyn wirtualnych, zobacz Dodawanie artefaktów do maszyn wirtualnych usługi DevTest Labs.
Możesz również utworzyć niestandardowe artefakty, które nie są dostępne w publicznym repozytorium artefaktów. Aby dowiedzieć się więcej o tworzeniu artefaktów niestandardowych, zobacz Tworzenie artefaktów niestandardowych. Możesz dodać niestandardowe artefakty do własnego repozytorium artefaktów i dodać repozytorium do laboratorium, aby wszyscy użytkownicy laboratorium mogli używać artefaktów.
W tym artykule pokazano, jak dodać repozytorium artefaktów do laboratorium przy użyciu witryny Azure Portal, szablonu usługi Azure Resource Management (ARM) lub programu Azure PowerShell. Możesz również użyć skryptu programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure, aby zautomatyzować dodawanie repozytorium artefaktów do laboratorium.
Uwaga
Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.
Dodawanie repozytorium artefaktów
Repozytorium usługi Azure Repos lub repozytorium GitHub można dodać repozytorium artefaktów. Uwierzytelnianie można wybrać, przypisując uprawnienia do tożsamości zarządzanej przy użyciu uwierzytelniania aplikacji Usługi GitHub lub przy użyciu tokenu pat. Aby dowiedzieć się więcej o tożsamościach zarządzanych, zobacz Co to są tożsamości zarządzane dla zasobów platformy Azure?
Wybierz kartę typu repozytorium i uwierzytelniania, którego chcesz użyć.
- Repozytorium usługi Azure Repos z tożsamością usługi zarządzanej
- Repozytorium usługi Azure Repos z patem dostępu
- Aplikacja DevCenter repozytorium GitHub
- Repozytorium GitHub z patem dostępu
Aby dodać repozytorium artefaktów, wykonaj następujące zadania:
- Przypisz uprawnienia w usłudze Azure Repos dla tożsamości zarządzanej.
- Dodaj repozytorium artefaktów.
Przypisywanie uprawnień w usłudze Azure Repos dla tożsamości zarządzanej
Musisz przyznać tożsamości zarządzanej uprawnienia do repozytorium w usłudze Azure Repos.
Zaloguj się do organizacji usługi Azure DevOps.
Uwaga
Twoja organizacja usługi Azure DevOps musi znajdować się w tym samym katalogu co subskrypcja platformy Azure zawierająca laboratorium.
Wybierz pozycję Ustawienia organizacji.
Na stronie Przegląd wybierz pozycję Użytkownicy.
Na stronie Użytkownicy wybierz pozycję Dodaj użytkowników.
Ukończ dodawanie nowych użytkowników , wprowadzając lub wybierając następujące informacje, a następnie wybierz pozycję Dodaj:
Nazwa/nazwisko Wartość Użytkownicy lub jednostki usługi Wprowadź nazwę laboratorium.
W przypadku korzystania z przypisanej przez system tożsamości usługi zarządzanej określ nazwę laboratorium, a nie identyfikator obiektu zarządzanego konta. W przypadku korzystania z tożsamości zarządzanej przypisanej przez użytkownika użyj nazwy konta zarządzanego.Poziom dostępu Wybierz pozycję Podstawowa. Dodawanie do projektów Wybierz projekt zawierający repozytorium. Grupy usługi Azure DevOps Wybierz pozycję Czytelnicy projektu. Wysyłanie zaproszeń e-mail (tylko do użytkowników) Wyczyść pole wyboru.
Dodawanie repozytorium artefaktów usługi Azure DevOps do laboratorium w witrynie Azure Portal
Na stronie Przegląd laboratorium wybierz pozycję Konfiguracja i zasady w obszarze nawigacji po lewej stronie.
Na stronie Konfiguracja i zasady wybierz pozycję Repozytoria w obszarze Zasoby zewnętrzne w obszarze Nawigacja po lewej stronie.
Na stronie Repozytoria repozytorium publiczne repozytorium artefaktów jest automatycznie obecne i nawiązuje połączenie z publicznym repozytorium GitHub usługi DevTest Labs. Jeśli to repozytorium nie jest włączone dla laboratorium, możesz je włączyć, zaznaczając pole wyboru obok pozycji Repozytorium artefaktów publicznych, a następnie wybierając pozycję Włącz na górnym pasku menu.
Aby dodać repozytorium artefaktów do laboratorium, wybierz pozycję Dodaj na górnym pasku menu.
W okienku Repozytorium wprowadź następujące informacje:
- Nazwa: nazwa repozytorium do użycia w laboratorium.
- Adres URL klonowania git: adres URL klonowania git HTTPS z usługi Azure Repos.
- Gałąź (opcjonalnie): gałąź zawierająca definicje artefaktów.
- Ścieżki folderów: folder definicji szablonu usługi ARM względem adresu URL klonowania Git. Pamiętaj, aby dołączyć początkowy ukośnik do przodu w ścieżce folderu.
- Tożsamość zarządzana: użyj tej opcji, aby wykorzystać tożsamość zarządzaną do uwierzytelniania.
Wybierz pozycję Zapisz.
Repozytorium jest teraz wyświetlane na liście Repozytoria dla laboratorium.
Dodawanie repozytorium artefaktów przy użyciu szablonu usługi ARM
Szablony usługi ARM to pliki JSON opisujące zasoby platformy Azure do utworzenia. Aby uzyskać więcej informacji na temat szablonów usługi ARM, zobacz Omówienie struktury i składni szablonów usługi ARM.
Poniższy szablon usługi ARM dodaje repozytorium artefaktów do laboratorium. Szablon tworzy laboratorium, jeśli jeszcze nie istnieje.
Przeglądanie szablonu usługi ARM
Przykładowy szablon zbiera następujące informacje w parametrach. Niektóre parametry mają wartości domyślne, ale polecenie wdrożenia musi określać nazwę laboratorium, identyfikator URI repozytorium artefaktów, typ repozytorium i osobisty token dostępu repozytorium.
- Nazwa laboratorium.
- Nazwa wyświetlana repozytorium artefaktów w usłudze DevTest Labs. Domyślna wartość to
Team Repository
. - Identyfikator URI repozytorium artefaktów, który został skopiowany wcześniej.
- Gałąź repozytorium zawierająca artefakty. Domyślna wartość to
main
. - Nazwa folderu zawierającego artefakty. Wartość domyślna to:
/Artifacts
. - Typ repozytorium. Dozwolone wartości to
VsoGit
, dla usługi Azure Repos lubGitHub
. - Osobisty token dostępu do repozytorium, który został skopiowany wcześniej.
{
"$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"
}
}
]
}
]
}
Wdrażanie szablonu
Istnieje kilka sposobów wdrażania szablonów usługi ARM w celu tworzenia lub aktualizowania zasobów platformy Azure. Aby uzyskać informacje i instrukcje, zobacz następujące artykuły:
- Wdrażanie zasobów przy użyciu szablonów usługi ARM i programu Azure PowerShell
- Wdrażanie zasobów przy użyciu szablonów usługi ARM i interfejsu wiersza polecenia platformy Azure
- Wdrażanie zasobów przy użyciu szablonów usługi ARM w witrynie Azure Portal
- Wdrażanie zasobów przy użyciu szablonów usługi ARM i interfejsu API REST usługi Resource Manager
W tym przykładzie wdróż szablon przy użyciu programu Azure PowerShell.
Uwaga
Polecenia cmdlet, które wdrażają szablon, są specyficzne dla kontekstu, więc używają bieżącej dzierżawy i subskrypcji. Jeśli musisz zmienić kontekst, przed wdrożeniem szablonu użyj polecenia Set-AzContext
Utwórz grupę zasobów przy użyciu polecenia New-AzResourceGroup. Jeśli grupa zasobów, której chcesz użyć, już istnieje, pomiń ten krok.
New-AzResourceGroup -Name MyLabResourceGroup1 -Location westus
Utwórz wdrożenie w grupie zasobów przy użyciu polecenia New-AzResourceGroupDeployment. Możesz wykonać kilka wdrożeń zasobów w tej samej grupie zasobów. Jeśli wdrażasz kilka razy w tej samej grupie zasobów, upewnij się, że każda nazwa wdrożenia jest unikatowa.
New-AzResourceGroupDeployment ` -Name MyLabResourceGroup-Deployment1 ` -ResourceGroupName MyLabResourceGroup1 ` -TemplateFile azuredeploy.json ` -TemplateParameterFile azuredeploy.parameters.json
Po New-AzResourceGroupDeployment
pomyślnym uruchomieniu dane wyjściowe zawierają ważne informacje, takie jak stan aprowizacji, który powinien mieć succeeded
wartość i wszystkie dane wyjściowe szablonu.
Dodawanie repozytorium artefaktów przy użyciu programu Azure PowerShell
Poniższy przykładowy skrypt programu PowerShell New-DevTestLabArtifactRepository.ps1 dodaje repozytorium artefaktów do laboratorium. Pełny skrypt zawiera pełne komunikaty i komentarze.
<#
.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
Skrypt programu PowerShell przyjmuje następujące parametry:
Parametr | Opis |
---|---|
LabName |
Nazwa laboratorium. |
ArtifactRepositoryName |
Nazwa nowego repozytorium artefaktów. Skrypt tworzy losową nazwę repozytorium, jeśli nie zostanie określona. |
ArtifactRepositoryDisplayName |
Nazwa wyświetlana wyświetlana na liście repozytorium artefaktów laboratorium. |
RepositoryUri |
Identyfikator URI repozytorium artefaktów, który został skopiowany wcześniej. |
RepositoryBranch |
Gałąź repozytorium zawierająca artefakty. Domyślna wartość to main . |
FolderPath |
Folder zawierający artefakty. Wartość domyślna to: /Artifacts . |
PersonalAccessToken |
Token zabezpieczający umożliwiający uzyskiwanie dostępu do skopiowanego wcześniej repozytorium. |
SourceType |
Niezależnie od tego, czy repozytorium artefaktów jest repozytorium VSOGit (Azure Repos) czy GitHub. |
Repozytorium wymaga wewnętrznej nazwy identyfikacji, która różni się od nazwy wyświetlanej w witrynie Azure Portal. Nie widzisz nazwy wewnętrznej podczas korzystania z witryny Azure Portal, ale widzisz ją podczas korzystania z interfejsów API REST platformy Azure lub programu Azure PowerShell. Skrypt tworzy losową nazwę, jeśli polecenie wdrożenia nie określa nazwy.
#Set artifact repository name, if not set by user
if ($ArtifactRepositoryName -eq $null){
$ArtifactRepositoryName = "PrivateRepo" + (Get-Random -Maximum 999)
}
Polecenia programu PowerShell
Skrypt używa następujących poleceń programu PowerShell:
Polecenie | Uwagi |
---|---|
Get-AzResource | Pobiera szczegółowe informacje o laboratorium, takie jak jego lokalizacja. Źródło repozytorium artefaktów można utworzyć w tej samej lokalizacji i w tej samej grupie zasobów co laboratorium. |
New-AzResource | Dodaje zasób platformy Azure. Nie ma określonego polecenia do dodawania repozytoriów artefaktów. To polecenie cmdlet wymaga ResourceId pary lub lub ResourceName , ResourceType aby znać typ zasobu do utworzenia. Bieżący skrypt używa ResourceName pary i ResourceType . |
Dobrym sposobem odnajdywania informacji o nazwie zasobu i typie zasobu jest użycie witryny internetowej przeglądarki interfejsu API REST platformy Azure. Źródła artefaktów usługi DevTest Labs pokazują interfejsy API REST służące do tworzenia źródeł artefaktów usługi DevTest Labs i zarządzania nimi. Bieżący skrypt używa następującego identyfikatora zasobu:
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{name}
Typ zasobu to wszystko wymienione po providers
w identyfikatorze URI, z wyjątkiem elementów w nawiasach klamrowych. Nazwa zasobu to wszystko w nawiasach klamrowych. Jeśli używasz więcej niż jednego elementu dla nazwy zasobu, oddziel każdy element ukośnikiem:
$resourcetype = 'Microsoft.DevTestLab/labs/artifactSources'
$resourceName = $LabName + '/' + $ArtifactRepositoryName
Uruchamianie skryptu programu PowerShell
Uruchom skrypt programu PowerShell, podstawiając własne wartości dla przykładowych wartości w LabName
, , LabResourceGroupName
, ArtifactRepositoryName
RepositoryUri
, PersonalAccessToken
i 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"