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
- NuGet.exe
- Azure Artifacts Kimlik Bilgisi Sağlayıcısı
- Bir Azure DevOps kuruluşu. Henüz bir kuruluşunuz yoksa bir kuruluş oluşturun.
- Azure Artifacts akışı. Henüz yoksa yeni bir akış oluşturun.
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.
Azure DevOps kuruluşunuza gidin
https://dev.azure.com/<ORGANIZATION_NAME>/
Kullanıcı ayarları simgesini ve ardından Kişisel erişim belirteçleri'ni seçin.
Yeni Belirteç Seç
PAT'niz için bir ad girin ve son kullanma tarihini seçin.
Özel tanımlı'yı ve ardından Paketleme>Okuma, yazma ve yönetme'yi seçin.
İşiniz bittiğinde Oluştur'u seçin. PAT'nizi kopyalayıp güvenli bir konumda depolayın.
Bir modül oluşturma
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
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." }
Get-Hello dizin yolunuzda aşağıdaki komutu çalıştırarak modül bildirimini oluşturun.
New-ModuleManifest -Path .\Get-Hello.psd1
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'
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')
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ü
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
Modülünüzü paketlemek için aşağıdaki komutu çalıştırın.
nuget pack Get-Hello.nuspec
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>"
Paketi akışınızda yayımlayın.
nuget push -Source "<FEED_NAME>" -ApiKey "<ANY_STRING>" "<PACKAGE_PATH>"
Önemli
Modül Bildiriminizdeki (.psd1) ve .nuspec dosyasındaki sürüm numarası eşleşmelidir.
PowerShell deposu olarak beslemek için Bağlan
Yükseltilmiş bir PowerShell istemi penceresi açın.
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)
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.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
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
Depodaki tüm modülleri bulmak istiyorsanız aşağıdaki komutu çalıştırın.
Find-Module -Repository PowershellAzureDevopsServices
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:
Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.
İş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.
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+.
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.
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)
İlgili makaleler
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin