Azure Pipelines - Is there a way to view the folder structure?
I'm struggling to picture the folder structure of azure pipelines. I know there are some implicit directories like:
- $(System.DefaultWorkingDirectory)
- $(Build.ArtifactStagingDirectory)
Which are both folders on a specific build agent available from the pool.
Is there a way to view the folder structure and get a better understanding how things are laid out?
You can use CMD task to call tree command in Microsoft-Hosted windows agent to get the folder structure.
My script:
echo "Structure of work folder of this pipeline:"
tree $(Agent.WorkFolder)\1 /f
echo "Build.ArtifactStagingDirectory:"
echo "$(Build.ArtifactStagingDirectory)"
echo "Build.BinariesDirectory:"
echo "$(Build.BinariesDirectory)"
echo "Build.SourcesDirectory:"
echo "$(Build.SourcesDirectory)"
The result:
$(Agent.WorkFolder)
represents the working folder for current agent, $(Agent.WorkFolder)\1
represents the working folder for current pipeline.(Normally the first pipeline will be put in $(Agent.WorkFolder)\1
, and the second $(Agent.WorkFolder)\2
...)
So it's obvious that for one pipeline run, it has four folders by default: a(artifact folder), b(binaries folder), s(source folder) and TestResults(Test results folder). The s
folder is where the source code files are downloaded. For build pipeline: $(Build.SourcesDirectory)
,$(Build.Repository.LocalPath)
and $(System.DefaultWorkingDirectory)
represent the same folder. More details see predefined variables.
Another option is to add this to a YAML pipeline:
-powershell: Get-ChildItem -Path 'Insert root path' -recurse
It will look something like:
Get-ChildItem -Path C:\Test\*.txt -Recurse -Force
Directory: C:\Test\Logs\Adirectory
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2/12/2019 16:16 20 Afile4.txt
-a-h-- 2/12/2019 15:52 22 hiddenfile.txt
-a---- 2/13/2019 13:26 20 LogFile4.txt
Directory: C:\Test\Logs\Backup
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2/12/2019 16:16 20 ATextFile.txt
-a---- 2/12/2019 15:50 20 LogFile3.txt
Directory: C:\Test\Logs
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2/12/2019 16:16 20 Afile.txt
-a-h-- 2/12/2019 15:52 22 hiddenfile.txt
-a---- 2/13/2019 13:26 20 LogFile1.txt
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2/13/2019 08:55 26 anotherfile.txt
-a---- 2/12/2019 15:40 118014 Command.txt
-a-h-- 2/12/2019 15:52 22 hiddenfile.txt
-ar--- 2/12/2019 14:31 27 ReadOnlyFile.txt
Here is documentation on the Get-ChildItem command if you need more information
The documentation gives you examples of the folder structure. If that's not enough, add a PowerShell step that runs gci -rec -directory | select-object fullname
or similar.
It looks more like this(work directory of an Agent):