I use Azure DevOps for long time, and I always use GUI when crafting Build Pipeline so far, though I knew Azure DevOps supports YAML and its benefits.
So this time, I tried YAML instead of GUI and I learnt many things. In this article, I talk about "checkout" task.
When I first created YAML pipeline, my first question was where is my source code checkout information inside YAML as I only saw trigger. I eventually figured out but I leave memo here.
GUI experience
The very first thing I see in GUI is "select a source", which includes:
- Type of repository
- Where is the repo
- Which branch to checkout
After that, I select template. This time, I select "empty job" as I build dotnet core console app.
Then adding bunch of tasks as I needed.
I see "Get sources" at the beginning which is the starting point.
YAML experience
Now let's see the YAML experience. I start by selecting repository type.
Then select actual repository.
And this is the generated YAML.
# .NET Desktop
# Build and run tests for .NET Desktop or Windows classic desktop solutions.
# Add steps that publish symbols, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/apps/windows/dot-net
trigger:
- master
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: VSTest@2
inputs:
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
So there are several things I didn't understand at the begining.
- Where is "Get sources" or checkout task?
- How to set branch as source?
- Where did the repository information go?
Also that the YAML file is saved in either master or new branch. As I usually block direct commit to master branch, I created new branch.
Checkout mystery
First of all, I need to figure out the checkout stuff. By reading Check out multiple repositories in your pipeline, I understand it's omitted by default.
The following combinations of checkout steps are supported.
If there are no checkout steps, the default behavior is as if checkout: self were the first step.
When I run the pipeline as it is, I see checkout task as expected.
The "self" is the branch it's triggered the pipeline. If I trigger it manually, I can select which branch to run it, then the self becomes the branch I selected.
Set branch
So I don't have to set which branch to checkout, but simply configure the trigger. Specify events that trigger pipeline builds and releases provides enough information to me.
The repository Info
There is a settings I can change to specify the repository. Click [...] for more menu and click "Trigger". (Not settings)
There are several settings I can change. Go to YAML tab and I can change the repository.
Summary
In this article, I only talk about "checkout" task, and I just need to know the concept and basics, then it's not that different from GUI version anyway.
There are many other things I learnt which I will make note later.
Top comments (2)
Its probably not relevant at this point but since there are no answers, here is the documentation reference for this topic:
docs.microsoft.com/en-us/azure/dev...
by default there is no need to do anything as it is handled by the pipeline, but if you want, you can specify your custom configuration for the git operations
edit: grammar
Thanks for the info! Yeah, we don't need to specify it but I was a bit curious how "automagically" checkout happens :)