Domain 2 β€” Module 2 of 2 100%
5 of 28 overall
Domain 2: Apply Developer Tools Free ⏱ ~15 min read

Source Control, Builds & CI/CD

Manage code with Azure DevOps version control, implement branching strategies, resolve conflicts, and set up CI/CD pipelines for F&O deployments.

Source Control, Builds & CI/CD

Your code is too valuable to lose and too complex to merge manually. This module covers version control with Azure DevOps, branching strategies for F&O teams, and automating builds and deployments with CI/CD pipelines.

Simple explanation

Think of source control as a time machine for your code.

Source control saves every version of your code, so you can always go back in time. Two developers can work on different parts of the same project without overwriting each other. Branching creates a parallel copy β€” you work on a feature without disturbing the main code, then merge when ready. CI/CD automates the tedious parts: every time you check in code, a robot builds it, runs tests, and packages it for deployment.

TFVC vs Git

TFVC vs Git for F&O
AspectTFVC (Centralised)Git (Distributed)
ModelCentralised β€” server is the single source of truthDistributed β€” every developer has a full copy
Check-in/outExplicit check-out locks filesNo locks β€” merge on push
BranchingHeavy β€” branches are server-side copiesLightweight β€” branches are pointers
Offline workLimited β€” need server connection to check outFull β€” commit locally, push when connected
F&O historyTraditional choice, deeply integratedGrowing adoption with UDE
Merge experienceVisual Studio merge toolGit merge/rebase tools
Best forTeams familiar with centralised workflowsModern teams, multiple parallel features

πŸ—οΈ Vik’s preference: β€œAt Axion we use TFVC for most F&O projects because the check-out model prevents merge conflicts on complex AOT elements. But for new UDE projects, we are starting to use Git. The exam expects you to know both.”

Daily Version Control Workflow

With TFVC

  1. Get latest β€” pull the newest code from the server
  2. Check out β€” lock the file you want to edit
  3. Edit β€” make your changes in Visual Studio
  4. Build β€” compile and verify no errors
  5. Check in β€” upload your changes with a descriptive comment
  6. Resolve conflicts β€” if someone changed the same file, merge

With Git

  1. Pull β€” get latest from the remote repository
  2. Create a branch β€” work in isolation (e.g., feature/add-credit-hold)
  3. Commit β€” save changes locally with a message
  4. Push β€” upload your branch to Azure DevOps
  5. Pull request β€” request review and merge into main
  6. Resolve conflicts β€” merge or rebase if branches diverged
Exam tip: Check-in policies

Azure DevOps supports governance rules: for TFVC, these are check-in policies (work item association, code review required, build verification, comment required). For Git, the equivalent is branch policies on pull requests (required reviewers, build validation, linked work items). The exam may ask what prevents a developer from checking in unvalidated code β€” policies are the answer.

Branching Strategies

BranchPurposeWho Uses It
Main (or trunk)Stable, tested codeRelease baseline
DevActive developmentAll developers
Feature branchesIsolated feature workIndividual developers
ReleaseRelease candidate stabilisationRelease managers
HotfixEmergency production fixesOn-call developers

Workflow: Feature branch β†’ merge to Dev β†’ test in sandbox β†’ merge to Main β†’ deploy to production

Resolving Conflicts

When two developers change the same file:

  1. Visual Studio detects the conflict during check-in or merge
  2. The merge tool shows three panes: your version, their version, and the result
  3. Choose which changes to keep, or manually combine both
  4. Build and test the merged code before completing the check-in

Build Automation & CI/CD

Build pipeline

A build pipeline in Azure DevOps compiles your F&O code and produces a deployable package automatically.

StepWhat Happens
TriggerA check-in or scheduled trigger starts the build
Get sourcesPipeline pulls latest code from version control
BuildCompiles X++ code using the F&O build tools
Run testsExecutes SysTest unit tests
PackageCreates a deployable package (.zip)
PublishUploads the package to Azure DevOps artifacts or LCS

Continuous deployment

After the build produces a package, a release pipeline can:

  1. Upload the package to the LCS Asset Library (via LCS API)
  2. Trigger deployment to a sandbox environment
  3. Run automated smoke tests
  4. Notify the team of success or failure

πŸ‘¨β€πŸ’» Elena’s CI/CD setup at PacificForge: β€œEvery check-in triggers a build. If the build or tests fail, the developer gets an email within 15 minutes. Packages that pass are automatically uploaded to LCS. Our release manager just clicks β€˜deploy to sandbox’ β€” the package is already waiting.”

Manual vs Automated Builds
AspectManual (Visual Studio)Automated (Azure DevOps Pipeline)
Triggered byDeveloper clicks BuildAutomatic on check-in or schedule
ConsistencyDepends on developer's environmentClean, reproducible build agent
TestsDeveloper must remember to run themAutomatically runs full test suite
Package outputLocal deployable packagePublished to artifacts/LCS
NotificationDeveloper sees the resultTeam notified via email or Teams
Question

What are the two version control systems supported by Azure DevOps for F&O?

Click or press Enter to reveal answer

Answer

TFVC (Team Foundation Version Control) β€” centralised with check-in/check-out β€” and Git β€” distributed with branching and pull requests. TFVC is traditional for F&O; Git is growing with UDE.

Click to flip back

Question

What is a check-in policy in Azure DevOps?

Click or press Enter to reveal answer

Answer

A rule enforced before code can be checked in: work item association, code review required, successful build, or comment required. Policies prevent unchecked or untested code from entering the repository.

Click to flip back

Question

What does a CI/CD build pipeline produce for F&O?

Click or press Enter to reveal answer

Answer

A deployable package (.zip) containing compiled X++ code and metadata. This package is uploaded to Azure DevOps artifacts or the LCS Asset Library for deployment to sandbox or production environments.

Click to flip back

Question

What is the recommended branching model for F&O teams?

Click or press Enter to reveal answer

Answer

Main (stable baseline) ← Dev (active development) ← Feature branches (isolated work). Release branches for stabilisation, hotfix branches for emergencies. Feature β†’ Dev β†’ Main β†’ Production.

Click to flip back

Knowledge Check

Sophie and Nikhil are both working on the same X++ class. Sophie checks in first. When Nikhil tries to check in, he gets a conflict. What should he do?

Knowledge Check

Elena wants every code check-in to automatically compile the code, run tests, and produce a deployable package. What should she configure?

Knowledge Check

Vik needs to choose between TFVC and Git for a new F&O project. The team has 8 developers, all working on-site, and they want to prevent two people from editing the same file simultaneously. Which system is better suited?


Next up: Domain 3 begins β€” Tables: Fields, Relations & Indexes β€” start building the data model that powers every F&O application.