#経緯
E2Eテストをpipeline上で自動実行できるように実装した。
テスト結果はPublishTestResults
タスクやログから確認できるが、
エビデンスとして撮影したスクリーンショットはスクリプト終了時にpipelineエージェントとともに消え去ってしまう...
スクショなどのファイルをpipelineエージェントから取り出せるようにしたい。
Artifactとは
pipelineを実行した結果として出力されたファイル = 成果物 のこと。
↓のドキュメントではビルドで出力された.exeファイルやパッケージを指しているが、テスト結果のエビデンスとして出力した画像ファイルなどもアーティファクトとして扱える模様。
実装方法
ymlファイルにタスクを追加
- task: CopyFiles@2
inputs:
Contents: |
$(Build.SourcesDirectory)/evidence/**/*
TargetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'evidence'
publishLocation: 'Container'
Build.ArtifactStagingDirectory
は発行前のアーティファクトを置いておくためのディレクトリ。
CopyFiles
で準備し、publishBuildArticacts
で発行する。
publishLocation
は発行先のオプションでContainer
(pipeline上)とFilePath
(任意のパス)から選べるようだが、後者はwindowsエージェントのみ使用可能な模様。
今回はテスト結果の発行にPublishBuildArtifacts
を使用しているが、名前的にビルド成果物のためのタスクのようなので、PublishPipelineArtifact
を使うほうが良いかもしれない。
pipelineの実行結果画面からダウンロードする
実行結果画面のpublished
からダウンロードできるようになる。
microsoftのドキュメントを見ると、
pipeline -> 外部 を「発行 publish」
pipeline <- 外部 を「ダウンロード download」と表現している。
pipeline目線だとそりゃそうなのだが、私の場合「pipelineからファイルをダウンロードしたかった」ので「azure pipeline ファイル ダウンロード」などのワードで検索しており適切な資料を見つけるのに手間取ってしまった。