今回のアップデートでは、Azureパイプラインに対する複数のアップデートが含まれています。YAMLパイプラインでは、保護されたリソースのデフォルトとして、すべてのパイプラインへのアクセスを拒否するように設定しています。さらに、Azure Pipelinesは、パスの除外ルールのために検証ビルドを実行しないことを決定すると、ニュートラルなステータスをGitHubに戻すようになります。
詳細は、以下の機能説明をご覧ください。
注意事項
2021年9月28日、Azure DevOpsは、Axosoft社から、同社の人気の高いgit GUIクライアントであるGitKrakenの依存関係に脆弱性があることを通知されました。詳細はブログ記事をご覧ください。
- ビルドがスキップしたとき、GitHubへニュートラルなステータスをポストします
- デフォルトでは保護されたリソースに対して、すべてのパイプラインのアクセスが許可されなくなります
- 特定のタスクの前後にdecoratorの挿入ができるようになります
- Windows 2016ホストイメージ非推奨化のお知らせをいたします
- macOS 10.14のホストイメージを非推奨とします
Azure Pipelinesを使えば、GitHubでpull requestを常に検証可能になります。また、GitHubレポ内のどのパスがパイプラインのトリガーとして指定可能です。たとえば、次のパイプラインは、main
ブランチのcode
に変更がプッシュされたときにトリガーされますが、docs
フォルダに変更がプッシュされたときにはトリガーされません。
trigger: none
pr:
branches:
include:
- main
paths:
include:
- code
exclude:
- docs
pool:
vmImage: ubuntu-latest
steps:
- script: echo Hello, world!
displayName: 'Run a one-line script'
パイプラインが完了すると、Azure PipelinesはステータスをGitHubにポストします。GitHubリポジトリにブランチ保護ポリシーが適用されている場合、Azure Pipelinesによって投稿されたステータスによって、プルリクエストがマージされるかどうかが決まります。
上の例では、docs
に変更を加えた場合、GitHubは現在プルリクエストをブロックして、Azure Pipelinesからのステータス返却を待っています。しかし、そのパスがトリガーから除外されているため、Azure Pipelinesは検証ビルドを実行せず、pull requestを完了させることができません。1つのGitHubリポジトリに対して、パスの除外トリガーや複数のパイプラインを設定しているお客様が、この問題に直面することがよくありました。
今後、Azure Pipelinesは、パスの除外ルールのために検証ビルドを実行しないことを決定すると、neutral
というステータスをGitHubにポストします。これにより、Azure Pipelinesの処理が完了したことを示す明確な指示がGitHubに提供されます。
GitHubのConversation:
GitHubのCheck結果:
YAMLパイプラインは、ひとつ以上の保護されたリソースに依存できます。Service connections, agent pools, variable groups, secure filesおよびリポジトリはすべて保護されたリソースの例であり、そのようなリソースの管理者はどのパイプラインがそのリソースにアクセスできるかを制御できます。管理者は、リソースのセキュリティ設定パネルを使用して、パイプラインの有効化または無効化を行います。
これらのリソースを作成すると、デフォルトでは明示的にオフにしない限り、すべてのパイプラインへのアクセスが許可されます。今後は、全体的なセキュリティ対策を強化するために、デフォルトではすべてのパイプラインへのアクセスを拒否するように設定されます。すべてのパイプラインへのアクセスを許可するには、リソースの作成画面または作成後にトグルスイッチをオンにしてください。
Decoratorsは、パイプラインにタスクを自動的に注入する方法です。一般的には、組織の中心となるチームが必要なコンプライアンス手順を自動的に実行するために使用されます。Decoratorsは、クラシックビルド、クラシックリリース、またはYAMLパイプラインで使用できます。
現在、Decoratorsを使ってタスクを注入できるのは、すべてのジョブの最初、すべてのジョブの最後、またはチェックアウトタスクの直後となっています。これを制御するには、ここで説明するように、Decoratorsの拡張機能のcontributionセクションでtarget
を指定します。現在、ターゲットのリストを以下のように拡張しています。
ms.azure-pipelines-agent-job.pre-task-tasks
ms.azure-pipelines-agent-job.post-task-tasks
ms.azure-release-pipelines-agent-job.pre-task-tasks
ms.azure-release-pipelines-agent-job.post-task-tasks
これはパイプライン内で使用されるPublishPipelineArtifactsタスクの各インスタンス実行前に挿入されるdecoratorのサンプルです。
{
"manifestVersion": 1,
"contributions": [
{
"id": "my-required-task",
"type": "ms.azure-pipelines.pipeline-decorator",
"targets": [
"ms.azure-pipelines-agent-job.pre-task-tasks"
],
"properties": {
"template": "my-decorator.yml",
"targettask": "ECDC45F6-832D-4AD9-B52B-EE49E94659BE"
}
}
],
"files": [
{
"path": "my-decorator.yml",
"addressable": true,
"contentType": "text/plain"
}
]
}
先日、Windows 2022をホストイメージとして提供しました。2022年1月にWindows 2016のメインストリームサポートの終了が予定されていることから、11月15日よりvs2017-win2016
イメージを非推奨とします。このイメージの完全な引退は2022年3月を予定しています。vs2017-win2016イメージは一般的に使用されているイメージであるため、お客様のパイプラインに必要な変更を加えるための十分な通知と時間を提供したいと考えています。
Windows 2016ホストイメージを使用しているすべてのプロジェクトとパイプラインを見つける方法と、新しいバージョンに移行するための手順について詳しく説明したブログ記事を参照してください。
先日、macOS-11をホストイメージとして提供しました。今後2021年12月にmacOS-10.14のイメージを非推奨にする予定です。このイメージに依存したビルドは、このイメージが非推奨になると失敗します。さまざまなイメージの非推奨化についての詳細は、当社のブログ記事を参照してください。
注意事項
ここで議論されている機能は今後二~三週にわたって順次展開されます。
これらの新機能を読んだ後、次のリンクからぜひご自身でAzure DevOpsサービスを体験してみてください。
これらの機能についてどう思っているかお聞きしたいと思います。 フィードバックメニューを使用して問題を報告するか、提案を提出してください。
アドバイスや回答を必要とする質問がある場合、Stack Overflowコミュニティで聞いてください。
ありがとうございました。
Vijay Machiraju