Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
Note
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 przy użyciu witryny Azure Portal
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ę odpowiadającą typowi repozytorium i typowi uwierzytelniania, którego chcesz użyć.
- Repozytorium usługi Azure Repos z tożsamościami zarządzanymi
- Repozytorium usługi Azure Repos z patem dostępu
- Repozytorium GitHub z aplikacją Centrum deweloperów
- 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.
Note
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:
Name Value Użytkownicy lub jednostki usługi Wprowadź nazwę laboratorium.
W przypadku korzystania z tożsamości zarządzanej przypisanej przez system 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.Access level Select Basic. 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 okienku po lewej stronie.
Na stronie Konfiguracja i zasady wybierz pozycję Repozytoria w obszarze Zasoby zewnętrzne w okienku 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 repozytorium artefaktów publicznych, a następnie wybierając pozycję Włącz w górnej części okienka.
Aby dodać repozytorium artefaktów do laboratorium, wybierz pozycję Dodaj w górnej części okienka.
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: wybierz tę opcję, aby użyć tożsamości zarządzanej do uwierzytelniania.
Select Save.
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. Jeśli laboratorium jeszcze nie istnieje, szablon je utworzy.
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.
- Lab name.
- 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. - Repository type. 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 tej procedurze wdróż szablon przy użyciu programu Azure PowerShell.
Note
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 westusUtwó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ć succeededwartość 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 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
Skrypt programu PowerShell przyjmuje następujące parametry:
| Parameter | Description |
|---|---|
LabName |
Nazwa laboratorium. |
ArtifactRepositoryName |
Nazwa nowego repozytorium artefaktów. Skrypt tworzy losową nazwę repozytorium, jeśli nie określono nazwy. |
ArtifactRepositoryDisplayName |
Nazwa wyświetlana wyświetlana na liście repozytorium artefaktów laboratorium. |
RepositoryUri |
URI repozytorium artefaktów. Wcześniej skopiowałeś tę wartość. |
RepositoryBranch |
Gałąź repozytorium zawierająca artefakty. Domyślna wartość to main. |
FolderPath |
Folder zawierający artefakty. Domyślna wartość to /Artifacts. |
PersonalAccessToken |
Token zabezpieczający na potrzeby uzyskiwania dostępu do repozytorium. Skopiowałeś tę wartość wcześniej. |
SourceType |
Nie ma znaczenia, czy repozytorium artefaktów to VSOGit (Azure Repos), czy GitHub. |
Repozytorium wymaga wewnętrznej nazwy do identyfikacji. Ta nazwa 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 it's not set by user.
if ($ArtifactRepositoryName -eq $null){
$ArtifactRepositoryName = "PrivateRepo" + (Get-Random -Maximum 999)
}
PowerShell commands
Skrypt używa następujących poleceń programu PowerShell:
| Command | Notes |
|---|---|
| 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. Powyższy skrypt używa pary ResourceName 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. Powyższy 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, ArtifactRepositoryNameRepositoryUri, PersonalAccessTokeni 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"