замена переменных в файлах yml в конвейерах azure

#kubernetes #azure-devops #azure-pipelines #azure-aks

Вопрос:

я объявляю переменные в конвейере azure и хочу ввести их в файл deployment.yml, для достижения этой цели использовал задачу replacetoken@4, но переменные не обновляются с помощью vaules.

код трубопровода: azure-pipelines.yaml

   stages:
  - stage: dockerbuild
  variables:
  - name: replicas
    value: 2
  jobs:
  - job: builddockerimageandpush
    pool: 
    name: Azure Pipelines
    steps:
        
      - task: Bash@3
        inputs:
        targetType: 'inline'
        script: |
          COMMAND="$(echo '$(build.sourceversion)' | cut -c-7)"
          echo "##vso[task.setvariable variable=dockertag]$COMMAND"
      displayName: GetCommitID
      
    
      - task: replacetokens@4
        inputs:
          rootDirectory: '$(System.DefaultWorkingDirectory)'
          targetFiles: 'deployment.yaml'
          encoding: 'auto'
          tokenPattern: 'default'
          writeBOM: true
          actionOnMissing: 'warn'
          keepToken: false
          actionOnNoFiles: 'continue'
          enableTransforms: false
          useLegacyPattern: false
          enableTelemetry: true
 

ниже приведено развертывание.конфигурация yaml

 apiVersion: apps/v1
kind: Deployment
metadata:
  name: messagesender
  labels:
  app: messagesender
spec:
  selector:
    matchLabels:
      app: messagesender
replicas: {replicas}
template:
  metadata:
    labels:
      app: messagesender    
  spec:
    containers:
    - name: devcontainer
      image: telefonicamdnidevcontainer.azurecr.io/messagesender:{dockertag}
      imagePullPolicy: Always
 

поэтому в приведенных выше конфигурационных переменных {реплики} и {dockertag} необходимо заменить, однако этого не происходит. может ли кто-нибудь помочь мне понять, чего здесь не хватает. заранее спасибо

Ответ №1:

Шаблон токена по умолчанию таков #{some_variable_here}# . И в вашем развертывании.yml это так {some_variable} .

Измените его на #{replicas}# и #{dockertag}# .

 apiVersion: apps/v1
kind: Deployment
metadata:
  name: messagesender
  labels:
  app: messagesender
spec:
  selector:
    matchLabels:
      app: messagesender
replicas: #{replicas}#
template:
  metadata:
    labels:
      app: messagesender    
  spec:
    containers:
    - name: devcontainer
      image: telefonicamdnidevcontainer.azurecr.io/messagesender:#{dockertag}#
      imagePullPolicy: Always