NuGetAuthenticate@1 - مهمة مصادقة NuGet v1

تكوين أدوات NuGet للمصادقة مع Azure Artifacts ومستودعات NuGet الأخرى. يتطلب NuGet >= 4.8.5385 أو dotnet >= 6 أو MSBuild >= 15.8.166.59604.

بناء الجملة

# NuGet authenticate v1
# Configure NuGet tools to authenticate with Azure Artifacts and other NuGet repositories. Requires NuGet >= 4.8.5385, dotnet >= 6, or MSBuild >= 15.8.166.59604.
- task: NuGetAuthenticate@1
  inputs:
    #nuGetServiceConnections: # string. Service connection credentials for feeds outside this organization. 
    #forceReinstallCredentialProvider: false # boolean. Reinstall the credential provider even if already installed. Default: false.

الإدخالات

nuGetServiceConnections - بيانات اعتماد اتصال الخدمة للموجزات خارج هذه المؤسسة
string.

‏‏اختياري. القائمة المفصولة بفاصلة لأسماء اتصال خدمة NuGet للموجزات خارج هذه المؤسسة أو المجموعة. بالنسبة إلى الموجزات في هذه المؤسسة أو المجموعة، اترك هذا فارغا؛ يتم استخدام بيانات اعتماد البنية تلقائيا.


forceReinstallCredentialProvider - إعادة تثبيت موفر بيانات الاعتماد حتى إذا كان مثبتا بالفعل
boolean. القيمة الافتراضية: false.

‏‏اختياري. إعادة تثبيت موفر بيانات الاعتماد إلى دليل ملف تعريف المستخدم، حتى إذا كان مثبتا بالفعل. إذا كان موفر بيانات الاعتماد مثبتا بالفعل في ملف تعريف المستخدم، فإن المهمة تحدد ما إذا كان يتم استبدالها بموفر بيانات الاعتماد المقدمة للمهمة. قد يؤدي هذا إلى ترقية (أو ربما الرجوع إلى إصدار أقدم) موفر بيانات الاعتماد.


خيارات التحكم بالمهمة

تحتوي جميع المهام على خيارات التحكم بالإضافة إلى مدخلات المهام الخاصة بها. لمزيد من المعلومات، راجع خيارات التحكم وخصائص المهمة الشائعة.

متغيرات الإخراج

لا شيء

الملاحظات

هام

هذه المهمة متوافقة فقط مع NuGet >= 4.8.0.5385 أو dotnet >= 6 أو MSBuild >= 15.8.166.59604.

ما هي الأدوات المتوافقة مع هذه المهمة؟

تقوم هذه المهمة بتكوين الأدوات التي تدعم المكونات الإضافية ل NuGet عبر النظام الأساسي. تتضمن الأدوات حاليا nuget.exe و dotnet والإصدارات الأخيرة من MSBuild مع دعم مضمن لاستعادة حزم NuGet.

على وجه التحديد، ستقوم هذه المهمة بتكوين:

  • nuget.exe (الإصدار 4.8.5385 أو أعلى)
  • dotnet / .NET 6 SDK أو أعلى (يتطلب إصدار سابق من هذه المهمة، NuGetAuthenticateV0. NET Core 2.1، والذي لم يعد مدعوما)
  • MSBuild (الإصدار 15.8.166.59604 أو أعلى)

يوصى بالترقية إلى أحدث إصدار مستقر إذا واجهت أي مشكلات.

أحصل على أخطاء "تم إلغاء مهمة" أثناء استعادة الحزمة. ماذا يجب أن أفعل؟

يمكن أن تتسبب المشكلات المعروفة في NuGet وفي Azure Artifacts Credential Provider في حدوث هذا النوع من الأخطاء، وقد يساعد التحديث إلى أحدث nuget.

يمكن أن تتسبب مشكلة معروفة في بعض إصدارات nuget/dotnet في هذا الخطأ، خاصة أثناء عمليات الاستعادة الكبيرة على الأجهزة المقيدة بالموارد. تم إصلاح هذه المشكلة في NuGet 5.2 و.NET Core SDK 2.1.80X و2.2.40X. إذا كنت تستخدم إصدارا قديما، فحاول ترقية إصدار NuGet أو dotnet. يمكن استخدام مهمة مثبت أداة .NET Core لتثبيت إصدار أحدث من .NET Core SDK.

