Course contentsShow
← Unreal Engine Game Development
Lesson 877 of 88012. World Building and DeploymentFree lesson

Automating Build Verification with Deployment Pipelines

Integrate automated testing scripts into your build pipeline to validate that DLC and patches function correctly across all target platforms.

In this lesson, you will learn how to automate build verification to ensure your DLC and patches remain functional across various platforms without manual QA intervention.

As you advance in your deployment lifecycle, verifying that every hot-patch or modular DLC correctly integrates with the base project is critical. Manually launching a build on every target platform (Console, PC, Mobile) is error-prone and slow. Instead, we integrate Automated Testing Scripts directly into our CI/CD pipeline to serve as a gatekeeper.

The Pipeline Verification Flow

Once your UnrealAutomationTool (UAT) finishes packaging your chunked content, the pipeline shouldn't just "succeed" based on the exit code. You must trigger a secondary automated test suite that launches the built executable in a headless state (or on a device farm) to verify that the DLC assets have loaded correctly.

For example, you can create a FAutomationTestBase class that checks if specific assets in your DLC chunks are loaded into memory and that critical gameplay actors have initialized.

// Example of a basic verification check in an Automation Test
IMPLEMENT_SIMPLE_AUTOMATION_TEST(FDLCAssetLoadTest, "Project.Deployment.VerifyDLCAssets", EAutomationTestFlags::EditorContext | EAutomationTestFlags::EngineFilter)

bool FDLCAssetLoadTest::RunTest(const FString& Parameters)
{
    FStreamableManager& Streamable = UGameGlobals::Get().StreamableManager;
    TSoftObjectPtr<UWorld> DLCMap(TEXT("/Game/DLC/Maps/NewContentMap"));
    
    // Verify the DLC chunk is actually mountable and loadable
    TestTrue(TEXT("DLC Map should be loadable"), DLCMap.LoadSynchronous() != nullptr);
    return true;
}

Automating the Feedback Loop

To ensure this runs across platforms, configure your pipeline to pass the -RunAutomationTests flag to the UAT command line. When the build is deployed to your hardware target, the engine executes these tests upon startup. If the test returns a non-zero exit code or fails to log the success string, your CI tool (like Jenkins or TeamCity) should automatically flag the deployment as "Unstable" or "Failed," preventing the bad patch from ever reaching your live environment.

By building these automated assertions into your build process, you ensure that shader permutations, asset chunks, and platform-specific logic are validated before they ever leave your build machine.

Key Takeaway: Integrating automated test scripts into your deployment pipeline acts as a programmatic quality gate, ensuring your DLC chunks and hot-patches maintain core functionality across all target platforms before they reach the user.