Anon Dev
Anon Dev

Reputation: 1411

How to replace json config values before Xamarin iOS and Android build task in pipeline

I'm working on a Xamarin.Forms app for both iOS and Android, in the shared project I have an appsettings.json file where I'm placing some base settings keys/values.

Those key's values I want to be replaced depending on config variables I have in the .YML file inside my build pipelines, so for instance the key { "url": "" } for Debug Pipeline will be { "url": "http://google.com" } and for Release Pipeline will be { "url": "http://amazon.com" }.

I've handled this scenario previously in .NET Core projects but I've no idea how to do it with Xamarin, I know there is a File Transform task in the Azure Pipeline pre defined tasks, but it requires a .zip package or folder path to find the .json and transform it, but for mobile apps I think there is no suck thing like a pre-build folder.

I request your assistance.

Upvotes: 0

Views: 644

Answers (1)

Leo Liu
Leo Liu

Reputation: 76928

How to replace json config values before Xamarin iOS and Android build task in pipeline

If you have different pipelines for the different config variables. You could just use the task Replace Tokens to update the key's value of the url in the appsettings.json file directly.

You could check my previous thread for the details.

Besides, if you are using one pipeline for the different config variables, we need use the Logging Command and REST API (Definitions - Update) to update the value of the build definition variable from a build task.

  • Add a Inline powershell task with following Logging Command to set the variable URL:

    $config= $Env:configuration
    Write-Host "Current config is $config"
    if ($config -eq "Debug")
    {
      Write-Host ("##vso[task.setvariable variable=URL]http://google.com")
     }
    
    elseif ($config -eq "release")
    {
      Write-Host ("##vso[task.setvariable variable=URL]http://amazon.com")
    }  
    
  • Use REST API (Definitions - Update) to update the value of the build definition variable with the value URL.

  • Use the task Replace Tokens to update the key's value of the url in the appsettings.json file

Hope this helps.

Upvotes: 0

Related Questions