Azure PipelineでDownload Secure File taskが認証できずに失敗する対処法

このエントリーをはてなブックマークに追加

DownloadSecureFile@1 - Download secure file v1 task

Download a secure file to the agent machine.

docs.microsoft.com

DownloadSecureFile@1 - Download secure file v1 task
Go to DownloadSecureFile@1 - Download secure file v1 task

git管理外にしておきたいファイルをAzure PipelineではSecure Fileとして配置することができます。Secure Fileとして配置することで、ビルド時にSecure Fileを引っ張ってきてビルドソースに突っ込むことができます。

Secure Fileの追加はAzure Pipeline => Library => Secure filesからできます。

ここで問題のエラーはこちらです。たぶんGithubリポジトリの場合に起きると思われ

Step input secureFile references secure file {FILENAME} which could not be found. The secure file does not exist or has not been authorized for use. For authorization details, refer to https://aka.ms/yamlauthz.

VSTS anybody managed to use "secure file" in azure-pipelines.yml?

I would like to use "download secure file" in a dev azure task - and that works exactly as expected within a task in "release pipeline" (in "Releases"). However, when I try to do the same in a "Bui...

stackoverflow.com

VSTS anybody managed to use "secure file" in azure-pipelines.yml?
Go to VSTS anybody managed to use "secure file" in azure-pipelines.yml?

このエラーはstack overflowによると、yamlのスキャンのタイミング以降にSecure fileを扱うtaskが追加された場合に起こるようです。

対処法としては、Pipelineの設定でなんらかのvariableを修正して保存するとスキャンが走るようです。

その他気を付けたほうがいいこと

yaml形式でPipelineを作成している際にはSecure Fileの取り扱いには注意しなければいけないです。PullRequestのビルドをしているPipelineでSecure Fileを扱っていると、PullRequestにSecure Fileをダンプするyamlファイルの書き換えをコミットに含めてやれば、PullRequestのビルドログにSecure Fileの中身を垂れ流すこともできます。

そのためCIとしてPullRequestをビルドするPipelineではSecure Fileを扱わないほうがいいでしょう。また、Secure fileの設定にあるAuthorize for use in all pipelinesはオンにしないほうがいいです。

Secure fileを扱うPipelineはオーナーが明示的に実行できるトリガーのみに絞りましょう。