Как я могу передавать переменные в docker при создании контейнера с конвейером Azure Devops

#docker #azure-devops #azure-pipelines

#docker #azure-devops #azure-конвейеры

Вопрос:

Я пытаюсь создать контейнер с помощью PHP-проекта, который имеет соединение DDBB, и я хочу установить DDBB через переменные среды.

Я определил переменные с помощью переменных конвейера.

переменные

Я также устанавливаю переменные в разделах переменных

 variables:
  imageName: 'project'
  repositoryNameDes: 'portalweb-des/project'
  repositoryNamePro: 'portalweb-pro/project'
  connectionECRpredes: 'amazon container registry w-predes'
  connectionECRpro: 'amazon container registry w-pro'
  tName: $(Build.SourceBranchName)_$(Build.SourceVersion)
  ecrRepositoryNameBaseUrl: '513537361685.dkr.ecr.eu-west-1.amazonaws.com'
  dirNameS3: 'project'
  bucketNameDes: 'cluster-drupal-des-deploy-s3'
  deployOnECS: $[or(startsWith(variables['Build.SourceBranch'], 'refs/heads/tags/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/develop'), startsWith(variables['Build.SourceBranch'], 'refs/heads/feature/generardocker'))]
  ddbb_name: $(DDBB_NAME)
 

Но я не вижу, как загружать переменные при создании сборки, я не уверен, есть ли опция, поэтому задайте переменные среды, если мне нужно написать пользовательскую сборку для запуска с переменной или как ее создать.

 steps:
- task: Docker@2
  displayName: Build an image
  inputs:
    repository: $(imageName)
    command: build
    Dockerfile: Dockerfile
    tags: $(tName)
- task: ECRPushImage@1
  inputs:
    ENV: '$(dev)'
    awsCredentials: '$(connectionECRpredes)'
    regionName: 'eu-west-1'
    imageSource: 'imagename'
    sourceImageName: '$(imageName)'
    sourceImageTag: '$(tName)'
    repositoryName: '$(repositoryNameDes)'
    pushTag: $(tName)
 

Комментарии:

1. Вы получили какую-либо ошибку во время сборки?

Ответ №1:

В наиболее распространенном случае вы устанавливаете переменные и используете их в файле YAML. Это позволяет отслеживать изменения переменной в вашей системе управления версиями. Вы также можете определить переменные в пользовательском интерфейсе настроек конвейера (см. вкладку Classic) и ссылаться на них в своем YAML.

Вот пример, который показывает, как установить две переменные, configuration и platform , и использовать их позже поэтапно. Чтобы использовать переменную в операторе YAML, оберните ее в $() .

 # Set variables once
variables:
  configuration: debug
  platform: x64

steps:

# Use them once
- task: MSBuild@1
  inputs:
    solution: solution1.sln
    configuration: $(configuration) # Use the variable
    platform: $(platform)

# Use them again
- task: MSBuild@1
  inputs:
    solution: solution2.sln
    configuration: $(configuration) # Use the variable
    platform: $(platform)
 

Вы можете проверить следующую ссылку для получения более подробной информации:

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devopsamp;tabs=yaml,batch