هناك أيضا مشكلات معروفة في موفر بيانات اعتماد Azure Artifacts (مثبت بواسطة هذه المهمة)، بما في ذلك artifacts-credprovider/#77 و artifacts-credprovider/#108. إذا واجهت هذه المشكلات، فتأكد من أن لديك أحدث موفر بيانات اعتماد عن طريق تعيين الإدخال forceReinstallCredentialProvider إلى true في مهمة NuGet Authenticate. سيضمن هذا الإعداد أيضا تحديث موفر بيانات الاعتماد تلقائيا عند حل المشكلات.

إذا لم يحل أي مما سبق المشكلة، فمكن تسجيل تشخيص المكون الإضافي وقم بالإبلاغ عن المشكلة إلى NuGetوموفر بيانات اعتماد Azure Artifacts.

كيف تختلف هذه المهمة عن مهام NuGetCommand وDotNetCoreCLI؟

تقوم هذه المهمة بتكوين nuget.exe و dotnet وMSBuild للمصادقة مع Azure Artifacts أو المستودعات الأخرى التي تتطلب المصادقة. بعد تشغيل هذه المهمة، يمكنك بعد ذلك استدعاء الأدوات في خطوة لاحقة (إما مباشرة أو عبر برنامج نصي) لاستعادة الحزم أو دفعها.

تتطلب مهام NuGetCommand وDotNetCoreCLI استخدام المهمة لاستعادة الحزم أو دفعها، حيث يتم تكوين المصادقة على Azure Artifacts فقط خلال مدة بقاء المهمة. يمكن أن يمنعك هذا من استعادة الحزم أو دفعها داخل البرنامج النصي الخاص بك. قد يمنعك أيضا من تمرير وسيطات سطر أوامر معينة إلى الأداة.

مهمة NuGetAuthenticate هي الطريقة الموصى بها لاستخدام الموجزات المصادق عليها داخل البنية الأساسية لبرنامج ربط العمليات التجارية.

متى يجب أن أقوم بتشغيل هذه المهمة في البنية الأساسية لبرنامج ربط العمليات التجارية؟

يجب تشغيل هذه المهمة قبل استخدام أداة NuGet لاستعادة الحزم أو دفعها إلى مصدر حزمة مصادق عليه مثل Azure Artifacts. لا توجد متطلبات ترتيب أخرى. على سبيل المثال، يمكن تشغيل هذه المهمة بأمان إما قبل أو بعد مهمة مثبت أداة NuGet أو .NET Core.

كيف أعمل تكوين مصدر حزمة NuGet يستخدم ApiKey ("مفاتيح NuGet API")، مثل nuget.org؟

تستخدم بعض مصادر الحزم مثل nuget.org مفاتيح واجهة برمجة التطبيقات للمصادقة عند دفع الحزم، بدلا من username/password بيانات الاعتماد. نظرا للقيود في NuGet، لا يمكن استخدام هذه المهمة لإعداد اتصال خدمة NuGet الذي يستخدم مفتاح API.

بدلاً من:

  1. تكوين متغير سري يحتوي على ApiKey
  2. تنفيذ دفع الحزمة باستخدام nuget push -ApiKey $(myNuGetApiKey) أو dotnet nuget push --api-key $(myNuGetApiKey)، بافتراض أنك قمت بتسمية المتغير myNuGetApiKey

وكيلي خلف وكيل ويب. هل سيقوم NuGetAuthenticate بإعداد nuget.exe وdotnet وMSBuild لاستخدام وكيلي؟

كلا. بينما ستعمل هذه المهمة نفسها خلف وكيل ويب تم تكوين وكيلك لاستخدامه، فإنه لا يقوم بتكوين أدوات NuGet لاستخدام الوكيل.

