wikiのページにサブページのテーブルを追加して、内容やリンクを確認できるようになりました。Boardsでは、スイムレーンに色を追加したり、カスタムフィールドを編集できないようにロックしたりできるようになりました。また、セキュリティへの投資を継続し、パイプラインの認可と承認・チェックを管理するための新しいPATスコープを追加しました。
詳しくは、リリースノートをご覧ください。
- パイプラインの権限管理エクスペリエンスを改善しました
- 短いシークレット値のマスキングを無効にできるようになりました
- 新しいPATスコープでパイプラインの認可と承認・チェックを管理できるようになりました
- 入力変数を使ったチェックができるようになりました
- パイプラインエージェントバージョンを自己チェックするためのスクリプトを提供します
- パイプラインの実行状態の概要をわかりやすくするアイコンを提供します
カスタムフィールドは、プロセス間で共有されます。プロセス管理者がフィールドの値を追加または削除できるようにしているため、ピックリストフィールドで問題が発生する可能性があります。この場合、そのフィールドを使用しているすべてのプロセスで、その変更が影響します。
この問題を解決するために、コレクション管理者がフィールドを編集できないように"lock"する機能が追加されました。ピックリストフィールドがロックされると、ローカルプロセスの管理者は、そのピックリストの値を変更できなくなります。プロセスからフィールドを追加または削除することだけが可能です。
Kanbanボードでは、スイムレーンを使って、さまざまなサービスレベルクラスをサポートする作業のステータスの視覚化ができます。スイムレーンに色を付けることで、ボード上で識別しやすくなりました。
PATトークンの漏洩による被害を抑えるために、Pipeline Resources
という名前の新しいPATスコープを追加しました。このPATスコープは、サービス接続などの保護されたリソースを使用してパイプラインの認可の管理や、そのリソースの承認やチェックを管理する際に使用できます。
次のスプリントでは、REST APIの呼び出しに必要な権限が次のように変更されます。
- 承認の更新には、
Pipeline Resources Use
をスコープとするPATが必要になります。 - チェックの管理には、
Pipeline Resources Use and Manage
をスコープとするPATが必要です。 - リソースのパイプライン権限を更新するには、
Pipeline Resources Use and Manage
をスコープとするPATが必要です。 - 定義リソースの承認には、
Pipeline Resources Use and Manage
のスコープを持つPATが必要です。 - プロジェクトリソースの承認リソースには、
Pipeline Resources Use and Manage
のスコープを持つ PAT が必要です。
パイプラインの権限管理に関するエクスペリエンスを改善し、パイプラインが以前にサービス接続などの保護されたリソースを使用したことがあるかどうかを権限管理システムが記憶するようにしました。
以前は、保護されたリソースの作成時に"Grant access permission to all pipelines"(すべてのパイプラインにアクセス許可を与える)をチェックオフした後、リソースへのアクセスを制限すると、パイプラインがリソースを使用するために新しい権限が必要になりました。この動作は、新しい認証が必要でないリソースへのアクセスをその後開いたり閉じたりするときと矛盾していました。これは現在修正されています。
Approvals and checksは、リソースの所有者がどのパイプラインの実行が自分のリソースを使用できるかを制御できるようにするランタイムセキュリティメカニズムです。
よく使われるチェックは、Invoke Azure FunctionとInvoke REST APIの2つです。以前は、これらを設定する場合、定義済みのシステム変数または変数グループのみを使用することができました。
今回のスプリントでは、パイプラインで定義された変数をサポートしました。これは、Function key、Header、Body、Queryの各パラメータを指定してチェックを行う場合に有効です。
例えば、次のようなYAMLパイプラインがあるとします。変数 FunctionKey
, MyHeader
, MyBody
, MyQuery
とランタイム定義変数RetryCount
を定義していることに注意してください。
variables:
FunctionKey: <<redacted>>
MyHeader: "FabrikamHeader"
MyQuery: "FabrikamQuery"
MyBody: "FabrikamBody"
stages:
- stage: Build
jobs:
- job: SetRC
steps:
- script: echo "##vso[task.setvariable variable=RetryCount;isOutput=true]3"
name: RCValue
- stage: Deploy
jobs:
- deployment:
environment: Production
strategy:
runOnce:
deploy:
steps:
- script: ./deploy.sh
本番環境では、以下のスクリーンショットのように、$(FunctionKey)
、$(MyHeader)
、$(MyBody)
、$(MyQuery)
、$(Build.SetRC.RCValue.RetryCount)
を参照して、Invoke Azure Functionチェックの構成ができます。
ランタイムで定義された変数を使用するための構文は、StageId.JobId.StepOrTaskName.Variable
です。
詳しくはInvoke Azure Function & REST API の推奨使用方法についてをご覧ください。
Azure Pipelinesは、ログに含まれるシークレットをマスクします。シークレットは、シークレットとしてマークされた変数、Azure Key Vaultにリンクされた変数グループの変数、またはサービス接続プロバイダーによってシークレットとしてマークされたサービス接続の要素である可能性があります。
シークレット値のすべての出現はマスクされます。'1
'、'2
'、'Dev
' などの短い秘密値をマスクすると、その値を簡単に推測できるようになります。例えば'Jan 3, 202***
'のような日付の場合です。
この場合、'3
' が秘密であることは明らかです。このような場合、秘密を完全に隠さない方がいいかもしれません。値をシークレットとしないことが不可能な場合(Key Vaultから値を取得するなど)、AZP_IGNORE_SECRETS_SHORTER_THAN
ノブを最大4までの値に設定可能です。
現在、Pipelineエージェントには、v2が.NET 3.1 Core、v3が.NET 6というふたつのバージョンがあります。v3エージェントはサポートされているオペレーティングシステムに徐々にロールアウトしており、その後v2エージェントは廃止される予定です。詳細については、the upgrade of .NET agent for Azure Pipelines blog postを参照してください。
セルフホストエージェントがアップグレードできるかどうかを確認するためのスクリプトを作成しました。このスクリプトは、組織内のすべてのプールを処理し、v3エージェントでサポートされていないオペレーティングシステム上のv2エージェントを特定します(例:CentOS 6、Fedoraバージョン31以前、macOS 10.14、RHEL 6)。
注意事項
v2エージェントの最近のビルドでは、v3エージェントと互換性がないことが分かっているOS上では、v3エージェントへの自動アップグレードを試みないようにします。
このスプリントでは、パイプラインの実行状況を全体的に把握しやすくしています。
多くのステージを持つYAMLパイプラインでは、パイプラインの実行状況、つまりまだ実行中なのか終了したのかを知るのは難しいことでした。また、終了した場合、全体的な状態はどうなっているのか、成功したのか、失敗したのか、キャンセルされたのか、などです。この問題を解決するために、実行状況の概要を示すアイコンを追加しました。
Wikiのページに、サブページの内容のテーブルを追加できるようになりました。このテーブルはサブページのテーブルが表示されているページの下にあるすべてのサブページへのリンクを持っています。
サブページのテーブルを追加するには、以下のアニメーション画像に示すように、特別なタグ[[_TOSP_]]
を手動で挿入するか、More optionsから追加します。サブページのテーブルを作成するには、最初の[[_TOSP_]]
タグだけが使用されます。
この機能は、以下のコミュニティからの提案チケットに基づいて優先的に実装されました。
注意事項
ここで議論されている機能は今後二~三週にわたって順次展開されます。
Azure DevOpsサービスを体験してみてください。
これらの機能についてどう思っているかお聞きしたいと思います。 フィードバックメニューを使用して問題を報告するか、提案を提出してください。
アドバイスや回答を必要とする質問がある場合、Stack Overflowコミュニティで聞いてください。
ありがとうございました。
Rajesh Ramamurthy