Menambahkan repositori artefak ke laboratorium

Artikel ini memberi tahu Anda cara menambahkan repositori artefak ke lab Anda di Azure DevTest Labs. Artefak adalah alat atau aplikasi untuk diinstal pada mesin virtual (VM). Anda menentukan artefak dalam file JSON yang Anda muat dari repositori Git GitHub atau Azure Repos.

Repositori artefak GitHub DevTest Labs publik menyediakan banyak artefak umum untuk Windows dan Linux. Artefak di repositori publik ini tersedia secara default di DevTest Labs. Untuk informasi tentang menambahkan artefak ke VM, lihat Menambahkan artefak ke VM DevTest Labs.

Anda juga dapat membuat artefak kustom yang tidak tersedia di repositori artefak publik. Untuk mempelajari tentang membuat artefak kustom, lihat Membuat artefak kustom. Anda dapat menambahkan artefak kustom Anda ke repositori artefak Anda sendiri, dan menambahkan repositori ke lab Anda sehingga semua pengguna lab dapat menggunakan artefak.

Artikel ini menunjukkan kepada Anda cara menambahkan repositori artefak ke lab Anda dengan menggunakan portal Azure, templat Azure Resource Management (ARM), atau Azure PowerShell. Anda juga dapat menggunakan skrip Azure PowerShell atau Azure CLI guna mengotomatiskan penambahan repositori artefak ke lab.

Catatan

Kami menyarankan agar Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Prasyarat

Untuk menambahkan repositori artefak ke lab, Anda perlu mengetahui URL klon Git HTTPS dan token akses privat untuk repositori GitHub atau Azure Repos yang memiliki file artefak.

Dapatkan URL kloning dan token akses pribadi untuk GitHub

  1. Di halaman beranda repositori GitHub yang memiliki artefak Anda, pilih Kode, dan di bawah Klon, salin URL HTTPS.
  2. Pilih gambar profil Anda di pojok kanan atas GitHub, lalu pilih Pengaturan.
  3. Di halaman profil Anda, di menu kiri, pilih Pengembang Pengaturan, lalu pilih Token akses privat.
  4. Klik Buat token baru.
  5. Di halaman Token akses privat baru, di bawah Catatan, masukkan deskripsi opsional untuk token. Terima semua default, lalu pilih Buat token.
  6. Simpan token yang dihasilkan.

Dapatkan URL kloning dan token akses privat untuk Azure Repos

  1. Di halaman utama repositori yang memiliki artefak Anda, pilih Klon. Di halaman Repositori Klon, salin URL klon.
  2. Di pojok kanan atas halaman Azure DevOps, pilih Pengaturan pengguna>Token akses privat.
  3. Di halaman Token Akses Privat, pilih Token Baru.
  4. Isi informasi untuk token, pilih Baca untuk cakupan, lalu pilih Buat.
  5. Di halaman Berhasil, pastikan untuk menyalin token, karena Azure Repos tidak menyimpan token atau menampilkannya lagi.

Menambahkan repositori artefak ke lab di portal Azure

  1. Di halaman lab Gambaran Umum, pilih Konfigurasi dan kebijakan dari navigasi kiri.

  2. Di halaman Konfigurasi dan kebijakan, pilih Repositori di bawah Sumber daya eksternal di navigasi kiri.

    Di halaman Repositori, Public Artifact Repo secara otomatis hadir dan terhubung ke repositori GitHub publik DevTest Labs. Jika repo ini tidak diaktifkan untuk lab Anda, Anda dapat mengaktifkannya dengan memilih kotak centang di sebelah Repo Artefak Publik, lalu memilih Aktifkan di bilah menu atas.

  3. Untuk menambahkan repositori artefak Anda ke lab, pilih Tambahkan di bilah menu atas.

    Cuplikan layar yang menampilkan layar konfigurasi Repositori.

  4. Di panel Repositori, masukkan informasi berikut:

    • Nama: Nama repositori untuk digunakan di lab.
    • URL klon Git: URL klon Git HTTPS dari GitHub atau Azure Repos.
    • Cabang (opsional): Cabang yang memiliki definisi artefak Anda.
    • Token akses privat: Token akses privat dari GitHub atau Azure Repos.
    • Jalur folder: Folder untuk definisi templat ARM Anda, relatif terhadap URL klon Git. Pastikan untuk menyertakan garis miring maju awal di jalur folder.
  5. Pilih Simpan.

    Cuplikan layar yang menampilkan penambahan repositori artefak baru ke lab.

Repositori sekarang muncul di daftar Repositori untuk lab.

Menambahkan repositori artefak dengan menggunakan templat ARM

Templat ARM adalah file JSON yang menjelaskan sumber daya Azure yang akan dibuat. Untuk informasi selengkapnya tentang templat ARM, lihat Memahami struktur dan sintaksis templat ARM.

Templat ARM berikut menambahkan repositori artefak ke lab. Templat membuat laboratorium jika belum ada.

Meninjau templat ARM

Templat sampel mengumpulkan informasi berikut dalam parameter. Beberapa parameter memiliki default, tetapi perintah penyebaran harus menentukan nama lab, URI repositori artefak, jenis repositori, dan token akses privat repositori.

  • Nama lab.
  • Tampilkan nama untuk repositori artefak di DevTest Labs. Nilai defaultnya adalah Team Repository.
  • URI dari repositori artefak, yang Anda salin sebelumnya.
  • Cabang repositori yang berisi artefak. Nilai defaultnya adalah main.
  • Nama folder yang berisi artefak. Nilai defaultnya adalah: /Artifacts.
  • Jenis repositori. Nilai yang diizinkan adalah VsoGit, untuk Azure Repos, atau GitHub.
  • Token akses privat untuk repositori, yang Anda salin sebelumnya.
{

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

Menyebarkan templat

Ada beberapa cara untuk menyebarkan templat ARM guna membuat atau memperbarui sumber daya Azure. Untuk informasi dan instruksi, lihat artikel berikut:

Untuk contoh ini, sebarkan templat dengan menggunakan Azure PowerShell.

Catatan

Cmdlet yang menyebarkan templat bersifat khusus konteks, sehingga menggunakan penyewa dan langganan saat ini. Jika Anda perlu mengubah konteks, gunakan Set-AzContext sebelum menyebarkan templat

  1. Buat grup sumber daya menggunakan New-AzResourceGroup. Jika grup sumber daya yang ingin Anda gunakan sudah ada, lewati langkah ini.

    New-AzResourceGroup -Name MyLabResourceGroup1 -Location westus
    
  2. Buat penyebaran ke grup sumber daya menggunakan New-AzResourceGroupDeployment. Anda dapat membuat beberapa penyebaran sumber daya ke grup sumber daya yang sama. Jika Anda menyebarkan beberapa kali ke grup sumber daya yang sama, pastikan nama setiap penyebaran unik.

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

Setelah New-AzResourceGroupDeployment berhasil dijalankan, keluaran menampilkan informasi penting seperti status penyediaan, yang seharusnya succeeded, dan keluaran apa pun untuk templat.

Menambahkan repositori artefak dengan menggunakan Azure PowerShell

Contoh skrip PowerShell berikut, New-DevTestLabArtifactRepository.ps1, menambahkan repositori artefak ke lab. Skrip lengkap mencakup beberapa pesan dan komentar verbose.


<#

.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

Parameter

Skrip PowerShell membutuhkan parameter berikut:

Parameter Deskripsi
LabName Nama lab.
ArtifactRepositoryName Nama untuk repositori artefak baru. Skrip membuat nama acak untuk repositori jika tidak ditentukan.
ArtifactRepositoryDisplayName Tampilkan nama yang muncul di daftar repositori artefak lab.
RepositoryUri URI dari repositori artefak, yang Anda salin sebelumnya.
RepositoryBranch Cabang repositori yang berisi artefak. Nilai defaultnya adalah main.
FolderPath Folder yang berisi artefak. Nilai defaultnya adalah: /Artifacts.
PersonalAccessToken Token keamanan untuk mengakses repositori, yang Anda salin sebelumnya.
SourceType Apakah repositori artefak adalah repositori VSOGit (Azure Repos) atau GitHub.

Repositori itu sendiri memerlukan nama internal untuk identifikasi, yang berbeda dari nama tampilan yang terlihat di portal Azure. Anda tidak melihat nama internal menggunakan portal Azure, tetapi Anda melihatnya saat menggunakan REST API Azure atau Azure PowerShell. Skrip membuat nama acak jika perintah penyebaran tidak menentukan satu.

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

Perintah PowerShell

Skrip menggunakan perintah PowerShell berikut:

Perintah Catatan
Mendapatkan-AzResource Mendapatkan detail tentang lab, seperti lokasinya. Perhatikan bahwa Anda membuat sumber repositori artefak di lokasi yang sama dan di bawah grup sumber daya yang sama dengan lab.
Baru-AzResource Menambahkan sumber daya Azure. Tidak ada perintah khusus untuk menambahkan repositori artefak. Cmdlet ini memerlukan ResourceId atau pasangan ResourceName dan ResourceType untuk mengetahui jenis sumber daya yang akan dibuat. Skrip saat ini menggunakan pasangan ResourceName dan ResourceType.

Cara yang baik untuk menemukan nama sumber daya dan informasi jenis sumber daya adalah menggunakan situs web Azure REST API Browser. Sumber Artefak DevTest Labs menunjukkan API REST guna membuat dan mengelola sumber artefak DevTest Labs. Skrip saat ini menggunakan ID sumber daya berikut:

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

Jenis sumber daya adalah semua yang tercantum setelah providers di URI, kecuali untuk item dalam tanda kurung kurawal. Nama sumber daya adalah semua yang terlihat dalam kurung kurawal. Jika Anda menggunakan lebih dari satu item untuk nama sumber daya, pisahkan setiap item dengan garis miring:

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

Menjalankan skrip PowerShell

Jalankan skrip PowerShell, dengan mengganti nilai Anda sendiri dengan nilai contoh di LabName, LabResourceGroupName, ArtifactRepositoryName, RepositoryUri, PersonalAccessToken, dan 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"

Langkah berikutnya