Share via


Stöd för malluttryck i databas- och containerresursdefinitioner

Med den här uppdateringen har vi inkluderat stöd för malluttryck i databas- och containerresursdefinitioner. Nu kan du använda malluttryck när du definierar ref egenskapen för en repository resurs i en YAML-pipeline för att välja grenen för en lagringsplatsresurs. Dessutom har vi lagt till stöd för malluttryck när du definierar endpointegenskaperna , volumes, portsoch options för en container resurs i en YAML-pipeline.

Mer information finns i viktig information.

Azure-tavlor

Azure-pipelines

Azure-tavlor

Tidigare kräver det minst tre steg för att ändra en länk till arbetsobjektet. Om du till exempel vill ändra en överordnad länk till en relaterad länk måste du kopiera arbetsobjektets ID, ta bort den överordnade länken, lägga till en ny befintlig länk av typen relaterad och slutligen klistra in det kopierade ID:t och spara. Det är en besvärlig process.

Vi löste problemet genom att låta dig redigera och ändra länktypen direkt. Du kan snabbt ändra länktypen i bara ett steg.

Gif för att demoredigera länktyper för arbetsobjekt.

Anteckning

Den här funktionen är bara tillgänglig med förhandsversionen av New Boards Hubs.

Skapa tillfällig fråge-REST-slutpunkt

Vi har sett flera instanser av tilläggsförfattare som försöker köra osparade frågor genom att skicka WIQL-instruktionen (Work Item Query Language) via frågesträngen. Detta fungerar bra om du inte har en stor WIQL-instruktion som når webbläsarens gränser för frågesträngslängd. För att lösa detta har vi skapat en ny REST-slutpunkt som gör det möjligt för verktygsförfattare att generera en tillfällig fråga. Om du använder ID:t från svaret för att skicka via querystring eliminerar du det här problemet.

Läs mer på dokumentationssidan för REST API för temp-frågor.

BATCH-borttagnings-API (privat förhandsversion)

För närvarande är det enda sättet att ta bort arbetsobjekt från papperskorgen att använda det här REST-API: et för att ta bort ett i taget. Detta kan vara en långsam process och är föremål för hastighetsbegränsning när du försöker göra någon form av massrensning. Som svar har vi lagt till en ny REST API-slutpunkt för att ta bort och/eller förstöra arbetsobjekt i batch.

Om du är intresserad av att delta i en privat förhandsversion av den här nya slutpunkten kan du skicka ett e-postmeddelande direkt till oss.

@CurrentIteration makro i leveransplaner

Med den här uppdateringen har vi lagt till stöd för makrot @CurrentIteration för formatmallar i Leveransplaner. Med det här makrot kan du hämta den aktuella iterationen från gruppkontexten för varje rad i planen.

Gif för att demonstrera CurrentIteration-makro i Leveransplaner.

Azure-pipelines

Malluttryck i resursdefinition för lagringsplats

Vi har lagt till stöd för malluttryck när du ref definierar egenskapen för en repository resurs i en YAML-pipeline. Det här var en funktion som efterfrågades av vår utvecklarcommunity.

Det finns användningsfall när du vill att pipelinen ska checka ut olika grenar av samma lagringsplatsresurs.

Anta till exempel att du har en pipeline som skapar en egen lagringsplats, och för detta måste den checka ut ett bibliotek från en resurslagringsplats. Anta dessutom att du vill att din pipeline ska checka ut samma biblioteksgren som den använder. Om din pipeline till exempel körs på grenen main bör den checka ut grenen main av biblioteksrepoen. Om pipelines körs på grenen dev bör den checka ut biblioteksgrenen dev .

Fram till idag var du tvungen att uttryckligen ange grenen för att checka ut och ändra pipelinekoden när grenen ändras.

Nu kan du använda malluttryck för att välja grenen för en lagringsplatsresurs. Se följande exempel på YAML-kod som ska användas för de icke-huvudsakliga grenarna i din pipeline:

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

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

När du kör pipelinen kan du ange grenen för att checka ut för lagringsplatsen library .

Ange vilken version av en mall som ska utökas vid byggkö

Mallar är ett bra sätt att minska koddupliceringen ochförbättra säkerheten för dina pipelines.

