Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PrePostDeploymentScript fails to parse triggers that contain double-quotes in their definition #699

Open
DavidJade27 opened this issue Oct 30, 2024 · 1 comment

Comments

@DavidJade27
Copy link

DavidJade27 commented Oct 30, 2024

I am using the microsoft/azure-data-factory-utilities npm package for CI/CD to my ADF. My triggers are used against pipelines that take parameters, and those parameter values contain double-quotes in them. When I run PrePostDeploymentScript.ps1, I get errors like this:

##[warning] Unable to compare 'MyTrigger' trigger payload, this is not a failure. You can post the issue to https://github.com/Azure/Azure-DataFactory/issues to check if this is user error or limitation.
##[warning] Conversion from JSON failed with error: After parsing a value an unexpected character was encountered: '. Path 'pipelines[0].parameters.Param1', line 12, position 32. from Line: 200

While these are warnings, the result is that these triggers get unnecessarily stopped and restarted because the script fails to compare them against the current definition.

For reference, my trigger looks like this:

{
  "name": "MyTrigger",
  "properties": {
    "annotations": [],
    "runtimeState": "Started",
    "pipelines": [
      {
        "pipelineReference": {
          "referenceName": "MyPipeline",
          "type": "PipelineReference"
        },
        "parameters": {
          "Param1": "\"MyStringValue\"",
          "StartDate": "@concat('\"', formatDateTime(adddays(trigger().scheduledTime, -10), 'yyyy-MM-dd'), '\"')",
          "EndDate": "@concat('\"', formatDateTime(adddays(trigger().scheduledTime, -3), 'yyyy-MM-dd'), '\"')"
        }
      }
    ],
    "type": "ScheduleTrigger",
    "typeProperties": {
      "recurrence": {
        "frequency": "Week",
        "interval": 1,
        "startTime": "2020-10-13T04:00:00Z",
        "timeZone": "UTC",
        "schedule": {
          "weekDays": [
            "Saturday"
          ]
        }
      }
    }
  }
}
@DavidJade27
Copy link
Author

Looking through PrePostDeploymentScript.ps1, I believe the issue is in the Update-TriggerTemplate function -- the final else-clause takes a value out of the ARM template parameters and uses it in a string-replace into a JSON string without escaping the double-quotes, creating malformed JSON. This then causes problems when ConvertFrom-Json is called on it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant