Aracılığıyla paylaş


Laboratuvara yapıt deposu ekleme

Bu makalede, Azure DevTest Labs'de laboratuvarınıza yapıt deposu ekleme adımları açıklanmaktadır. Yapıtlar, sanal makinelere (VM) yüklenecek araçlar veya uygulamalardır. GitHub veya Azure Repos Git deposundan yüklediğiniz bir JSON dosyasında yapıtlar tanımlarsınız.

Genel DevTest Labs GitHub yapıt deposu , Windows ve Linux için birçok ortak yapıt sağlar. Bu ortak depodaki yapıtlar, DevTest Labs'de varsayılan olarak kullanılabilir. VM'lere yapıt ekleme hakkında bilgi için bkz . DevTest Labs VM'lerine yapıt ekleme.

Ortak yapıt deposunda bulunmayan özel yapıtlar da oluşturabilirsiniz. Özel yapıtlar oluşturma hakkında bilgi edinmek için bkz . Özel yapıt oluşturma. Özel yapıtlarınızı kendi yapıt deponuza ekleyebilir ve tüm laboratuvar kullanıcılarının yapıtları kullanabilmesi için depoyu laboratuvarınıza ekleyebilirsiniz.

Bu makalede Azure portalını, Azure Kaynak Yönetimi (ARM) şablonunu veya Azure PowerShell'i kullanarak laboratuvarınıza yapıt deposu ekleme adımları gösterilmektedir. Laboratuvara yapıt deposu eklemeyi otomatikleştirmek için Azure PowerShell veya Azure CLI betiği de kullanabilirsiniz.

Not

Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz . Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Önkoşullar

Bir laboratuvara yapıt deposu eklemek için Git HTTPS kopyalama URL'sini ve yapıt dosyalarını içeren GitHub veya Azure Repos deposu için kişisel erişim belirtecini bilmeniz gerekir.

GitHub için kopya URL'sini ve kişisel erişim belirtecini alma

  1. Yapıtlarınızın bulunduğu GitHub deposunun giriş sayfasında Kod'a tıklayın ve Kopyala'nın altında HTTPS URL'sini kopyalayın.
  2. GitHub'ın sağ üst köşesindeki profil görüntünüzü seçin ve ardından Ayarlar'ı seçin.
  3. Profil sayfanızın sol menüsünde Geliştirici Ayarlar'ni ve ardından Kişisel erişim belirteçleri'ni seçin.
  4. Yeni belirteç oluştur'a tıklayın.
  5. Yeni kişisel erişim belirteci sayfasındaki Not'un altında belirteç için isteğe bağlı bir açıklama girin. Tüm varsayılan değerleri kabul edin ve ardından Belirteç oluştur'a tıklayın.
  6. Oluşturulan belirteci kaydedin.

Azure Repos için kopya URL'sini ve kişisel erişim belirtecini alma

  1. Yapıtlarınızın yer aldığı deponun ana sayfasında Kopyala'yı seçin. Depoyu Kopyala sayfasında kopya URL'sini kopyalayın.
  2. Azure DevOps sayfasının sağ üst köşesinde Kullanıcı ayarları>Kişisel erişim belirteçleri'ni seçin.
  3. Kişisel Erişim Belirteçleri sayfasında Yeni Belirteç'i seçin.
  4. Belirtecin bilgilerini doldurun, kapsamlar için Oku'yu ve ardından Oluştur'u seçin.
  5. Azure Repos belirteci depolamadığından veya yeniden göstermediğinden, Başarılı sayfasında belirteci kopyaladığınızdan emin olun.

Azure portalında laboratuvara yapıt deposu ekleme

  1. Laboratuvarın Genel Bakış sayfasında sol gezinti bölmesinde Yapılandırma ve ilkeler'i seçin.

  2. Yapılandırma ve ilkeler sayfasında, sol gezinti bölmesindeki Dış kaynaklar'ın altındaki Depolar'ı seçin.

    Depolar sayfasında, Genel Yapıt Deposu otomatik olarak bulunur ve DevTest Labs genel GitHub deposuna bağlanır. Bu depo laboratuvarınız için etkinleştirilmediyse, Genel Yapıt Deposu'nun yanındaki onay kutusunu seçip üst menü çubuğunda Etkinleştir'i seçerek bunu etkinleştirebilirsiniz.

  3. Yapıt deponuzu laboratuvara eklemek için üst menü çubuğunda Ekle'yi seçin.

    Depolar yapılandırma ekranını gösteren ekran görüntüsü.

  4. Depo bölmesine aşağıdaki bilgileri girin:

    • Ad: Laboratuvarda kullanılacak bir depo adı.
    • Git kopyalama URL'si: GitHub veya Azure Repos'tan Git HTTPS kopyalama URL'si.
    • Dal (isteğe bağlı): Yapıt tanımlarınızı içeren dal.
    • Kişisel erişim belirteci: GitHub veya Azure Repos'tan kişisel erişim belirteci.
    • Klasör yolları: GIT kopya URL'sine göre ARM şablon tanımlarınızın klasörü. İlk eğik çizgiyi klasör yoluna eklediğinizden emin olun.
  5. Kaydet'i seçin.

    Laboratuvara yeni yapıt deposu eklemeyi gösteren ekran görüntüsü.

Depo artık laboratuvarın Depolar listesinde görünür.

ARM şablonu kullanarak yapıt deposu ekleme

ARM şablonları, oluşturulacak Azure kaynaklarını açıklayan JSON dosyalarıdır. ARM şablonları hakkında daha fazla bilgi için bkz . ARM şablonlarının yapısını ve söz dizimini anlama.

Aşağıdaki ARM şablonu bir yapıt deposunu laboratuvara ekler. Şablon, henüz yoksa laboratuvarı oluşturur.

ARM şablonunu gözden geçirme

Örnek şablon parametrelerde aşağıdaki bilgileri toplar. Bazı parametreler varsayılan değerlere sahiptir, ancak dağıtım komutunun laboratuvar adını, yapıt depo URI'sini, depo türünü ve depo kişisel erişim belirtecini belirtmesi gerekir.

  • Laboratuvar adı.
  • DevTest Labs'de yapıt deposunun görünen adı. Varsayılan değer şudur: Team Repository.
  • Daha önce kopyaladığınız yapıt deposunun URI'sini.
  • Yapıtları içeren depo dalı. Varsayılan değer şudur: main.
  • Yapıtları içeren klasörün adı. Varsayılan değer: /Artifacts.
  • Depo türü. İzin verilen değerler Azure Repos veya GitHubiçin şeklindedirVsoGit.
  • Daha önce kopyaladığınız depo için kişisel erişim belirteci.
{

    "$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"
                    }
                }
            ]
        }
    ]
}

Şablonu dağıtma

Azure kaynaklarını oluşturmak veya güncelleştirmek için ARM şablonları dağıtmanın çeşitli yolları vardır. Bilgi ve yönergeler için aşağıdaki makalelere bakın:

Bu örnekte, Şablonu Azure PowerShell kullanarak dağıtın.

Not

Şablonu dağıtan cmdlet'ler bağlama özgü olduğundan geçerli kiracıyı ve aboneliği kullanır. Bağlamı değiştirmeniz gerekiyorsa, şablonu dağıtmadan önce Set-AzContext kullanın

  1. New-AzResourceGroup kullanarak bir kaynak grubu oluşturun. Kullanmak istediğiniz kaynak grubu zaten varsa, bu adımı atlayın.

    New-AzResourceGroup -Name MyLabResourceGroup1 -Location westus
    
  2. New-AzResourceGroupDeployment komutunu kullanarak kaynak grubuna dağıtım oluşturun. Aynı kaynak grubuna birkaç kaynak dağıtımı yapabilirsiniz. Aynı kaynak grubuna birkaç kez dağıtım yapıyorsanız, her dağıtım adının benzersiz olduğundan emin olun.

    New-AzResourceGroupDeployment `
        -Name MyLabResourceGroup-Deployment1 `
        -ResourceGroupName MyLabResourceGroup1 `
        -TemplateFile azuredeploy.json `
        -TemplateParameterFile azuredeploy.parameters.json
    

