DevOps Azure используют выходную переменную идентификатора развертывания из AWS CodeDeploy в качестве входных данных для следующей задачи в конвейере, не преобразуя переменную в фактическое значение - PullRequest
0 голосов
/ 30 октября 2019

У меня есть конвейер сборки для развертывания чего-либо в AWS через конвейер Azure Devops с помощью задачи AWS CodeDeploy. Я хочу сообщить о деталях этого развертывания, используя выходную переменную Id развертывания из шага задачи AWS CodeDeploy в качестве входных данных для запроса развертывания с помощью следующей команды AWS CLI задачи.

Вот шаг AWS CodeDeploy и конфигурация выходной переменной.

enter image description here

Ниже приведен шаг с использованием этой переменной.

enter image description here

Вот ошибка вывода из конвейера сборки.

Задача развертывания кода:

Started deployment of new revision to deployment group VSTSEc2Targets for application VSTSTestApp, deployment ID d-PN4UXHVJO
Setting output variable deployment_id with the ID of the deployment
Waiting for deployment to complete

Задача CLI AWS:

[command]C:\windows\system32\cmd.exe /D /S /C "C:\hostedtoolcache\windows\Python\3.6.8\x64\Scripts\aws.cmd deploy get-deployment --deployment-id "$(codedeploy.deployment_id)""

An error occurred (InvalidDeploymentIdException) when calling the GetDeployment operation: Specified DeploymentId is not in the valid format: $(codedeploy.deployment_id)
##[error]Error: The process 'C:\hostedtoolcache\windows\Python\3.6.8\x64\Scripts\aws.cmd' failed with exit code 255

Кажется, что она не преобразует переменную в фактическое значение. Кто-нибудь может помочь?

Я протестировал вывод переменной через PowerShell и получил эту ошибку:

variable check
codedeploy.deployment_id : The term 'codedeploy.deployment_id' is not recognized as the name of a cmdlet, function, 
script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is 
correct and try again.
At D:\a\_temp\4985f146-ca74-46a3-aed2-aa67cdc2e01a.ps1:5 char:14
+ Write-Host $(codedeploy.deployment_id)
+              ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (codedeploy.deployment_id:String) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : CommandNotFoundException

##[error]PowerShell exited with code '1'.
##[section]Finishing: PowerShell Script

Используя скрипт:

# Write your PowerShell commands here.

Write-Host "variable check"
Write-Host $(codedeploy.deployment_id)

1 Ответ

0 голосов
/ 08 ноября 2019

Решил это. Проблема была в моем синтаксисе. Я предположил, что вам нужно ссылаться на переменную, используя ссылку name.variable $ (reference.variable), когда на самом деле вам нужно только использовать $ (переменная). Имя ссылки - хотя и требуется указывать в определении задачи - не используется при ссылке на значение в другом месте. Я следовал документации Microsoft, в которой говорится следующее:

Использовать выходные данные в одном и том же задании

В разделе Выходные переменные дайте ссылку на задачу созданияимя. Затем на следующем этапе вы можете использовать форму $ (ReferenceName.VariableName) для ссылки на выходные переменные.

From: https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=classic%2Cbatch

...