Mat-Tap
Mat-Tap

Reputation: 755

AzureStaticWebApp@0 not recognizing deployment token from variable

Hi have the following code that deploys an artifact to an Azure Static Web App:

...
variables:
- name: staticWebAppDeploymentToken 
...

      # This steps reads the deployment token of the static web app and assigns it on a variable
      - task: AzureCLI@2
        displayName: 'Retrieve static web app deployment token'
        inputs:
          azureSubscription: xxxx
          scriptType: bash
          scriptLocation: inlineScript
          inlineScript: |
            output=$(az staticwebapp secrets list --name xxxx-xxxx-$(environment) | jq .properties.apiKey)
            echo "##vso[task.setvariable variable=staticWebAppDeploymentToken;]$output"

      - task: AzureStaticWebApp@0
        inputs:
          output_location: '/'
          cwd: '$(Pipeline.Workspace)/artifact'
          skip_app_build: true
          azure_static_web_apps_api_token: $(staticWebAppDeploymentToken)

I get the error: enter image description here

I've set the System.Debug variable to true, and I see the value is set in the variable. I've also printed the variable and the value is there.

enter image description here

I can't understand what I'm doing wrong. What is the correct way to set a variable in bash and use it on another non-bash step? I've tried hardcoding the value and also passing it as a parameter from the library, and that works, but that is not what I want.

Upvotes: 2

Views: 1401

Answers (1)

Kevin Lu-MSFT
Kevin Lu-MSFT

Reputation: 35494

Test the same script to get the token and pass it to Azure Static web APP task, I can reproduce the same issue.

The root cause of this issue is that when you set the variable in Azure CLI task with the command, the pipeline variable will contain "". For example: "tokenvalue".

The expected deployment token in Azure Static web APP task, it will not contain double quotes.

To solve this issue, you need to add a step in Azure CLI task to remove the double quotes.

Here is an example:

steps:
- task: AzureCLI@2
  displayName: 'Azure CLI '
  inputs:
    azureSubscription: xx
    scriptType: bash
    scriptLocation: inlineScript
    inlineScript: |
     output=$(az staticwebapp secrets list --name kevin0824 | jq .properties.apiKey)
     
     var2=`sed -e 's/^"//' -e 's/"$//' <<<"$output"`
     
     echo $var2 
     
     echo "##vso[task.setvariable variable=staticWebAppDeploymentToken; isOutput=true]$var2"

- task: AzureStaticWebApp@0
  displayName: 'Static Web App: '
  inputs:
    app_location: /
    api_location: api
    skip_app_build: false
    skip_api_build: false
    is_static_export: false
    verbose: false
    azure_static_web_apps_api_token: '$(staticWebAppDeploymentToken)'

Upvotes: 3

Related Questions