Aracılığıyla paylaş


Azure Artifacts akışını özel powershell deposu olarak kullanma

Azure DevOps Services

Azure Artifacts, işbirliğini geliştirmek ve verimliliği en üst düzeye çıkarmak için PowerShell betiklerini ekipler arasında paylaşmanın kolay bir yolunu sağlar. PowerShell modüllerini özel bir depoda depolayarak, ekibinizin üyelerine komut satırını kullanarak bu betikleri hızla indirme veya güncelleştirme olanağı verebilirsiniz.

Bu makale, PowerShell modüllerinizi depolamak ve paylaşmak için Azure Artifacts akışınızı özel bir PowerShell deposu olarak ayarlama konusunda size yol gösterir. Nasıl yapılacağını öğrenin:

  • Kişisel Erişim Belirteci Oluşturma
  • PowerShell modüllerini depolamak için yeni bir akış oluşturma
  • PowerShell modülleri oluşturma, paketleme ve yayımlama
  • PowerShell ile akışa Bağlan
  • Azure Pipelines ile özel PowerShell deposunu kullanma

Önkoşullar

Kişisel erişim belirteci oluşturma

Kişisel erişim belirteci (PAT) kullanmak, birincil kimlik bilgilerinizi kullanmadan Azure DevOps ile kimlik doğrulaması yapmak için harika bir yoldur. Daha fazla ayrıntı için bkz . Kişisel erişim belirteçlerini kullanma.

  1. Azure DevOps kuruluşunuza gidin https://dev.azure.com/<ORGANIZATION_NAME>/

  2. Kullanıcı ayarları simgesini ve ardından Kişisel erişim belirteçleri'ni seçin.

    Kişisel erişim belirtecinin nasıl oluşturulacağını gösteren ekran görüntüsü.

  3. Yeni Belirteç Seç

  4. PAT'niz için bir ad girin ve son kullanma tarihini seçin.

  5. Özel tanımlı'yı ve ardından Paketleme>Okuma, yazma ve yönetme'yi seçin.

  6. İşiniz bittiğinde Oluştur'u seçin. PAT'nizi kopyalayıp güvenli bir konumda depolayın.

    Yeni bir kişisel erişim belirtecinin nasıl ayarlandığını gösteren ekran görüntüsü.

Bir modül oluşturma

  1. Get-Hello adlı yeni bir klasör oluşturun. Klasörünüzün içinde gezinin ve yeni bir Get-Hello.psm1 dosyası oluşturun.

    |--- Get-Hello               // Parent folder     
        |--- Get-Hello.psm1     // This will become our PowerShell Module
        |--- Get-Hello.psd1    // This will become our module manifest
    
  2. Aşağıdaki betiği Get-Hello.psm1 dosyanıza yapıştırın:

    Function Get-Hello{
        Write-Host "Hello from my Azure DevOps Services Package."
    }
    
  3. Get-Hello dizin yolunuzda aşağıdaki komutu çalıştırarak modül bildirimini oluşturun.

    New-ModuleManifest -Path .\Get-Hello.psd1
    
  4. Get-Hello.psd1 dosyanızı açın ve değişkenini RootModule bulun. Boş dizeyi Get-Hello.psm1 dosyanızın yoluyla aşağıdaki gibi değiştirin:

    RootModule = 'Get-Hello.psm1'
    
  5. FunctionsToExport bölümü, bu modülden dışarı aktarılacak işlevlerin listesini tanımlamaya yöneliktir. Get-Hello işlevinizi aşağıdaki gibi ekleyin:

    FunctionsToExport = @('Get-Hello')
    
  6. FileList bölümünü bulun ve modülünüzle birlikte paketlenmesi gereken dosyaların aşağıdaki listesini ekleyin.

    FileList = @('./Get-Hello.psm1')
    

