はじめに
Pipelines を利用する時はかなり使うことが多いと思われる変数を紹介したいと思います。
- Build.SourcesDirectory (Build.Repository.LocalPath)
- Build.BinariesDirectory
- Build.StagingDirectory (Build.ArtifactStagingDirectory)
ちなみに Microsoft の公式サイトは以下です。
Use predefined variables
注意点
事前に覚えておいてほしいことは、この後に紹介する Build.~ で取得可能なパスは全て絶対パスです。
Build.SourcesDirectory (Build.Repository.LocalPath)
ソースコードが配置されるディレクトリパスを指します。
『リポジトリをクローンしてきた時のルートディレクトリ』になります。
Build.SourcesDirectory も Build.Repository.LocalPath も同じパスを指します。
(※Build.Repository にはリポジトリに関する他の情報が含まれています)
Unity プロジェクトをリポジトリにそのまま配置した場合、Assets などが配置される所です。
例)
/- Unity プロジェクトルートディレクトリ
|- Assets
|- Packages
|- ProjectSettings
リポジトリ直下に Unity などのプロジェクトを配置していない場合でも、この変数にサブディレクトリのパスを書けばいいだけです。
$(Build.SourcesDirectory)/Sources
Build.BinariesDirectory
ビルド後の結果が出力されるディレクトリを指します。
Unity の場合、バッチビルド内で出力先を指定しますので、これを使って出力先を決定すれば良いと思います。
(Unity Tools for Azure DevOps でも outputPath にこいつを指定)
- task: UnityBuildTask@3
displayName: 'Building.'
inputs:
buildTarget: '$(Unity.TargetBuild)'
unityProjectPath: '$(Unity.ProjectPath)'
outputPath: '$(Build.BinariesDirectory)'
※実際にビルドの出力先にこれを利用しなくても問題はないのですが、Pipelines で用意されているものですので便利に使えればそれでいいんじゃないかと思います。
Build.StagingDirectory (Build.ArtifactStagingDirectory)
ビルドパイプラインで成果物を最終的に出力する先です。
Publish build artifacts で成果物として公開されます。
- task: CopyFiles@2
displayName: 'Copying builds...'
condition: succeeded()
inputs:
SourceFolder: '$(Build.BinariesDirectory)'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)'
CleanTargetFolder: true
OverWrite: true
- task: PublishBuildArtifacts@1
displayName: 'Publish builds...'
condition: succeeded()
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'Release'
publishLocation: 'Container'
※これも Build.BinariesDirectory と同じでここじゃなくてもいいです。
おわりに
結構使えそうな変数は他にも色々あるのですが、ビルドするだけであればこの辺りの変数さえ知っておけば問題なく Pipelines 用の YAML はかけるんじゃないと思います。