للقيام بذلك، يمكنك إما:

  • قم بتعيين متغير http_proxy البيئة واختياريا no_proxy إلى إعدادات الوكيل. راجع متغيرات بيئة NuGet CLI للحصول على التفاصيل. هذه المتغيرات هي متغيرات شائعة الاستخدام قد تستخدمها أيضا أدوات أخرى غير NuGet (على سبيل المثال curl).

    الحذر:
    http_proxy المتغيران و no_proxy حساسان لحالة الأحرف على أنظمة تشغيل Linux وMac ويجب أن يكونا بأحرف صغيرة. لن تعمل محاولة استخدام متغير Azure Pipelines لتعيين متغير البيئة، حيث سيتم تحويله إلى أحرف كبيرة. بدلا من ذلك، قم بتعيين متغيرات البيئة على جهاز العامل المستضاف ذاتيا وأعد تشغيل العامل.

  • أضف إعدادات الوكيل إلى ملف nuget.configعلى مستوى المستخدم ، إما يدويا أو باستخدام nuget config -set كما هو موضح في الوثائق المرجعيةnuget.config .

    الحذر:
    يجب إضافة إعدادات الوكيل (مثل http_proxy) إلى التكوين على مستوى المستخدم. سيتم تجاهلها إذا تم تحديدها في ملف nuget.config مختلف.

كيف أعمل تصحيح الأخطاء إذا كانت لدي مشكلات في هذه المهمة؟

للحصول على سجلات مطولة من البنية الأساسية لبرنامج ربط العمليات التجارية، أضف متغير system.debug البنية الأساسية لبرنامج ربط العمليات التجارية واضبط على true.

كيف تعمل هذه المهمة؟

تقوم هذه المهمة بتثبيت موفر بيانات اعتماد Azure Artifacts في دليل المكونات الإضافية NuGet إذا لم يكن مثبتا بالفعل. ثم يقوم بتعيين متغيرات البيئة مثل VSS_NUGET_URI_PREFIXES وتكوين VSS_NUGET_ACCESSTOKEN موفر بيانات الاعتماد. تظل هذه المتغيرات معينة طوال مدة بقاء المهمة. عند استعادة الحزم أو دفعها، تنفذ أداة NuGet موفر بيانات الاعتماد، الذي يستخدم المتغيرات أعلاه لتحديد ما إذا كان يجب إرجاع بيانات الاعتماد مرة أخرى إلى الأداة.

راجع وثائق موفر بيانات الاعتماد لمزيد من التفاصيل.

يحتاج المسار الخاص بي إلى الوصول إلى موجز في مشروع مختلف

إذا كان المسار قيد التشغيل في مشروع مختلف عن المشروع الذي يستضيف الموجز، فيجب عليك إعداد المشروع الآخر لمنح حق الوصول للقراءة/الكتابة إلى خدمة الإنشاء. راجع أذونات الحزمة في Azure Pipelines لمزيد من التفاصيل.

هل سيعمل هذا مع عمليات تشغيل البنية الأساسية لبرنامج ربط العمليات التجارية التي يتم تشغيلها من نسخة متشعبة خارجية؟

كلا. لا تتمتع عمليات تشغيل البنية الأساسية لبرنامج ربط العمليات التجارية التي يتم تشغيلها من نسخة متشعبة خارجية بالوصول إلى البيانات السرية المناسبة لمصادقة الموجز الداخلي. وبالتالي، ستظهر مثل مهمة المصادقة ناجحة، ولكن المهام اللاحقة التي تتطلب المصادقة (مثل دفع Nuget) ستفشل مع خطأ على طول أسطر: ##[error]The nuget command failed with exit code(1) and error(Response status code does not indicate success: 500 (Internal Server Error - VS800075: The project with id 'vstfs:///Classification/TeamProject/341ec244-e856-40ad-845c-af31c33c2152' does not exist, or you do not have permission to access it. (DevOps Activity ID: C12C19DC-642C-469A-8F58-C89F2D81FEA7)). بعد دمج طلب السحب في الأصل، ستتم مصادقة البنية الأساسية لبرنامج ربط العمليات التجارية التي يتم تشغيلها من هذا الحدث بشكل صحيح.

لقد قمت بالتحديث من NuGetAuthenticateV0 إلى NuGetAuthenticateV1 والآن يفشل أمر dotnet الخاص بي مع 401

إذا كنت تقوم بتحديث من NuGetAuthenticateV0 إلى NuGetAuthenticateV1 والحصول على خطأ أثناء تشغيل أمر dotnet، فابحث عن الرسالة It was not possible to find any compatible framework version من السجلات. بالنسبة لمستخدمي dotnet، يتطلب NuGetAuthenticateV1 .NET 6 بدلا من .NET Core 2.1، وهو مطلوب في NuGetAuthenticateV0 ولم يعد مدعوما. لحل المشكلة، استخدم المهمة UseDotNet@2 قبل الأمر dotnet لتثبيت .NET 6.

- task: UseDotNet@2
  displayName: Use .NET 6 SDK
  inputs:
    packageType: sdk
    version: 6.x

أمثلة

استعادة حزم NuGet ودفعها داخل مؤسستك

إذا كانت جميع موجزات Azure Artifacts التي تستخدمها في نفس المؤسسة مثل البنية الأساسية لبرنامج ربط العمليات التجارية الخاصة بك، يمكنك استخدام مهمة NuGetAuthenticate دون تحديد أي مدخلات. بالنسبة لموجزات نطاق المشروع الموجودة في مشروع مختلف عن المكان الذي يتم فيه تشغيل البنية الأساسية لبرنامج ربط العمليات التجارية، يجب منح المشروع والوصول إلى الموجز يدويا إلى خدمة إنشاء مشروع البنية الأساسية لبرنامج ربط العمليات التجارية.

nuget.config

<configuration>
  <packageSources>
    <!-- 
      Any Azure Artifacts feeds within your organization will automatically be authenticated. Both dev.azure.com and visualstudio.com domains are supported.
      Project scoped feed URL includes the project, organization scoped feed URL does not.
    -->
    <add key="MyProjectFeed1" value="https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed}/nuget/v3/index.json" />
    <add key="MyProjectFeed2" value="https://{organization}.pkgs.visualstudio.com/{project}/_packaging/{feed}/nuget/v3/index.json" />
    <add key="MyOtherProjectFeed1" value="https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed@view}/nuget/v3/index.json" />
    <add key="MyOrganizationFeed1" value="https://pkgs.dev.azure.com/{organization}/_packaging/{feed}/nuget/v3/index.json" />
  </packageSources>
</configuration>

لاستخدام اتصال خدمة، حدد اتصال الخدمة في nuGetServiceConnections الإدخال لمهمة NuGet Authenticate. يمكنك بعد ذلك الرجوع إلى اتصال الخدمة مع -ApiKey AzureArtifacts في مهمة.

nuget.exe

- task: NuGetAuthenticate@1
  inputs:
    nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: NuGetToolInstaller@1 # Optional if nuget.exe >= 4.8.5385 is already on the path
  inputs:
    versionSpec: '*'
    checkLatest: true
- script: nuget restore
# ...
- script: nuget push -ApiKey AzureArtifacts -Source "MyProjectFeed1" MyProject.*.nupkg

dotnet

- task: NuGetAuthenticate@1
  inputs:
    nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: UseDotNet@2 # Optional if the .NET Core SDK is already installed
- script: dotnet restore
# ...
- script: dotnet nuget push --api-key AzureArtifacts --source https://pkgs.dev.azure.com/{organization}/_packaging/{feed1}/nuget/v3/index.json MyProject.*.nupkg

في الأمثلة أعلاه، OtherOrganizationFeedConnection وهي ThirdPartyRepositoryConnection أسماء اتصالات خدمة NuGet التي تم تكوينها وتفويضها للاستخدام في البنية الأساسية لبرنامج ربط العمليات التجارية الخاصة بك، ولديها عناوين URL التي تطابق تلك الموجودة في وسيطة سطر الأوامر أو الخاصة بك nuget.config .

