Skip to content

Instantly share code, notes, and snippets.

@kkamegawa
Created September 29, 2024 06:20
Show Gist options
  • Save kkamegawa/4651ec4c364d1d22b8624d935d921a0a to your computer and use it in GitHub Desktop.
Save kkamegawa/4651ec4c364d1d22b8624d935d921a0a to your computer and use it in GitHub Desktop.

Enhanced AB# link tracking in GitHub pull requests

In this article

今回の更新により、AB#リンクがPull requestの説明に含まれている場合、GitHubPull requestのDevelopmentセクションに直接表示されるようになりました。この強化により、Azure BoardsとGitHubの統合を通じてリンクされた作業項目へのアクセスが簡素化されます。

また、リポジトリの健康状態をよりよく把握し、そのパフォーマンスを効率的に維持するための強化された監視ツールも導入しました!

詳細についてはリリースノートをご覧ください。

以前はブランチピッカーにPull requestのブランチは表示されていませんでしたが、Pull requestのブランチでのスキャンは可能でした。今回の更新でこれらのブランチが高度なセキュリティブランチピッカーに表示され、検索できるようになりました。

Screenshot of Pull request branches.

以前は、デフォルトブランチが変更された際に、Advanced Securityリポジトリタブが自動的に更新されず、ブランチピッカーで新しいブランチを手動で選択する必要がありました。今回の更新で、このタブはページを訪れると新しく指定されたデフォルトブランチを自動的に検出してアラートを表示します。

さらに、セキュリティ概要もデフォルトブランチの変更を反映するように更新されますが、更新されたアラート結果が処理されるまでに若干の遅延が発生する場合があります。

サードパーティのスキャニングツールからの結果をAdvanced Securityコードスキャニングタブに表示するためにアップロードできるようになりました。

SARIF 2.1標準に準拠し、$(Agent.TempDirectory)/.advsecディレクトリにSARIFファイルを公開するスキャニングツールを使用し、タスクの後にAdvancedSecurity-Publish@1を実行すると、結果がコードスキャニングタブにアップロードされます。

注意事項

SARIFファイル内の結果に関連付けられたファイルパスは、ビルドエージェントで実行されているAdvancedSecurity-Publish@1タスクからアクセス可能でなければなりません。

以前は、同じフィンガープリント、ハッシュ、ツール、およびルール名を持つサードパーティツールの結果は、ルールIDが異なっていても1つのアラートにまとめられていました。

今回の更新で、フィンガープリントにルールIDが含まれるようになり、他のデータポイントが同じであっても、異なるルールIDを持つ結果には別々のアラートが作成されます。既存のアラートも更新され、適宜分割されます。

Advanced Securityのロードマップ項目Pull-request annotationsに記載されているように、依存関係またはコードスキャンタスクを含むパイプラインにリンクされたビルド検証ポリシーを使用するPull requestに対して、インライン注釈を受け取ることができるようになりました。

オプトインは不要です。関連するブランチに対してビルド検証ポリシーを作成するだけです。

注釈内のShow more detailsをクリックすると、アラートの詳細ビューに移動します。

Screenshot of In-line annotations.

Azure BoardsとGitHubの統合を強化するための継続的な改善の一環として、AB#リンクの表示方法を簡素化する新機能を導入しました。今回の更新により、AB#リンクがGitHubPull requestの開発セクションに直接表示されるようになり、説明やコメントを探すことなくリンクされた作業項目にアクセスしやすくなります。

Screenshot of GitHub pull requests.

これらのリンクは、Pull requestの説明にAB#が含まれている場合にのみ表示されます。作業項目から直接リンクした場合、それらはDevelopmentセクションには表示されません。さらに、説明からAB#リンクを削除すると、Developmentコントロールからも削除されます。

Azure DevOpsプロジェクトにGitHubリポジトリを追加および削除する自動化を可能にする新しいREST APIエンドポイントを導入しています。さらに、これらのエンドポイントを使用する際の接続ごとのリポジトリ制限を500から2,000に増やしました。

これらのエンドポイントには以下が含まれます。

また、開始するためのサンプルコードも提供しています。

場合によっては、作業項目から添付ファイルを削除するだけではセキュリティリスクが完全に解決されないことがあります。特に、ファイルが悪意のあるものとしてフラグ付けされている場合です。添付ファイルへの共有リンクは、他の作業項目、コメント、または外部チャネルで依然としてアクセス可能な場合があります。これに対処するために、"Permanently delete work items"権限を持つユーザーが添付ファイルを完全に削除できる機能を追加しました。

作業項目の添付ファイルを完全に削除するスクリーンショット。

この操作は、作業項目フォームの添付ファイルタブの"Deleted Attachments"という新しいセクションから実行できます。このセクションは、作業項目を完全に削除するための必要な権限を持つユーザーにのみ表示されます。

