Udostępnij za pośrednictwem


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ć.

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.

  1. 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.

  2. Wybierz pozycję Ustawienia organizacji.

    Zrzut ekranu przedstawiający stronę organizacji usługi Azure DevOps z wyróżnioną pozycją Ustawienia organizacji.

  3. Na stronie Przegląd wybierz pozycję Użytkownicy.

    Zrzut ekranu przedstawiający stronę Przegląd organizacji z wyróżnioną pozycją Użytkownicy.

  4. Na stronie Użytkownicy wybierz pozycję Dodaj użytkowników.

    Zrzut ekranu przedstawiający stronę Użytkownicy z wyróżnioną pozycją Dodaj użytkownika.

  5. 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.

    Zrzut ekranu przedstawiający dodawanie użytkowników z wyróżnionymi przykładowymi wpisami i dodaj.

Dodawanie repozytorium artefaktów usługi Azure DevOps do laboratorium w witrynie Azure Portal

  1. Na stronie Przegląd laboratorium wybierz pozycję Konfiguracja i zasady w obszarze nawigacji po lewej stronie.

  2. 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.

  3. Aby dodać repozytorium artefaktów do laboratorium, wybierz pozycję Dodaj na górnym pasku menu.

    Zrzut ekranu przedstawiający ekran konfiguracji repozytoriów.

  4. 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.
  5. Wybierz pozycję Zapisz.

    Zrzut ekranu przedstawiający dodawanie nowego repozytorium artefaktów do laboratorium.

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 lub GitHub.
  • 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:

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

  1. 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
    
  2. 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ć 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 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, 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"

Następne kroki