Delen via


Ondersteuning voor sjabloonexpressies in opslagplaats- en containerresourcedefinities

Met deze update hebben we ondersteuning opgenomen 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 endpoint, volumesen portsoptions eigenschappen van een container resource in een YAML-pijplijn.

Bekijk de releaseopmerkingen voor meer informatie.

Azure Boards

Azure-pipelines

Azure Boards

Voor het wijzigen van een koppeling naar een werkitem zijn eerder ten minste drie stappen vereist. Als u bijvoorbeeld een bovenliggende koppeling wilt wijzigen in een gerelateerde koppeling, moet u de id van het werkitem 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 lastig proces.

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

Gif om koppelingstypen voor werkitems te demo's te bewerken.

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 instanties van auteurs van extensies gezien die proberen niet-opgeslagen query's uit te voeren door de WIQL-instructie (Work Item Query Language) door te geven via de querytekenreeks. Dit werkt prima, tenzij u een grote WIQL-instructie hebt die de browserlimieten bereikt voor de lengte van de queryreeks. 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 van het antwoord gebruikt om via querytekenreeksen door te geven, wordt dit probleem opgelost.

Meer informatie vindt u op de documentatiepagina van de REST API voor tijdelijke query's.

Batch-API verwijderen (beperkte preview)

Momenteel is de enige manier om werkitems uit de Prullenbak te verwijderen deze REST API te gebruiken om één voor één te verwijderen. Dit kan een traag proces zijn en is onderhevig aan snelheidsbeperking bij het uitvoeren van elke vorm van massaopruiming. Als reactie hebben we een nieuw REST API-eindpunt toegevoegd om werkitems in batch te verwijderen en/of te vernietigen.

Als u geïnteresseerd bent in een persoonlijke preview van dit nieuwe eindpunt, stuur ons dan rechtstreeks een e-mail.

@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 CurrentIteration-macro in bezorgingsplannen te demo's.

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 zeer aangevraagde functie van onze ontwikkelaarscommunity.

Er bestaan use cases wanneer u wilt dat uw pijplijn verschillende vertakkingen van dezelfde opslagplaatsresource uitcheckt.

Stel dat u een pijplijn hebt waarmee een eigen opslagplaats wordt gebouwd. Hiervoor moet u een bibliotheek uitchecken vanuit een resourceopslagplaats. Stel dat u wilt dat uw pijplijn dezelfde bibliotheekbranch uitcheckt als die van zichzelf. 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 nu toe moest u expliciet de vertakking opgeven die moet worden uitgecheckt en de pijplijncode wijzigen wanneer de vertakking wordt gewijzigd.

U kunt nu sjabloonexpressies gebruiken om de vertakking van een opslagplaatsresource te kiezen. Zie het volgende voorbeeld van YAML-code 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.

Geef de versie van een sjabloon op die tijdens de buildwachtrij moet worden uitgebreid

Sjablonen vormen een uitstekende manier om codeduplicatie te verminderen en de beveiliging van uw pijplijnen te verbeteren.

Een populaire use case is het huis van sjablonen in hun eigen opslagplaats. Dit vermindert de koppeling tussen een sjabloon en de pijplijnen die deze uitbreiden en maakt het eenvoudiger om de sjabloon en de pijplijnen onafhankelijk te ontwikkelen.

Bekijk het volgende voorbeeld, waarin een sjabloon wordt gebruikt om de uitvoering van een lijst met stappen te bewaken. 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 bevindt FabrikamFiber. Tot op heden was het niet mogelijk om de ref eigenschap van de templates opslagplaatsresource dynamisch op te geven bij het gebruik van de opslagplaats als sjabloonbron. Dit betekende dat u de code van de pijplijn moest wijzigen als u uw pijplijn wilde wijzigen: een sjabloon uit een andere vertakking uitbreiden van een sjabloon uit dezelfde vertakkingsnaam als uw pijplijn, ongeacht 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

Als u dit doet, wordt de sjabloon in dezelfde vertakking uitgebreid als de vertakking waarop de pijplijn wordt uitgevoerd, zodat u ervoor kunt zorgen dat de vertakkingen van uw pijplijn en sjabloon altijd overeenkomen. 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 ook kiezen voor het bouwen van wachtrijtijd, welke sjabloonopslagplaatsvertakking moet worden gebruikt, 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 uw pijplijn op vertakking main uitbreiden van een sjabloon uit de ene dev uitvoering 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 gebruiken en systeemgedefinieerde variabelen gebruiken parameters , maar u kunt geen YAML- of Pipelines UI-gedefinieerde variabelen gebruiken.

Sjabloonexpressies in containerresourcedefinitie

We hebben ondersteuning toegevoegd voor sjabloonexpressies bij het definiëren van de endpoint, volumesen portsoptions eigenschappen van een container resource in een YAML-pijplijn. Dit was een zeer aangevraagde functie van 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. in de sjabloonexpressies gebruikenparameters.. 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 deze geen effect.

Controlegebeurtenissen voor wijzigingen in goedkeuringen

Met goedkeuringen kunt u bepalen wanneer een fase moet worden uitgevoerd. Dit wordt vaak gebruikt om implementaties naar productieomgevingen te beheren. Met controle kunt u voldoen aan 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 toe te laten aan iemand anders.

Controlegebeurtenissen voor wijzigingen in goedkeuringen

Tot nu toe zijn 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"
    }
]

Daarnaast wordt deze weergegeven in de auditgebruikersinterface.

Logboekvermelding in auditgebruikersinterface

Taakbibliotheek maakt het hostmodel van agent beschikbaar

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

Volgende stappen

Notitie

Deze functies worden de komende twee tot drie weken uitgerold.

Ga naar Azure DevOps en kijk eens.

Feedback geven

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

Een suggestie doen

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

Met vriendelijke groet,

Vijay Machiraju