Unterstützung für Vorlagenausdrücke in Repository- und Containerressourcendefinitionen

Mit diesem Update wurden Vorlagenausdrücke in Repository- und Containerressourcendefinitionen unterstützt. Jetzt können Sie Vorlagenausdrücke verwenden, wenn Sie die ref Eigenschaft einer repository Ressource in einer YAML-Pipeline definieren, um den Zweig einer Repositoryressource auszuwählen. Darüber hinaus haben wir Unterstützung für Vorlagenausdrücke hinzugefügt, wenn die endpointEigenschaften options volumesportseiner Ressource in einer container YAML-Pipeline definiert werden.

Weitere Informationen finden Sie in den Versionshinweisen.

Azure Boards

Azure Pipelines

Azure Boards

Zuvor erfordert das Ändern eines Arbeitsaufgabenlinks mindestens drei Schritte, um den Vorgang abzuschließen. Wenn Sie z. B. einen übergeordneten Link zu einem verknüpften Link ändern möchten, müssen Sie die Arbeitsaufgaben-ID kopieren, den übergeordneten Link entfernen, einen neuen vorhandenen Link vom Typ "Verknüpft" hinzufügen und schließlich die kopierte ID einfügen und speichern. Es ist ein umständlicher Prozess.

Wir haben das Problem gelöst, indem Sie es Ihnen ermöglichen, den Linktyp direkt zu bearbeiten und zu ändern. Sie können den Linktyp schnell in nur einem Schritt ändern.

GIF zum Demo bearbeiten von Verknüpfungstypen für Arbeitsaufgaben.

Hinweis

Dieses Feature ist nur in der Vorschauversion von New Boards Hubs verfügbar.

Temporärer REST-Abfrageendpunkt erstellen

Wir haben mehrere Instanzen von Erweiterungsautoren gesehen, die versuchen, nicht gespeicherte Abfragen auszuführen, indem die WIQL-Anweisung (Work Item Query Language) über die Abfragezeichenfolge übergeben wird. Dies funktioniert einwandfrei, es sei denn, Sie haben eine große WIQL-Anweisung, die die Browsergrenzwerte für die Länge der Abfragezeichenfolge erreicht. Um dies zu lösen, haben wir einen neuen REST-Endpunkt erstellt, damit Toolautoren eine temporäre Abfrage generieren können. Wenn Sie die ID aus der Antwort verwenden, um sie per Abfragezeichenfolge zu übergeben, wird dieses Problem beseitigt.

Weitere Informationen finden Sie auf der Dokumentationsseite der REST-API für temporäre Abfragen.

Batchlösch-API (private Vorschau)

Derzeit wird die einzige Möglichkeit zum Entfernen von Arbeitselementen aus dem Papierkorb diese REST-API zum gleichzeitigen Löschen verwendet. Dies kann ein langsamer Prozess sein und unterliegt der Begrenzung der Rate, wenn versucht wird, jede Art von Massenreinigung zu erledigen. Als Reaktion darauf haben wir einen neuen REST-API-Endpunkt hinzugefügt, um Arbeitsaufgaben im Batch zu löschen und/oder zu zerstören.

Wenn Sie an einer privaten Vorschau dieses neuen Endpunkts teilnehmen möchten, senden Sie uns bitte direkt eine E-Mail.

@CurrentIteration Makro in Übermittlungsplänen

Mit diesem Update haben wir Unterstützung für das @CurrentIteration Makro für Formatvorlagen in Übermittlungsplänen hinzugefügt. Mit diesem Makro können Sie die aktuelle Iteration aus dem Teamkontext jeder Zeile in Ihrem Plan abrufen.

GIF zum Demo-CurrentIteration-Makro in Übermittlungsplänen.

Azure Pipelines

Vorlagenausdrücke in Repositoryressourcendefinition

Wir haben Unterstützung für Vorlagenausdrücke beim Definieren der ref Eigenschaft einer repository Ressource in einer YAML-Pipeline hinzugefügt. Dies war ein sehr angefordertes Feature unserer Entwicklercommunity.

Es gibt Anwendungsfälle, wenn Ihre Pipeline unterschiedliche Verzweigungen derselben Repositoryressource auschecken soll.

Angenommen, Sie haben eine Pipeline, die ein eigenes Repository erstellt, und dafür muss sie eine Bibliothek aus einem Ressourcen-Repository auschecken. Außerdem möchten Sie, dass Ihre Pipeline denselben Bibliothekszweig wie selbst auscheckt. Wenn Ihre Pipeline beispielsweise auf der main Verzweigung ausgeführt wird, sollte die main Verzweigung des Bibliotheks-Repositorys ausgecheckt werden. Wenn die Pipelines auf der dev Verzweigung ausgeführt werden, sollte sie den dev Bibliothekszweig auschecken.

Bis heute mussten Sie die zu auscheckende Verzweigung explizit angeben und den Pipelinecode ändern, wenn sich die Verzweigung ändert.

