Ondersteuning voor sjabloonexpressies in opslagplaats- en containerresourcedefinities

Met deze update hebben we ondersteuning toegevoegd voor sjabloonexpressies in opslagplaats- en containerresourcedefinities. U kunt nu sjabloonexpressies gebruiken bij het definiëren van de ref eigenschap van een repository resource in een YAML-pijplijn om de vertakking van een opslagplaatsresource te kiezen. Daarnaast hebben we ondersteuning toegevoegd voor sjabloonexpressies bij het definiëren van de endpointeigenschappen , volumes, portsen options van een container resource in een YAML-pijplijn.

Bekijk de releaseopmerkingen voor meer informatie.

Azure Boards

Azure Pipelines

Azure Boards

Voorheen moest het wijzigen van een koppeling naar een werkitem ten minste drie stappen voltooien. Als u bijvoorbeeld een bovenliggende koppeling wilt wijzigen in een gerelateerde koppeling, moet u de werkitem-id kopiëren, de bovenliggende koppeling verwijderen, een nieuwe bestaande koppeling van het type gerelateerd toevoegen en ten slotte de gekopieerde id plakken en opslaan. Het is een omslachtig proces.

We hebben het probleem opgelost door u toe te staan het koppelingstype rechtstreeks te bewerken en te wijzigen. U kunt het koppelingstype snel wijzigen in slechts één stap.

Gif om te demo bewerken werkitem koppelingstypen.

Notitie

Deze functie is alleen beschikbaar in de preview-versie van New Boards Hubs.

Een tijdelijk REST-eindpunt voor query's maken

We hebben verschillende exemplaren gezien van extensieauteurs die proberen niet-opgeslagen query's uit te voeren door de WIQL-instructie (Work Item Query Language) door te geven via de querystring. Dit werkt prima, tenzij u een grote WIQL-instructie hebt die de browserlimieten voor de lengte van de querytekenreeks bereikt. Om dit op te lossen, hebben we een nieuw REST-eindpunt gemaakt waarmee auteurs van hulpprogramma's een tijdelijke query kunnen genereren. Als u de id uit het antwoord gebruikt om door te geven via querystring, wordt dit probleem opgelost.

Meer informatie op de documentatiepagina voor tijdelijke query's voor DE REST API.

Api voor batch verwijderen (beperkte preview)

Op dit moment kunt u werkitems alleen verwijderen uit de Prullenbak door deze REST API te gebruiken om een voor een te verwijderen. Dit kan een traag proces zijn en is onderhevig aan snelheidsbeperking bij het uitvoeren van een soort massa-opschoonbewerking. Als reactie hebben we een nieuw REST API-eindpunt toegevoegd om werkitems in batch te verwijderen en/of te vernietigen.

Als u wilt deelnemen aan een persoonlijke preview van dit nieuwe eindpunt, kunt u ons rechtstreeks een e-mail sturen.

@CurrentIteration macro in Bezorgingsplannen

Met deze update hebben we ondersteuning toegevoegd voor de @CurrentIteration macro voor stijlen in Bezorgingsplannen. Met deze macro kunt u de huidige iteratie ophalen uit de teamcontext van elke rij in uw plan.

Gif om de macro CurrentIteration te demo in Bezorgingsplannen.

Azure Pipelines

Sjabloonexpressies in resourcedefinitie van opslagplaats

We hebben ondersteuning toegevoegd voor sjabloonexpressies bij het definiëren van de ref eigenschap van een repository resource in een YAML-pijplijn. Dit was een veelgevraagde functie door onze ontwikkelaarscommunity.

Er zijn use-cases waarin u wilt dat uw pijplijn verschillende vertakkingen van dezelfde opslagplaatsresource uitcheckt.

Stel dat u een pijplijn hebt die een eigen opslagplaats bouwt en hiervoor een bibliotheek moet uitchecken vanuit een resourceopslagplaats. Stel dat u wilt dat uw pijplijn dezelfde bibliotheekbranch uitcheckt die zelf wordt gebruikt. Als uw pijplijn bijvoorbeeld wordt uitgevoerd op de main vertakking, moet deze de main vertakking van de bibliotheekopslagplaats uitchecken. Als de pijplijnen op de dev vertakking worden uitgevoerd, moet deze de dev bibliotheekbranch uitchecken.

Tot op heden moest u expliciet de vertakking opgeven om uit te checken en de pijplijncode wijzigen wanneer de vertakking werd gewijzigd.

U kunt nu sjabloonexpressies gebruiken om de vertakking van een opslagplaatsresource te kiezen. Zie het volgende voorbeeld van YAML-code die moet worden gebruikt voor de niet-hoofdvertakkingen van uw pijplijn:

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

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

Wanneer u de pijplijn uitvoert, kunt u de vertakking opgeven die moet worden uitgecheckt voor de library opslagplaats.

De versie van een sjabloon opgeven die tijdens de buildwachtrij moet worden uitgebreid

Sjablonen zijn een uitstekende manier om codeduplicatie te verminderen ende beveiliging van uw pijplijnen te verbeteren.

Een populair gebruiksvoorbeeld is om sjablonen in hun eigen opslagplaats te onderbrengen. Dit vermindert de koppeling tussen een sjabloon en de pijplijnen waarmee deze wordt uitgebreid en maakt het eenvoudiger om de sjabloon en de pijplijnen onafhankelijk van elkaar te ontwikkelen.

