次の方法で共有


リポジトリおよびコンテナー リソース定義でのテンプレート式のサポート

この更新プログラムでは、リポジトリとコンテナー リソース定義でのテンプレート式のサポートが含まれています。 これで、YAML パイプラインでrepository リソースのref プロパティを定義するときにテンプレート式を使用して、リポジトリ リソースのブランチを選択できるようになりました。 さらに、YAML パイプラインでcontainer リソースのendpointvolumesports、およびoptionsプロパティを定義するときのテンプレート式のサポートが追加されました。

詳細については、リリース ノートを参照してください。

Azure Boards

Azure Pipelines

Azure Boards

以前は、作業項目リンクを変更するには、少なくとも 3 つの手順が必要です。 たとえば、関連リンクへの親リンクを変更するには、作業項目 ID をコピーし、親リンクを削除し、関連する種類の新しい既存のリンクを追加して、最後にコピーした ID を貼り付けて保存する必要があります。 面倒なプロセスです。

リンクの種類を直接編集および変更できるようにすることで、問題を解決しました。 リンクの種類は、1 つの手順で簡単に変更できます。

GIF を使用して作業項目のリンクの種類を編集します。

Note

この機能は、 新しい Boards Hubs プレビューでのみ使用できます。

一時クエリ REST エンドポイントを作成する

クエリ文字列を使用して作業項目クエリ言語 (WIQL) ステートメントを渡すことで、保存されていないクエリを実行しようとしている拡張機能作成者のインスタンスがいくつか見られました。 これは、クエリ文字列の長さに関するブラウザーの制限に達する大きな WIQL ステートメントがない限り、正常に動作します。 これを解決するために、ツールの作成者が一時的なクエリを生成できるように、新しい REST エンドポイントを作成しました。 応答の ID を使用して querystring 経由で渡すと、この問題は解消されます。

詳細については、rest API のドキュメント ページを参照してください。

バッチ削除 API (プライベート プレビュー)

現在、ごみ箱から作業項目を削除する唯一の方法は、この REST API を使用して一度に 1 つずつ削除することです。 これはプロセスが遅くなる可能性があり、何らかの種類の大量クリーンアップを実行しようとするとレート制限の対象になります。 これに対して、作業項目を一括で削除または破棄する新しい REST API エンドポイントを追加しました。

この新しいエンドポイントのプライベート プレビューに参加したい場合は、直接 メールでお問い合わせください

@CurrentIteration 配信計画のマクロ

この更新プログラムでは、配信プランのスタイルの @CurrentIteration マクロのサポートが追加されました。 このマクロを使用すると、プランの各行のチーム コンテキストから現在のイテレーションを取得できます。

配信プランで CurrentIteration マクロをデモする Gif。

Azure Pipelines

リポジトリ リソース定義のテンプレート式

YAML パイプラインでrepository リソースのref プロパティを定義するときのテンプレート式のサポートが追加されました。 これは、開発者コミュニティ 要求された機能でした

パイプラインで同じリポジトリ リソースのさまざまなブランチをチェックアウトする場合は、ユース ケースが存在します。

たとえば、独自のリポジトリを構築するパイプラインがあるとします。そのためには、リソース リポジトリからライブラリをチェックアウトする必要があります。 さらに、パイプラインで、それ自体が使用しているのと同じライブラリ ブランチをチェックアウトするとします。 たとえば、パイプラインが 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 リポジトリをチェックアウトするブランチを指定できます。

ビルド キュー時に拡張するテンプレートのバージョンを指定する

テンプレートは、コードの重複を減らす優れた方法を表 パイプラインのセキュリティを強化します

一般的なユース ケースの 1 つは、独自のリポジトリにテンプレートを格納することです。 これにより、テンプレートとそれを拡張するパイプライン間の結合が減り、テンプレートとパイプラインを個別に簡単に進化させることができます。

次の例では、手順の一覧の実行を監視するためにテンプレートを使用します。 テンプレート コードは、 Templates リポジトリにあります。

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

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

リポジトリ FabrikamFiberにあるこのテンプレートを拡張する YAML パイプラインがあるとします。 今日まで、リポジトリをテンプレート ソースとして使用する場合、templates リポジトリ リソースの ref プロパティを動的に指定することはできませんでした。 つまり、パイプラインを実行したブランチに関係なく、パイプラインのコードを変更する必要がありました。別のブランチからテンプレートを拡張すると、パイプラインと同じブランチ名からテンプレートが拡張されます。

リポジトリ リソース定義でのテンプレート式の導入により、パイプラインを次のように記述できます。

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でパイプラインを実行すると、templates リポジトリの dev ブランチの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 、1 回の実行でブランチ dev からテンプレートを拡張し、パイプラインのコードを変更せずに、ブランチ main から別の実行でテンプレートを拡張できるようになりました。

リポジトリ リソースの ref プロパティにテンプレート式を指定する場合は、 parameters およびシステムの定義済み変数を使用できますが、YAML または Pipelines UI で定義された変数を使用することはできません。

コンテナー リソース定義のテンプレート式

YAML パイプラインでcontainer リソースのendpointvolumesports、およびoptionsプロパティを定義するときのテンプレート式のサポートが追加されました。 これは、開発者コミュニティ 要求された機能でした

これで、次のような 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 サービスに到達しようとする可能性があります。 task リファレンスを参照してください。

次のステップ

Note

これらの機能は、今後 2 ~ 3 週間にわたってロールアウトされます。

Azure DevOps に向かい、見てみましょう。

フィードバックの提供方法

これらの機能に関するご意見をお聞かせください。 ヘルプ メニューを使用して、問題を報告したり、提案を提供したりします。

ご提案の送信

Stack Overflow のコミュニティからアドバイスや質問に回答してもらうこともできます。

よろしくお願いします。

ヴィジャイ・マクラジュ