Jetzt können Sie Vorlagenausdrücke verwenden, um den Zweig einer Repositoryressource auszuwählen. Sehen Sie sich das folgende Beispiel von YAML-Code an, der für die nicht wichtigsten Zweigstellen Ihrer Pipeline verwendet werden soll:

resources:
  repositories:
    - repository: library
      type: git
      name: FabrikamLibrary
      ref: ${{ variables['Build.SourceBranch'] }}

steps:
- checkout: library
- script: echo ./build.sh
- script: echo ./test.sh

Wenn Sie die Pipeline ausführen, können Sie die Verzweigung angeben, die für das library Repository ausgecheckt werden soll.

Geben Sie die Version einer Vorlage an, die zur Erstellung der Warteschlangenzeit erweitert werden soll.

Vorlagen stellen eine hervorragende Möglichkeit dar, die Codeduplizierung zu reduzieren und die Sicherheit Ihrer Pipelines zu verbessern.

Ein beliebter Anwendungsfall besteht darin, Vorlagen in ihrem eigenen Repository zu speichern. Dies reduziert die Kopplung zwischen einer Vorlage und den Pipelines, die sie erweitern, und erleichtert die Entwicklung der Vorlage und der Pipelines unabhängig voneinander.

Betrachten Sie das folgende Beispiel, in dem eine Vorlage verwendet wird, um die Ausführung einer Liste von Schritten zu überwachen. Der Vorlagencode befindet sich im Templates Repository.

# template.yml in repository Templates
parameters:
- name: steps
  type: stepList
  default: []

jobs:
- job:
  steps:
  - script: ./startMonitoring.sh
  - ${{ parameters.steps }}
  - script: ./stopMonitoring.sh

Angenommen, Sie haben eine YAML-Pipeline, die diese Vorlage erweitert, die sich im Repository FabrikamFiberbefindet. Bis heute war es nicht möglich, die ref Eigenschaft der templates Repositoryressource dynamisch anzugeben, wenn das Repository als Vorlagenquelle verwendet wird. Dies bedeutete, dass Sie den Code der Pipeline ändern mussten, wenn Sie möchten, dass Die Pipeline eine Vorlage aus einer anderen Verzweigung erweitert, unabhängig davon, welche Verzweigung Sie ihre Pipeline ausgeführt haben.

Mit der Einführung von Vorlagenausdrücken in der Repositoryressourcendefinition können Sie Ihre Pipeline wie folgt schreiben:

resources:
  repositories:
    - repository: templates
      type: git
      name: Templates
      ref: ${{ variables['Build.SourceBranch'] }}

extends:
  template: template.yml@templates
  parameters:
    steps:
      - script: echo ./build.sh
      - script: echo ./test.sh

Auf diese Weise erweitert Ihre Pipeline die Vorlage in derselben Verzweigung wie die Verzweigung, auf der die Pipeline ausgeführt wird, sodass Sie sicherstellen können, dass die Verzweigungen ihrer Pipeline und der Vorlage immer übereinstimmen. Wenn Sie die Pipeline auf einer Verzweigung devausführen, wird die vorlage erweitert, die durch die template.yml Datei im dev Verzweigung des templates Repositorys angegeben wird.

Alternativ können Sie beim Erstellen der Warteschlangenzeit auswählen, welche Vorlagenrepository-Verzweigung verwendet werden soll, indem Sie den folgenden YAML-Code schreiben.

parameters:
  - name: branch
    default: main

resources:
  repositories:
    - repository: templates
      type: git
      name: Templates
      ref: ${{ parameters.branch }}

extends:
  template: template.yml@templates
  parameters:
    steps:
      - script: echo ./build.sh
      - script: echo ./test.sh

Jetzt können Sie die Pipeline auf Verzweigung main erweitern eine Vorlage von Verzweigung dev in einer Ausführung erweitern und eine Vorlage aus Verzweigung main in einer anderen Ausführung erweitern, ohne den Code der Pipeline zu ändern.

Wenn Sie einen Vorlagenausdruck für die ref Eigenschaft einer Repositoryressource angeben, können Sie vordefinierte Variablen verwenden und systeminterne Variablen verwenden parameters , sie können jedoch keine benutzerdefinierten VARIABLEN für YAML oder Pipelines verwenden.

Vorlagenausdrücke in der Containerressourcendefinition

Wir haben Unterstützung für Vorlagenausdrücke beim Definieren der endpointEigenschaften options volumesportseiner Ressource in einer container YAML-Pipeline hinzugefügt. Dies war ein sehr angefordertes Feature unserer Entwicklercommunity.

Jetzt können Sie YAML-Pipelines wie folgt schreiben.

parameters:
  - name: endpointName    
    default: AzDOACR
    type: string

resources:
  containers:
    - container: linux
      endpoint: ${{ parameters.endpointName }}
      image: fabrikamfiber.azurecr.io/ubuntu:latest