Bekijk het volgende voorbeeld, waarin een sjabloon wordt gebruikt om de uitvoering van een lijst met stappen te controleren. De sjablooncode bevindt zich in de Templates opslagplaats.

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

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

Stel dat u een YAML-pijplijn hebt die deze sjabloon uitbreidt, die zich in de opslagplaats FabrikamFiberbevindt. Tot op heden was het niet mogelijk om de eigenschap van de reftemplates opslagplaatsresource dynamisch op te geven wanneer de opslagplaats als sjabloonbron werd gebruikt. Dit betekende dat u de code van de pijplijn moest wijzigen als u wilt dat uw pijplijn: een sjabloon uitbreiden vanaf een andere vertakking een sjabloon uitbreiden met dezelfde vertakkingsnaam als uw pijplijn, ongeacht op welke vertakking u de pijplijn hebt uitgevoerd

Met de introductie van sjabloonexpressies in de resourcedefinitie van de opslagplaats kunt u uw pijplijn als volgt schrijven:

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

Hierdoor breidt uw pijplijn de sjabloon uit in dezelfde vertakking als de vertakking waarop de pijplijn wordt uitgevoerd, zodat u ervoor kunt zorgen dat de vertakkingen van uw pijplijn en sjabloon altijd overeenkomen. Dat wil gezegd, als u uw pijplijn uitvoert op een vertakking dev, wordt de sjabloon die is opgegeven door het template.yml bestand in de dev vertakking van de templates opslagplaats uitgebreid.

U kunt tijdens de buildwachtrij ook kiezen welke vertakking van de sjabloonopslagplaats u wilt gebruiken door de volgende YAML-code te schrijven.

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

U kunt nu met uw pijplijn op vertakking main een sjabloon uit een vertakking dev in één uitvoering laten uitbreiden en een sjabloon uitbreiden vanuit een vertakking main in een andere uitvoering, zonder de code van uw pijplijn te wijzigen.

Wanneer u een sjabloonexpressie opgeeft voor de ref eigenschap van een opslagplaatsresource, kunt u vooraf gedefinieerde variabelen en van het systeem gebruiken parameters , maar u kunt geen yaml- of door de gebruikersinterface gedefinieerde variabelen voor pijplijnen gebruiken.

Sjabloonexpressies in containerresourcedefinitie

We hebben ondersteuning toegevoegd voor sjabloonexpressies bij het definiëren van de endpointeigenschappen , volumes, portsen options van een container resource in een YAML-pijplijn. Dit was een veelgevraagde functie door onze ontwikkelaarscommunity.

U kunt nu YAML-pijplijnen schrijven zoals hieronder.

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'

U kunt en variables. gebruiken parameters. in uw sjabloonexpressies. Voor variabelen kunt u alleen de variabelen gebruiken die zijn gedefinieerd in het YAML-bestand, maar niet de variabelen die zijn gedefinieerd in de gebruikersinterface van Pijplijnen. Als u de variabele opnieuw definieert, bijvoorbeeld met behulp van agentlogboekopdrachten, heeft dit geen effect.

Controlegebeurtenissen voor wijzigingen in goedkeuringen

Met goedkeuringen kunt u bepalen wanneer een fase moet worden uitgevoerd. Dit wordt vaak gebruikt voor het beheren van implementaties in productieomgevingen. Met controle kunt u voldoen aan de nalevingsvereisten en de beveiliging van uw Azure DevOps-organisatie bewaken.

Wanneer een gebruiker wordt gevraagd een pijplijn goed te keuren voor implementatie in een bepaalde fase, kan die gebruiker ervoor kiezen om de goedkeuring opnieuw aan iemand anders toe te geven.

Controlegebeurtenissen voor wijzigingen in goedkeuringen

Tot nu toe werden dergelijke acties niet vastgelegd in de auditlogboeken. Dit probleem is nu opgelost.

De auditlogboeken bevatten een vermelding die er ongeveer als volgt uitziet.

[
    {
        "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"
    }
]

Bovendien wordt deze weergegeven in de auditgebruikersinterface.

Logboekvermelding in auditgebruikersinterface

Taakbibliotheek maakt hostingmodel voor agent beschikbaar

Taakauteurs die willen bepalen of een agent wordt uitgevoerd in door Microsoft gehoste pools of niet, kunnen nu de functie getAgentMode() Taakbibliotheek gebruiken om het hostingmodel te bepalen. Dit is handig in scenario's waarin een taak gedrag wil beïnvloeden op basis van het wel of niet hebben van toegang tot het netwerk van een klant. Een taak kan proberen een Azure-service te bereiken via een privé-eindpunt als deze wordt uitgevoerd vanuit een zelf-hostende agent of schaalsetagents die zich in het netwerk van een klant bevinden. Zie taakreferentie.

Volgende stappen

Notitie

Deze functies worden in de komende twee tot drie weken uitgerold.

Ga naar Azure DevOps en neem een kijkje.

Feedback geven

We horen graag wat u vindt van deze functies. Gebruik het menu Help om een probleem te melden of een suggestie te geven.

Een suggestie doen

U kunt ook advies krijgen en uw vragen worden beantwoord door de community op Stack Overflow.

Met vriendelijke groet,

Vijay Machiraju