Templates Azure DevOps管道:同一模板在一个阶段中使用两次

Templates Azure DevOps管道:同一模板在一个阶段中使用两次,templates,parameters,azure-devops,conditional-statements,azure-devops-pipelines,Templates,Parameters,Azure Devops,Conditional Statements,Azure Devops Pipelines,在一个阶段的主管道中,我使用稍微不同的数据调用同一(部署)模板两次: //pipeline.yml - stage: dev condition: and(succeeded(), eq('${{ parameters.environment }}', 'dev')) variables: getCommitDate: $[ stageDependencies.prepare_date.set_date.outputs['setCommitDate.rollbackD

在一个阶段的主管道中,我使用稍微不同的数据调用同一(部署)模板两次:

//pipeline.yml

- stage: dev
   condition: and(succeeded(), eq('${{ parameters.environment }}', 'dev'))
   variables: 
      getCommitDate: $[ stageDependencies.prepare_date.set_date.outputs['setCommitDate.rollbackDate'] ]
   jobs:        
     - template: mssql/jobs/liquibase.yml@templates
       parameters:
         command: update
         username: $(username_dev)
         password: $(password_dev)
         environment: exampleEnv
         databaseName: exampleDB
         databaseIP: 123456789
         context: dev
         checkoutStep:
           bash: git checkout ${{parameters.commitHash}} -- ./src/main/resources/objects
  
     - template: mssql/jobs/liquibase.yml@templates
       parameters:
         command: rollbackToDate $(getCommitDate)
         username: $(username_dev)
         password: $(password_dev)
         environment: exampleEnv
         databaseName: exampleDB
         databaseIP: 123456789
         context: dev
我的问题是部署不能有相同的名称两次。 无法使用
${{parameters.command}
来区分部署名称,因为它包含禁止使用的字符。两个调用之间只有
${{parameters.command}
不同

我的问题是,除了传递另一个参数(例如jobName:)之外,是否可以以其他方式区分部署的名称。我尝试了各种条件和预定义变量,但没有成功


此外,我应该添加DependsOn,以便在第一个模板之后肯定会调用第二个模板。

这是不可能的,因为
getCommitDate
,因此第二个阶段中的命令参数包含运行时表达式,作业名称需要编译时表达式。因此,如果在编译时使用
命令
作为作业名称,则有
rollbackToDate$(getCommitDate)

//template.yml

parameters:
- name: command
  type: string
- name: environment
  type: string
- name: username
  type: string
- name: password
  type: string
- name: databaseName
  type: string
- name: databaseIP
  type: string
- name: context
  type: string
- name: checkoutStep
  type: step
  default: 
    checkout: self

jobs:
- deployment: !MY PROBLEM!
  pool: 
    name: exampleName
    demands:
    - agent.name -equals example
  environment: ${{ parameters.environment }}
  container: exampleContainer
  strategy:
    runOnce:
      deploy:
        steps:
          ...