Я создал конвейер Azure (CI) через файл YAML, который выполняет основные модели/макросы DBT в заданных последовательностях.
Я хочу объявить переменную, которая будет содержать значение, возвращаемое МАКРОСОМ DBT.
До сих пор я пробовал следующее:
variables:
dbtMacroOutput: ''
- script: |
echo $(Build.Reason)
pip install --upgrade pip
pip install dbt-snowflake --user
dbt run-operation myDbtMacro
$dbtMacroOutput := $(dbt run-operation myDbtMacro) # Capture the actual output
Write-Host "##vso[task.setvariable variable=dbtMacroResult]$dbtMacroOutput"
echo "The dbt macro result is $(dbtMacroOutput)"
displayName: Use dbtMacroOutput dbtMacroOutput: '' # Initialize with an empty string
Но при выполнении я получаю сообщение
:= команда не найдена
Может ли кто-нибудь подсказать, возможно ли этого достичь?
Кроме того, установлен ли инструмент dbt в агент сборки?
@RuiJarimba: Да
Будет ли dbtMacroResult использоваться на этапах одной и той же работы? Или на другой работе/этапе?
@RuiJarimba Это все части одной работы
мой ответ помог тебе решить твою проблему?





Кажется, в вашем коде есть несколько проблем:
:= недействителен — используйте оператор =, чтобы присвоить значение переменной.pwsh или PowerShell@2 вместо script.dbtMacroOutput объявляется вверху, но вы пытаетесь установить переменную dbtMacroResult в задаче?В приведенном ниже примере показано, как установить и использовать переменную конвейера в одном задании.
Для простоты я удалил связанные dbt команды — вам должно быть достаточно легко адаптировать их к вашему сценарию:
trigger: none
pool:
vmImage: 'ubuntu-latest'
jobs:
- job: A
displayName: 'Set pipeline variable'
steps:
- pwsh: |
# set other commands here
$dbtMacroOutput = "value1" # replace with output of dbt command
Write-Host "##vso[task.setvariable variable=dbtMacroResult]$dbtMacroOutput"
displayName: Set pipeline variable dbtMacroResult
name: setVariableStep
- pwsh: |
Write-Host "The dbt macro result is $(dbtMacroResult)"
displayName: Use pipeline variable dbtMacroResult
Обратите внимание: если вы хотите сделать переменную доступной для будущих заданий, вы должны пометить ее как выходную переменную, используя isOutput=true.
См. Установка выходной переменной для нескольких заданий и Использование выходных переменных из задач для получения более подробной информации.
Стоит ли использовать
=вместо:=?