添付ファイルが完全に削除されると、関連するすべてのリンクは"File attachment does not exist"というエラーを返します。

注意事項

この機能はNew Boards Hubを有効にしている場合のみ使用可能です。

Gitリポジトリが成長するにつれて、コミット、ブロブ、およびその他のデータが蓄積され、Azure DevOpsインフラストラクチャへの負荷が増加し、パフォーマンスやユーザーエクスペリエンスに影響を与える可能性があります。リポジトリを健全に保つことは、一貫したパフォーマンスと信頼性を確保するための鍵です。

これをサポートするために、リポジトリのサイズ、コミット頻度、内容、および構造などのいくつかの要因を監視するようになりました。リポジトリがインフラストラクチャに負担をかけ始めた場合、是正措置の推奨事項を含む通知を受け取ることがあります。リポジトリの健全性を管理することで、障害を防ぎ、スムーズな運用を確保できます。

リポジトリの健全性を確認するには、Azure Reposに移動し、Fileを選択して、三点リーダーメニューから"Health and usage"を選択して、リポジトリの健全性と使用状況パネルにアクセスします。

Screenshot of Health and usage.

Azure Pipelineエージェントv3は現在.NET 6を使用していますが、.NET 6のサポート終了が近づいているため、エージェントを.NET 8にアップグレードします。このアップデートは今後数週間で展開されます。

.NET 8がサポートされていないオペレーティングシステムでセルフホストエージェントを使用している場合、エージェントはv4にアップグレードされません。代わりに、サポートされていないオペレーティングシステムで実行されているパイプラインは、パイプラインログに警告を表示します。QueryAgentPoolsForCompatibleOS.ps1スクリプトを使用して、古いオペレーティングシステムで実行されているパイプラインエージェントを事前に特定できます。

次のオペレーティングシステムバージョンは、更新されたv4エージェントではサポートされません。

  • Alpine Linux 3.13 - 3.16
  • Debian 10
  • Fedora 36 - 38
  • macOS 10 & 11
  • openSUSE 15.0 - 15.4
  • Oracle Linux 7
  • Red Hat Enterprise Linux 7
  • SUSE Enterprise Linux 12
  • Ubuntu, 16.04, 18.04
  • Windows 7, 8 & 10 up to 21H2

Bash@3BatchScript@1CmdLine@2PowerShell@2などのシェルタスクは、組織またはプロジェクト設定でシェルタスク引数の検証を有効にすることで、コマンドインジェクションから保護できます。

シェルタスク引数の検証を有効にすると、入力検証によって入力が拒否されるため、既存のスクリプトが動作しなくなる可能性があります。例えば、一部の文字はコマンドセパレータと見なされ、この設定が有効な場合に拒否されます。

この移行をスムーズにするために、プレビューモードを追加しました。プレビューモードを有効にすると、パイプラインと監査ログに警告が表示され、タスクやワークフローを中断することなく潜在的な問題を把握できます。

Organization Settings > Pipelines > Settings > Task restrictions > Audit On を設定してください。

Screenshot of general to enable auditing.

以前、サービス接続は<azure devops org>-<azure devops project>-<azure subscription id>という形式で命名されていました。このため、同じAzureサブスクリプションを対象とするアプリ登録と対応するサービス接続を関連付けるのが難しくなっていました。明確さを向上させるために、アプリ登録名にサービス接続名が含まれるように変更し、<azure devops org>-<azure devops project>-<service connection name>という形式となるため、識別しやすくなります。

ビルドパイプラインの構成をシームレスに統合することで、テストケースの実行プロセスを簡素化しました。Test Planレベルで設定されたビルド定義とIDは、Web Runnerに自動的に伝播されるため、毎回手動で構成する必要がなくなります。この改善により、時間を節約し、効率が向上し、より重要なタスクに集中できるようになります。

Gif to demo Pipeline Integration for Test Case Execution.

このアップグレードをChromeで段階的にリリースしてきましたが、今度はEdgeへの展開を拡大しています。

この更新はGoogleのManifest V2の廃止スケジュールに従って、実装をManifest V2からV3に移行します。拡張機能のコア機能は変更されませんが、セキュリティとパフォーマンスが向上します。

詳細については、このアップデートに関する最近のブログ投稿Manifest V3でのTest & Feedback Manifest V3をご覧ください。

注意事項

ここで議論されている機能は今後二~三週にわたって順次展開されます。

Azure DevOpsサービスを体験してみてください。

これらの機能についてどう思っているかお聞きしたいと思います。 フィードバックメニューを使用して問題を報告するか、提案を提出してください。

Make a suggestion

アドバイスや回答を必要とする質問がある場合、Stack Overflowコミュニティで聞いてください。

ありがとうございました。

Dan Hellem

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment