Skip to content

Instantly share code, notes, and snippets.

@kkamegawa
Created October 23, 2021 11:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kkamegawa/1b3fe0d1c60463093bd648ee8ef86445 to your computer and use it in GitHub Desktop.
Save kkamegawa/1b3fe0d1c60463093bd648ee8ef86445 to your computer and use it in GitHub Desktop.

パスの除外ルールを使った検証の際に、ニュートラル状態をGitHubにポストできるようになりました - Sprint 194

今回のアップデートでは、Azureパイプラインに対する複数のアップデートが含まれています。YAMLパイプラインでは、保護されたリソースのデフォルトとして、すべてのパイプラインへのアクセスを拒否するように設定しています。さらに、Azure Pipelinesは、パスの除外ルールのために検証ビルドを実行しないことを決定すると、ニュートラルなステータスをGitHubに戻すようになります。

詳細は、以下の機能説明をご覧ください。

注意事項

2021年9月28日、Azure DevOpsは、Axosoft社から、同社の人気の高いgit GUIクライアントであるGitKrakenの依存関係に脆弱性があることを通知されました。詳細はブログ記事をご覧ください。

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:

Conversation view

GitHubのCheck結果:

Check details

YAMLパイプラインは、ひとつ以上の保護されたリソースに依存できます。Service connections, agent pools, variable groups, secure filesおよびリポジトリはすべて保護されたリソースの例であり、そのようなリソースの管理者はどのパイプラインがそのリソースにアクセスできるかを制御できます。管理者は、リソースのセキュリティ設定パネルを使用して、パイプラインの有効化または無効化を行います。

これらのリソースを作成すると、デフォルトでは明示的にオフにしない限り、すべてのパイプラインへのアクセスが許可されます。今後は、全体的なセキュリティ対策を強化するために、デフォルトではすべてのパイプラインへのアクセスを拒否するように設定されます。すべてのパイプラインへのアクセスを許可するには、リソースの作成画面または作成後にトグルスイッチをオンにしてください。

New Azure service connection

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サービスを体験してみてください。

Go to Azure DevOps Services

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

Make a suggestion

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

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

Vijay Machiraju

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