قد يحتوي عنوان URL لمصدر الحزمة الذي يشير إلى موجز Azure Artifacts على المشروع أو لا يحتوي عليه. يجب أن يحتوي عنوان URL لموجز نطاق المشروع على المشروع، ويجب ألا يحتوي عنوان URL لموجز نطاق المؤسسة على المشروع. تعرف على المزيد حول موجزات المشروع.

استعادة حزم NuGet ودفعها خارج مؤسستك

إذا كنت تستخدم موجزات Azure Artifacts من مؤسسة مختلفة أو تستخدم مستودع حزمة مصادق عليه من جهة خارجية، فستحتاج إلى إعداد اتصالات خدمة NuGet وتحديدها في nuGetServiceConnections الإدخال. سيتم أيضا مصادقة الموجزات داخل مؤسسة Azure Artifacts تلقائيا.

nuget.config

<configuration>
  <packageSources>
    <!-- Any Azure Artifacts feeds within your organization will automatically be authenticated -->
    <add key="MyProjectFeed1" value="https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed}/nuget/v3/index.json" />
    <add key="MyOrganizationFeed" value="https://pkgs.dev.azure.com/{organization}/_packaging/{feed}/nuget/v3/index.json" />
    <!-- Any package source listed here whose URL matches the URL of a service connection in nuGetServiceConnections will also be authenticated.
         The key name here does not need to match the name of the service connection. -->
    <add key="OtherOrganizationFeed" value="https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/nuget/v3/index.json" />
    <add key="ThirdPartyRepository" value="https://{thirdPartyRepository}/index.json" />
  </packageSources>
</configuration>

nuget.exe

- task: NuGetAuthenticate@1
  inputs:
    nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: NuGetToolInstaller@1 # Optional if nuget.exe >= 4.8.5385 is already on the path
  inputs:
    versionSpec: '*'
    checkLatest: true
- script: nuget restore
# ...
- script: nuget push -ApiKey AzureArtifacts -Source "MyProjectFeed1" MyProject.*.nupkg

dotnet

- task: NuGetAuthenticate@1
  inputs:
    nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: UseDotNet@2 # Optional if the .NET Core SDK is already installed
- script: dotnet restore
# ...
- script: dotnet nuget push --api-key AzureArtifacts --source "MyProjectFeed1"  MyProject.*.nupkg

OtherOrganizationFeedConnection وهي ThirdPartyRepositoryConnection أسماء اتصالات خدمة NuGet التي تم تكوينها والمخولة لاستخدامها في البنية الأساسية لبرنامج ربط العمليات التجارية الخاصة بك، ولديها عناوين URL التي تطابق تلك الموجودة في وسيطة nuget.config أو سطر الأوامر.

قد يحتوي عنوان URL لمصدر الحزمة الذي يشير إلى موجز Azure Artifacts على المشروع أو لا يحتوي عليه. يجب أن يحتوي عنوان URL لموجز نطاق المشروع على المشروع، ويجب ألا يحتوي عنوان URL لموجز نطاق المؤسسة على المشروع. تعرف على المزيد حول موجزات المشروع.

المتطلبات

المتطلبات الوصف
أنواع البنية الأساسية لبرنامج ربط العمليات التجارية YAML، الإصدار الكلاسيكي، الإصدار الكلاسيكي
يعمل على Agent, DeploymentGroup
المطالب بلا
القدرات لا تفي هذه المهمة بأي طلبات للمهام اللاحقة في الوظيفة.
قيود الأوامر أي
متغيرات Settable أي
إصدار الوكيل 2.144.0 أو أحدث
فئة المهمة الحزمة
المتطلبات الوصف
أنواع البنية الأساسية لبرنامج ربط العمليات التجارية YAML، الإصدار الكلاسيكي، الإصدار الكلاسيكي
يعمل على Agent, DeploymentGroup
المطالب بلا
القدرات لا تفي هذه المهمة بأي طلبات للمهام اللاحقة في الوظيفة.
قيود الأوامر أي
متغيرات Settable أي
إصدار الوكيل 2.120.0 أو أحدث
فئة المهمة الحزمة