title: How to set Azure DevOps yaml variables conditionally based on parameter value
body: <p>I am trying to set variables based on a parameter value in a yaml pipeline.  It seems that I've read many other posts which show examples like the one below that the authors have said worked, but I cannot get past issues when trying to do something like below.</p>
  <p>I've tried many variations on this example as well, too many to list here.  Sometimes it will show 'values' as a duplicate key.  In other cases I've been able to try and start a run and get the prompt with environment selection, but then opening the stage dialog throws a parse error.</p>
  <p>Is there some sort of difference between variable declaration at the top of the file vs in a stage or job?  That seems to be the difference that I notice when reading through other examples.</p>
  <p>Ultimately what I'm trying to do is set the <em>ServiceConnection</em> variable value based on the value of the <em>environment</em> parameter.</p>
  <pre><code>parameters:
  - name: environment
    displayName: Environment
    type: string
    values:
    - DEV
    - TEST
  
  pr: none
  trigger: none
  
  pool: PrivateAgentPool
  
  variables:
    - name: 'isMain'
      value: $[eq(variables['Build.SourceBranch'], 'refs/heads/main')]
    - name: 'buildConfiguration'
      value: 'Release'
  
    - name: 'environment'
      value: ${{ parameters.environment }}
  
    - name: 'ServiceConnection'
      ${{ if eq(variables['environment'], 'DEV') }}:
        value: 'svcConnectionDev'
      ${{ if eq(variables['environment'], 'TEST') }}:
        value: 'svcConnectionTest'
  </code></pre>