Azure Pipelines ile NuGet paketlerini yayımlama (YAML/Klasik)
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Azure Pipelines ile NuGet paketlerinizi Azure Artifacts akışınıza, dış akışlarınıza veya nuget.org gibi genel kayıt defterlerine yayımlamak için klasik veya YAML işlem hatlarını kullanabilirsiniz. Bu makalede şunları nasıl yapacağınızı öğreneceksiniz:
- Azure Pipelines'da NuGet paketi oluşturma
- Paketleri iç ve dış akışlara yayımlama
- Paketleri NuGet.org yayımlama
Önkoşullar
Bir Azure DevOps kuruluşu. Ücretsiz bir tane oluşturun.
Azure DevOps projesi. Henüz bir projeniz yoksa yeni bir proje oluşturun.
Azure Artifacts akışı. Ücretsiz bir tane oluşturun.
NuGet paketi oluşturma
NuGet paketlerinizi oluşturmanın dotnet veya nuget.exe CLI kullanarak paketlerinizi paketlemek gibi çeşitli yolları vardır. Paketlerinizi oluşturmak için zaten MSBuild veya başka görevler kullanıyorsanız, bu bölümü atlayabilir ve bir sonrakine geçebilirsiniz.
NuGet paketi oluşturmak için YAML dosyanıza aşağıdaki kod parçacığını ekleyin. Diğer ayrıntılar için bkz . NuGet görevi .
- task: NuGetCommand@2
inputs:
command: pack
packagesToPack: '**/*.csproj'
packDestination: '$(Build.ArtifactStagingDirectory)'
- packagesToPack: Görevin paketlenmesi gereken csproj dizinlerini aramak için kullandığı desen.
- packDestination: paketlerin oluşturulduğu dizin. Boşsa, paketler kaynak kökte oluşturulur.
Paket sürümü oluşturma
NuGet paketleri adları ve sürüm numaralarıyla tanımlanır. Anlamsal Sürüm Oluşturma'nın kullanılması, paket sürümlerini etkili bir şekilde yönetmek için önerilen bir yaklaşımdır. Anlamsal sürümler üç sayısal bileşenden oluşur: Major, Minor ve Patch.
Düzeltme eki numarası bir hata düzeltildikten sonra artırılır. Geriye dönük olarak uyumlu yeni bir özellik yayınlarken İkincil sürümü artırır ve Patch sürümünü 0 olarak sıfırlarsınız. Buna karşılık, geriye dönük uyumsuz bir değişiklik yaparken Ana sürümü artırır ve hem İkincil hem de Yama sürümlerini 0'a sıfırlarsınız.
Anlamsal Sürüm Oluşturma, paketleri etiketlemek için yayın öncesi etiketlerin kullanımını da destekler. Kısa çizgi ve ardından yayın öncesi etiketinizi eklemeniz yeterlidir, örneğin: 1.0.0-beta.
Azure Pipelines AnlamSal Sürüm Oluşturma'yi destekler ve NuGet görevleri için aşağıdaki yapılandırma seçeneklerini sunar:
Tarih ve saati kullanma (Klasik) | byPrereleaseNumber (YAML): Paket sürümünüz şu biçimdedir: Major.Minor.Patch-ci-datetime burada Major, Minor ve Patch değerlerini özelleştirme esnekliğine sahip olursunuz.
Ortam değişkeni kullanma (Klasik) | byEnvVar (YAML): Paket sürümünüz belirtilen ortam değişkeninin değerine ayarlanır.
Derleme numarasını kullanma (Klasik) | byBuildNumber (YAML): Paket sürümünüz derleme numarasına ayarlanır. İşlem hattı Seçeneklerinizde derleme numarası biçimini olarak
$(BuildDefinitionName)_$(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r)
tanımladığınızdan emin olun. YAML'de biçimi belirtmek için işlem hattınızın köküne birname:
özellik ekleyin ve biçiminizi tanımlayın.
Aşağıda, SemVer uyumlu bir paket oluşturmak için tarih ve saat sürümünün nasıl kullanılacağını gösteren bir örnek verilmiştir: Major.Minor.Patch-ci-datetime.
variables:
Major: '1'
Minor: '0'
Patch: '0'
steps:
- task: NuGetCommand@2
inputs:
command: pack
versioningScheme: byPrereleaseNumber
majorVersion: '$(Major)'
minorVersion: '$(Minor)'
patchVersion: '$(Patch)'
Not
DotNetCore
ve DotNetStandard
paketleri System.InvalidCastExceptions önlemek için görevle birlikte DotNetCoreCLI@2
paketlenmelidir. Diğer ayrıntılar için bkz . .NET Core CLI görevi .
task: DotNetCoreCLI@2
inputs:
command: pack
versioningScheme: byPrereleaseNumber
majorVersion: '$(Major)'
minorVersion: '$(Minor)'
patchVersion: '$(Patch)'
Paketleri iç akışlara yayımlama
Not
Azure Pipelines kullanarak paketlerinizi bir akışa yayımlamak için hem Proje Koleksiyonu Derleme Hizmeti'ne hem de projenizin Derleme Hizmeti kimliklerine akış ayarlarınızda atanan Akış Yayımcısı (Katkıda Bulunan) rolü verildiğinden emin olun. Daha fazla ayrıntı için bkz . İzinleri yönetme.
steps:
- task: NuGetAuthenticate@1
displayName: 'NuGet Authenticate'
- task: NuGetCommand@2
displayName: 'NuGet push'
inputs:
command: push
publishVstsFeed: '<projectName>/<feed>'
allowPackageConflicts: true
Paketleri dış akışlara yayımlama
Paketlerinizi diğer Azure DevOps kuruluşlarındaki veya nuget.org akışlar gibi dış NuGet akışlarına veya genel kayıt defterlerine yayımlamak için önce ilgili hizmetle kimlik doğrulaması yapmak için bir hizmet bağlantısı oluşturmanız gerekir:
Azure DevOps projenizden Proje ayarları>Hizmet bağlantıları'na gidin >
Yeni hizmet bağlantısı>NuGet>İleri'yi seçin.
Gerekli alanları doldurun ve işiniz bittiğinde Kaydet'i seçin. Diğer ayrıntılar için bkz . Hizmet bağlantılarını yönetme.
Not
NuGetAuthenticate@1 görevi temel kimlik doğrulamasıyla hizmet bağlantılarını destekler ancak Apikey kimlik doğrulamasını desteklemez. ApiKey kimlik doğrulamasını kullanmak için bunun yerine NuGetCommand@2 görevini kullanmanız gerekir.
NuGet paketlerinizi farklı bir kuruluştaki bir akışta yayımlamak için YAML işlem hattınıza aşağıdaki kod parçacığını ekleyin:
Komut satırı görevini ve NuGet.exe kullanma:
- task: NuGetAuthenticate@1 inputs: nuGetServiceConnections: <NAME_OF_YOUR_SERVICE_CONNECTION> - script: | nuget push <PACKAGE_PATH> -src https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json -ApiKey <ANY_STRING> displayName: "Push"
Komut satırı görevini ve dotnet'i kullanma:
- task: NuGetAuthenticate@1 inputs: nuGetServiceConnections: <NAME_OF_YOUR_SERVICE_CONNECTION> - script: | dotnet build <CSPROJ_PATH> --configuration <CONFIGURATION> dotnet pack <CSPROJ_PATH> -p:PackageVersion=<YOUR_PACKAGE_VERSION> --output <OUTPUT_DIRECTORY> --configuration <CONFIGURATION> dotnet nuget push <PACKAGE_PATH> --source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json --api-key <ANY_STRING> displayName: "Build, pack and push" ```
Not
ApiKey
gereklidir, ancak Azure Artifacts akışında yayımlarken herhangi bir dizeyi kullanabilirsiniz.
NuGet.org’a yayımlama
nuget.org hesabınızda oturum açın ve API anahtarı oluşturun.
Azure DevOps projenize gidin ve Proje ayarları'nı seçin .
Hizmet Bağlantıları'nı ve ardından Yeni hizmet bağlantısı'nı seçin.
NuGet'i ve ardından İleri'yi seçin.
Kimlik doğrulama yönteminiz olarak ApiKey'i seçin ve Akış URL'niz için aşağıdaki URL'yi kullanın: https://api.nuget.org/v3/index.json.
Daha önce oluşturduğunuz ApiKey değerini girin ve bir Hizmet bağlantısı adı girin.
Tüm işlem hatlarına erişim izni ver'i seçin ve işiniz bittiğinde Kaydet'i seçin. Bu seçeneği seçmek için hizmet bağlantısı Yönetici rolüne ihtiyacınız olduğunu unutmayın.
steps:
- task: NuGetCommand@2
displayName: 'NuGet push'
inputs:
command: push
nuGetFeedType: external
publishFeedCredentials: nuget.org