Paketle ve yayımla modülü

  1. Modülünüz için nuspec dosyası oluşturun. Bu komut, modülü paketlemek için gereken meta verileri içeren bir Get-Hello.nuspec dosyası oluşturur.

    nuget spec Get-Hello
    
  2. Modülünüzü paketlemek için aşağıdaki komutu çalıştırın.

    nuget pack Get-Hello.nuspec
    
  3. Akış kaynağı URL'nizi eklemek için aşağıdaki komutu çalıştırın. NuGet v3 desteklenmiyor, akış kaynağı URL'nizde v2 kullandığınızdan emin olun.

    • Kuruluş kapsamlı akış:

      nuget sources Add -Name "<FEED_NAME>" -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2" -username "<USER_NAME>" -password "<PERSONAL_ACCESS_TOKEN>"
      
    • Proje kapsamlı akış:

      nuget sources Add -Name "<FEED_NAME>" -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2" -username "<USER_NAME>" -password "<PERSONAL_ACCESS_TOKEN>"
      
  4. Paketi akışınızda yayımlayın.

    nuget push -Source "<FEED_NAME>" -ApiKey "<ANY_STRING>" "<PACKAGE_PATH>"
    

    Yayımlanan paketi gösteren ekran görüntüsü.

Önemli

Modül Bildiriminizdeki (.psd1) ve .nuspec dosyasındaki sürüm numarası eşleşmelidir.

PowerShell deposu olarak beslemek için Bağlan

  1. Yükseltilmiş bir PowerShell istemi penceresi açın.

  2. Azure Artifacts ile kimlik doğrulaması yapmak için kimlik bilgilerinizi ayarlayın. Yer tutucuları uygun bilgilerle değiştirin.

    $patToken = "<PERSONAL_ACCESS_TOKEN>" | ConvertTo-SecureString -AsPlainText -Force
    
    $credsAzureDevopsServices = New-Object System.Management.Automation.PSCredential("<USER_NAME>", $patToken)
    
  3. PowerShell deponuzu kaydedin. Bağlantı, SourceLocation Yapıtlar'a> giderek Bağlan Proje kurulum kaynağı URL'si altındaki Akış>NuGet.exe'ne giderek bulunabilir.

    • Proje kapsamlı akış:

      Register-PSRepository -Name "PowershellAzureDevopsServices" -SourceLocation "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2" -PublishLocation "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2" -InstallationPolicy Trusted -Credential $credsAzureDevopsServices
      
    • Kuruluş kapsamlı akış:

      Register-PSRepository -Name "PowershellAzureDevopsServices" -SourceLocation "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2" -PublishLocation "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2" -InstallationPolicy Trusted -Credential $credsAzureDevopsServices
      

    Hala eski visualstudio.com URL'leri kullanıyorsanız, bunun yerine aşağıdaki komutu kullanın:

    • Proje kapsamlı akış:

      Register-PSRepository -Name "PowershellAzureDevopsServices" -SourceLocation "https://<ORGANIZATION_NAME>.pkgs.visualstudio.com/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2" -PublishLocation "https://<ORGANIZATION_NAME>.pkgs.visualstudio.com/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2" -InstallationPolicy Trusted -Credential $credsAzureDevopsServices
      
    • Kuruluş kapsamlı akış:

      Register-PSRepository -Name "PowershellAzureDevopsServices" -SourceLocation "https://<ORGANIZATION_NAME>.pkgs.visualstudio.com/_packaging/<FEED_NAME>/nuget/v2" -PublishLocation "https://<ORGANIZATION_NAME>.pkgs.visualstudio.com/_packaging/<FEED_NAME>/nuget/v2" -InstallationPolicy Trusted -Credential $credsAzureDevopsServices
      

    İpucu

    Bazı PowerShell sürümleri, paket kaynağı çözümlenemiyor uyarısını önlemek için cmdlet'i yürüttükten Register-PSRepository sonra yeni bir oturumun yeniden başlatılmasını gerektirir.

  4. Paket kaynağınızı kaydedin:

    • Proje kapsamlı akış:

      Register-PackageSource -Name "PowershellAzureDevopsServices" -Location "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2" -ProviderName NuGet -Trusted -SkipValidate -Credential $credsAzureDevopsServices
      
    • Kuruluş kapsamlı akış:

      Register-PackageSource -Name "PowershellAzureDevopsServices" -Location "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2" -ProviderName NuGet -Trusted -SkipValidate -Credential $credsAzureDevopsServices 
      
  5. Deponun başarıyla kaydedilip kaydedilmediğini onaylamak için aşağıdaki komutu çalıştırın. Bu komut geçerli kullanıcının tüm kayıtlı depolarını alır:

    Get-PSRepository
    
  6. Depodaki tüm modülleri bulmak istiyorsanız aşağıdaki komutu çalıştırın.

    Find-Module -Repository PowershellAzureDevopsServices
    
  7. Get-Hello modülünü yüklemek istiyorsanız aşağıdaki komutu çalıştırın.

    Install-Module -Name Get-Hello -Repository PowershellAzureDevopsServices
    