jobs:
- job:
  container: linux
  steps:
  - task: CmdLine@2
    inputs:
      script: 'echo Hello world'

Sie können Ihre Vorlagenausdrücke verwenden parameters. und variables. verwenden. Für Variablen können Sie nur die in der YAML-Datei definierten, aber nicht die in der Pipelines-Benutzeroberfläche definierten verwenden. Wenn Sie die Variable z. B. mithilfe von Agentprotokollbefehlen neu definieren, hat sie keine Auswirkung.

Überwachungsereignisse für Änderungen an Genehmigungen

Mit Genehmigungen können Sie steuern, wann eine Phase ausgeführt werden soll. Diese Überprüfung wird häufig verwendet, um Bereitstellungen in Produktionsumgebungen zu steuern. Die Überwachung ermöglicht es Ihnen, Complianceanforderungen zu erfüllen und die Sicherheit Ihrer Azure DevOps-Organisation zu überwachen.

Wenn ein Benutzer aufgefordert wird, eine Pipeline für die Bereitstellung in einer bestimmten Phase zu genehmigen, kann dieser Benutzer die Genehmigung einer anderen Person erneut zuweisen.

Überwachungsereignisse für Änderungen an Genehmigungen

Bisher wurden solche Aktionen nicht in den Überwachungsprotokollen protokolliert. Dieses Problem wurde jetzt behoben.

Die Überwachungsprotokolle enthalten einen Eintrag ähnlich dem folgenden.

[
    {
        "Id": "2517368925862632546;00000264-0000-8888-8000-000000000000;839ad1ba-f72b-4258-bc3f-88be7a4553b5",
        "CorrelationId": "8392d1ba-f76b-4258-bc3f-88be7a4553b5",
        "ActivityId": "a298a06c-965f-4e60-9643-2593f2066e37",
        "ActorCUID": "fe950802-bf07-755b-826d-e8dcc066252c",
        "ActorUserId": "fe950802-bf07-755b-826d-e8dcc066252c",
        "ActorUPN": "silviu@fabrikam.app",
        "AuthenticationMechanism": "AAD_Cookie",
        "Timestamp": "2022-10-10T11:26:53.7367453Z",
        "ScopeType": "Organization",
        "ScopeDisplayName": "Fabrikam (Organization)",
        "ScopeId": "547a7316-cdf4-40d2-af16-3215f97d053e",
        "ProjectId": "4bf16944-3595-421f-9947-79d9eb190284",
        "ProjectName": "FabrikamFiber",
        "IpAddress": "127.0.0.1",
        "UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.37",
        "ActionId": "ApproverReassigned",
        "Data": {
            "ApprovalId": "dae6e7c9-2a10-4cd8-b63a-579a6e7ba78d",
            "OldApproverUserId": "692b6e2a-dd61-4872-866a-85498da390fc",
            "OldApproverDisplayName": "[FabrikamFiber]\\Build Administrators",
            "NewApproverUserId": "fe95080b-bf07-655b-226d-e8dcc066252c",
            "NewApproverDisplayName": "Jack Fabrikam",
            "Comment": "All admins are OOO"
        },
        "Details": "Reassigned approver of Approval dae6e7c9-9a10-4cd8-b63a-579a6e7ba78d in Project \"FabrikamFiber\" from \"[FabrikamFiber]\\Build Administrators\" to \"Jack Fabrikam\" with comment \"All admins are OOO\".",
        "Area": "Checks",
        "Category": "Modify",
        "CategoryDisplayName": "Modify",
        "ActorDisplayName": "Silviu"
    }
]

Darüber hinaus wird sie in der Überwachungs-UI angezeigt.

Protokolleintrag in der Überwachungs-UI

Die Aufgabenbibliothek macht das Agent-Hostingmodell verfügbar.

Task Authors that want to determine whether an agent is running in Microsoft-hosted pools or not can now use Task Library function getAgentMode() to determine the hosting model. Dies ist in Szenarien nützlich, in denen eine Aufgabe das Verhalten beeinflussen möchte, basierend auf dem Zugriff auf das Netzwerk eines Kunden oder nicht. Eine Aufgabe versucht möglicherweise, einen Azure-Dienst über einen privaten Endpunkt zu erreichen, wenn er von einem selbst gehosteten Agent oder scale-set-Agents ausgeführt wird, die sich im Netzwerk eines Kunden befinden. Siehe Vorgangsreferenz.

Nächste Schritte

Hinweis

Diese Features werden in den nächsten zwei bis drei Wochen eingeführt.

Wechseln Sie zu Azure DevOps, und sehen Sie sich an.

Senden von Feedback

Wir würden uns freuen zu hören, was Sie zu diesen Features halten. Verwenden Sie das Hilfemenü, um ein Problem zu melden oder einen Vorschlag bereitzustellen.

Einen Vorschlag unterbreiten

Sie können auch Ratschläge und Ihre Fragen von der Community in Stack Overflow beantworten lassen.

Vielen Dank,

Vijay Machiraju