支援存放庫和容器資源定義的範本運算式

透過此更新,我們在存放庫和容器資源定義中包含範本運算式的支援。 現在,您可以在 YAML 管線中定義 ref 資源的 屬性 repository 來選擇存放庫資源的分支時,可以使用範本運算式。 此外,我們已在 YAML 管線中定義 endpoint 資源的 、 volumesportsoptions 屬性 container 時,新增範本運算式的支援。

如需詳細資訊,請參閱版本資訊。

Azure Boards

Azure Pipelines

Azure Boards

先前,變更工作專案連結至少需要三個步驟才能完成。 例如,若要將父連結變更為相關連結,您需要複製工作專案識別碼、移除父連結、新增與類型相關的新現有連結,最後貼上複製的識別碼並儲存。 這是一個麻煩的程式。

我們可讓您直接編輯和變更連結類型來解決問題。 您只要一個步驟即可快速變更連結類型。

Gif 示範編輯工作專案連結類型。

注意

這項功能僅適用于New Boards Hubs預覽版。

建立暫存查詢 REST 端點

我們已看到數個擴充作者實例嘗試透過查詢字串傳遞工作專案查詢語言 (WIQL) 語句來執行未儲存的查詢。 除非您有達到查詢字串長度的瀏覽器限制的大型 WIQL 語句,否則這可以正常運作。 為了解決此問題,我們已建立新的 REST 端點,以允許工具作者產生暫存查詢。 使用來自回應的識別碼透過 querystring 傳遞,可消除此問題。

如需詳細資訊,請參閱 暫存查詢 REST API 檔頁面

批次刪除 API (私人預覽版)

目前,從回收站移除工作專案的唯一方式是使用此 REST API 一次刪除一個。 這可以是緩慢的程式,而且在嘗試進行任何類型的大量清除時,會受限於速率限制。 為了回應,我們已新增 REST API 端點,以批次刪除和/或終結工作專案。

如果您有興趣參與這個新端點的私人預覽版,請 直接傳送電子郵件給我們

@CurrentIteration 傳遞計畫中的宏

透過此更新,我們已新增傳遞計畫中樣式宏的支援 @CurrentIteration 。 此宏可讓您從方案中每個資料列的小組內容取得目前的反復專案。

Gif 以示範 Delivery Plans 中的 CurrentIteration 宏。

Azure Pipelines

存放庫資源定義的範本運算式

我們已在 YAML 管線中定義 ref 資源的 屬性 repository 時,新增範本運算式的支援。 這是我們的開發人員社群高度要求的功能

當您想要讓管線簽出相同存放庫資源的不同分支時,有一個使用案例。

例如,假設您有一個管線可建置自己的存放庫,因此需要從資源存放庫取出程式庫。 此外,假設您想要讓管線簽出與本身所使用的相同程式庫分支。 例如,如果您的管線在 main 分支上執行,它應該取出 main 程式庫存放庫的分支。 如果管線在分支上 dev 執行,它應該會簽出連結 dev 庫分支。

到目前為止,您必須明確指定分支來簽出,並在分支變更時變更管線程式碼。

現在,您可以使用範本運算式來選擇存放庫資源的分支。 請參閱下列 YAML 程式碼範例,以用於管線的非主要分支:

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

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

當您執行管線時,您可以指定要簽出存放庫的 library 分支。

指定要在組建佇列時間擴充的範本版本

範本 代表減少程式碼重複 改善管線安全性的絕佳方式。

其中一個熱門的使用案例是將範本儲存在自己的存放庫中。 這樣可減少範本與擴充範本與管線之間的結合,並讓您更輕鬆地獨立發展範本和管線。

請考慮下列範例,其中範本用來監視步驟清單的執行。 範本程式碼位於存放 Templates 庫中。

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

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

假設您有一個擴充此範本的 YAML 管線,位於存放庫 FabrikamFiber 。 目前為止,您無法在使用存放庫作為範本來源時動態指定 ref 存放庫資源的 屬性 templates 。 這表示如果您想要讓管線變更管線的程式碼:從不同的分支擴充範本,請從與管線相同的分支名稱擴充範本,而不論您執行管線的分支為何

透過在存放庫資源定義中引進範本運算式,您可以撰寫管線,如下所示:

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

如此一來,您的管線會擴充與管線執行所在分支相同的分支中的範本,因此您可以確定管線和範本的分支一律相符。 也就是說,如果您在分支 dev 上執行管線,它會擴充存放庫分支 templatesdev 檔案所 template.yml 指定的範本。

或者,您可以撰寫下列 YAML 程式碼,在組建佇列時間選擇要使用的範本存放庫分支。

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

現在,您可以在分支上讓管線在分支 main 上從分支擴充一個執行中的範本,並從另一個執行中的分支 devmain 擴充範本,而不需變更管線的程式碼。

指定存放庫資源屬性的範本運算式 ref 時,您可以使用 parameters 和 系統預先定義的變數,但無法使用 YAML 或 Pipelines UI 定義的變數。

容器資源定義中的範本運算式

我們已在 YAML 管線中定義 endpoint 資源的 、 volumesportsoptions 屬性 container 時,新增範本運算式的支援。 這是我們的開發人員社群高度要求的功能

現在,您可以撰寫 YAML 管線,如下所示。

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'

您可以在範本運算式中使用 parameters.variables. 。 針對變數,您只能使用 YAML 檔案中定義的變數,但不能使用 Pipelines UI 中定義的變數。 例如,如果您重新定義變數,則使用代理程式記錄命令不會有任何作用。

稽核核准變更的事件

核准 可讓您控制何時應該執行階段。 這通常用來控制部署到生產環境的部署。 稽核 可讓您符合合規性需求,並監視 Azure DevOps 組織的安全性。

當使用者要求核准管線以部署至特定階段時,該使用者可以選擇將核准重新指派給其他人。

稽核核准變更的事件

到目前為止,這類動作並未記錄在稽核記錄中。 此問題現已修正。

稽核記錄將包含類似下列的專案。

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

此外,它也會顯示在稽核 UI 中。

稽核 UI 中的記錄專案

工作程式庫會公開代理程式裝載模型

想要判斷代理程式是否在 Microsoft 裝載集區中執行的工作作者現在無法使用工作程式庫函式 getAgentMode() 來判斷主控模型。 這在工作想要根據存取客戶網路而影響行為的情況下很有説明。 如果工作是從位於客戶網路的自我裝載代理程式或擴展集代理程式執行,則工作可能會嘗試透過私人端點連線到 Azure 服務。 請參閱 工作參考

後續步驟

注意

這些功能將在接下來兩到三周推出。

請前往 Azure DevOps 並查看。

如何提供意見反應

我們希望聽到您對這些功能的想法。 使用說明功能表來回報問題或提供建議。

提供建議

您也可以在 Stack Overflow上取得社群所回答的建議和您的問題。

感謝您!

Vijay Machiraju