Install-Module komutu şu hatayı döndürdüyse: Paket kaynağı çözümlenemiyorsa, cmdlet'ini Register-PackageSource Trusted aşağıdaki bayrakla yeniden çalıştırın:

Register-PackageSource -Name "PowershellAzureDevopsServices" -Location "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2" -ProviderName NuGet -Trusted -Trusted -SkipValidate -Credential $credsAzureDevopsServices

Not

Kuruluşunuz güvenlik duvarı veya ara sunucu kullanıyorsa Azure Artifacts Etki Alanı URL'lerine ve IP adreslerine izin verin.

Azure Pipelines kullanarak modülü kaydetme ve yükleme

Bu örnekte, YAML işlem hattı kullanarak PowerShell Modülünün kimliğini doğrulama ve yükleme işlemi gösterilmektedir. İşlem hattı içinde kişisel erişim belirtecinizi kullanmak için, bunu aşağıdaki gibi bir işlem hattı değişkeni olarak eklemeniz gerekir:

  1. Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.

  2. İşlem hatları'na tıklayın, işlem hattınızı seçin ve ardından düzenle'yi seçerek işlem hattınızı düzenleyin.

  3. Sağ üst köşedeki Değişkenler'i seçin ve ardından yeni bir değişken oluşturmak için işareti seçin+.

  4. Değişkeniniz için bir Ad sağlayın ve ardından kişisel erişim belirtecinizi Değer metin kutusuna yapıştırın.

  5. Bu değer gizli dizisini koru onay kutusunu seçtiğinizden emin olun. İşiniz bittiğinde Tamam'ı seçin. Artık değişkeninizi işlem hattınızda kullanmaya hazırsınız.

trigger:
- main

pool:
  vmImage: 'Windows-latest'

variables:
  PackageFeedEndpoint: 'https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2'  ## For project scoped feeds use: 'https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2'
  PackageFeedEndpointCredential: '{"endpointCredentials": [{"endpoint":"$(PackageFeedEndpoint)", "username":"Admin", "password":"$(AZURE_DEVOPS_PAT)"}]}'

steps:
- powershell: |
    Register-PSRepository -Name "psRepoPipeline" -SourceLocation '$(PackageFeedEndpoint)' -InstallationPolicy Trusted
  displayName: 'Register Azure Artifacts Feed as PSRepository'
  env:
    VSS_NUGET_EXTERNAL_FEED_ENDPOINTS: $(PackageFeedEndpointCredential)

- powershell: |
     echo (Get-PSRepository)
  displayName: 'Get all module repositories'

- powershell: |
    Find-Module -Name "Get-Hello" | Install-Module -Confirm:$false -Force
  displayName: 'Install the Get-Hello PowerShell module'
  env:
    VSS_NUGET_EXTERNAL_FEED_ENDPOINTS: $(PackageFeedEndpointCredential)