Ett populärt användningsfall är att inhysa mallar på sin egen lagringsplats. Detta minskar kopplingen mellan en mall och pipelines som utökar den och gör det enklare att utveckla mallen och pipelines oberoende av varandra.

Tänk dig följande exempel, där en mall används för att övervaka körningen av en lista med steg. Mallkoden finns på lagringsplatsen Templates .

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

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

Anta att du har en YAML-pipeline som utökar den här mallen, som finns på lagringsplatsen FabrikamFiber. Fram till idag gick det inte att ange ref egenskapen templates för lagringsplatsens resurs dynamiskt när lagringsplatsen användes som mallkälla. Detta innebar att du var tvungen att ändra koden för pipelinen om du ville att din pipeline skulle: utöka en mall från en annan gren utöka en mall från samma grennamn som din pipeline, oavsett vilken gren du körde din pipeline på

Med introduktionen av malluttryck i resursdefinitionen för lagringsplatsen kan du skriva din pipeline på följande sätt:

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

Genom att göra det utökar pipelinen mallen i samma gren som den gren där pipelinen körs, så att du kan se till att pipelinens och mallens grenar alltid matchar varandra. Om du kör pipelinen på en gren devutökas alltså mallen template.yml som anges av filen i -grenen dev av lagringsplatsen templates .

Eller så kan du välja vilken malllagringsplatsgren som ska användas när du skapar kö genom att skriva följande YAML-kod.

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

Nu kan du låta din pipeline på grenen main utöka en mall från grenen dev i en körning och utöka en mall från grenen main i en annan körning, utan att ändra koden för din pipeline.

När du anger ett malluttryck för egenskapen för ref en lagringsplatsresurs kan du använda parameters och systemfördefinierade variabler, men du kan inte använda YAML- eller Pipelines UI-definierade variabler.

Malluttryck i containerresursdefinition

Vi har lagt till stöd för malluttryck när du definierar endpointegenskaperna , volumes, portsoch options för en container resurs i en YAML-pipeline. Det här var en funktion som efterfrågades av vår utvecklarcommunity.

Nu kan du skriva YAML-pipelines som följande.

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'

Du kan använda parameters. och variables. i malluttrycken. För variabler kan du bara använda de som definierats i YAML-filen, men inte de som definierats i användargränssnittet för pipelines. Om du omdefinierar variabeln, till exempel med hjälp av agentloggkommandon, har den ingen effekt.

Granska händelser för ändringar i godkännanden

Med godkännanden kan du styra när en fas ska köras. Detta används ofta för att styra distributioner till produktionsmiljöer. Med granskning kan du uppfylla efterlevnadskraven och övervaka säkerheten för din Azure DevOps-organisation.

När en användare uppmanas att godkänna en pipeline för distribution till en viss fas kan användaren välja att tilldela om godkännandet till någon annan.

Granska händelser för ändringar i godkännanden

Hittills har sådana åtgärder inte loggats i granskningsloggarna. Det här problemet har åtgärdats nu.

Granskningsloggarna innehåller en post som liknar följande.

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

Dessutom visas den i användargränssnittet för granskning.

Loggpost i granskningsgränssnittet

Aktivitetsbiblioteket exponerar agentvärdmodellen

Uppgiftsförfattare som vill avgöra om en agent körs i Microsoft-värdbaserade pooler eller inte kan nu använda funktionen getAgentMode() Aktivitetsbibliotek för att fastställa värdmodellen. Detta är fördelaktigt i scenarier där en uppgift vill påverka beteendet baserat på att ha åtkomst till en kunds nätverk eller inte. En uppgift kan försöka nå en Azure-tjänst via en privat slutpunkt om den körs från en lokalt installerad agent eller skalningsuppsättningsagenter som finns i en kunds nätverk. Se uppgiftsreferens.

Nästa steg

Anteckning

De här funktionerna kommer att lanseras under de kommande två till tre veckorna.

Gå till Azure DevOps och ta en titt.

Så här ger du feedback

Vi vill gärna höra vad du tycker om dessa funktioner. Använd hjälpmenyn för att rapportera ett problem eller ge ett förslag.

Ge ett förslag

Du kan också få råd och dina frågor som besvaras av communityn på Stack Overflow.

Tack,

Vijay Machiraju