Başarıyla çalıştırıldıktan sonra New-AzResourceGroupDeployment çıkış, sağlama durumu gibi önemli bilgileri gösterir. Bu succeededdurum olmalıdır ve şablon için tüm çıkışlar gösterilir.

Azure PowerShell kullanarak yapıt deposu ekleme

Aşağıdaki örnek PowerShell betiği New-DevTestLabArtifactRepository.ps1, laboratuvara bir yapıt deposu ekler. Betiğin tamamı bazı ayrıntılı iletiler ve açıklamalar içerir.


<#

.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 11111111-1111-1111-1111-111111111111
.\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

Parametreler

PowerShell betiği aşağıdaki parametreleri alır:

Parametre Açıklama
LabName Laboratuvarın adı.
ArtifactRepositoryName Yeni yapıt deposunun adı. Betik, belirtilmezse depo için rastgele bir ad oluşturur.
ArtifactRepositoryDisplayName Laboratuvarın yapıt deposu listesinde görünen görünen ad.
RepositoryUri Daha önce kopyaladığınız yapıt deposunun URI'sini.
RepositoryBranch Yapıtları içeren depo dalı. Varsayılan değer şudur: main.
FolderPath Yapıtları içeren klasör. Varsayılan değer: /Artifacts.
PersonalAccessToken Daha önce kopyaladığınız depoya erişmek için güvenlik belirteci.
SourceType Yapıt deposunun bir VSOGit (Azure Repos) veya GitHub deposu olup olmadığı.

Deponun kimlik belirlemesi için azure portalındaki görünen addan farklı bir iç ad gerekir. Azure portalını kullanırken iç adı görmezsiniz, ancak Azure REST API'lerini veya Azure PowerShell'i kullanırken görürsünüz. Dağıtım komutu bir ad belirtmezse betik rastgele bir ad oluşturur.

#Set artifact repository name, if not set by user
if ($ArtifactRepositoryName -eq $null){
    $ArtifactRepositoryName = "PrivateRepo" + (Get-Random -Maximum 999)
}

PowerShell komutları

Betik aşağıdaki PowerShell komutlarını kullanır:

Command Notlar
Get-AzResource Laboratuvarla ilgili konumu gibi ayrıntıları alır. Yapıt depo kaynağını laboratuvarla aynı konumda ve aynı kaynak grubu altında oluşturursunuz.
New-AzResource Azure kaynağını ekler. Yapıt depoları eklemek için belirli bir komut yoktur. Bu cmdlet'in oluşturulacak kaynağın ResourceId türünü bilmesi için veya ResourceName ve ResourceType çiftine ihtiyacı vardır. Geçerli betik ve ResourceType çiftini ResourceName kullanır.

Kaynak adı ve kaynak türü bilgilerini bulmanın iyi bir yolu Azure REST API Browser web sitesini kullanmaktır. DevTest Labs Yapıt Kaynakları , DevTest Labs yapıt kaynaklarını oluşturmaya ve yönetmeye yönelik REST API'lerini gösterir. Geçerli betik aşağıdaki kaynak kimliğini kullanır:

https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{name}

Kaynak türü, küme ayraçlarındaki öğeler dışında URI'de sonra providers listelenen her şeydir. Kaynak adı, küme ayraçlarındaki her şeydir. Kaynak adı için birden fazla öğe kullanıyorsanız, her öğeyi eğik çizgiyle ayırın:

$resourcetype = 'Microsoft.DevTestLab/labs/artifactSources'
$resourceName = $LabName + '/' + $ArtifactRepositoryName

PowerShell betiğini çalıştırma

, , ve içindeki örnek değerler için kendi değerlerinizi LabNameLabResourceGroupNameRepositoryUriArtifactRepositoryNamePersonalAccessTokendeğiştirerek PowerShell betiğini çalıştırın: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"

Sonraki adımlar