Переменная конвейера Azure для хранения возвращаемого значения основного макроса DBT

Я создал конвейер 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

Но при выполнении я получаю сообщение

:= команда не найдена

Может ли кто-нибудь подсказать, возможно ли этого достичь?

Стоит ли использовать = вместо :=?

Rui Jarimba 26.05.2024 13:11

Кроме того, установлен ли инструмент dbt в агент сборки?

Rui Jarimba 26.05.2024 13:11

@RuiJarimba: Да

Rajas Patil 26.05.2024 13:26

Будет ли dbtMacroResult использоваться на этапах одной и той же работы? Или на другой работе/этапе?

Rui Jarimba 26.05.2024 13:33

@RuiJarimba Это все части одной работы

Rajas Patil 26.05.2024 13:46

мой ответ помог тебе решить твою проблему?

Rui Jarimba 29.05.2024 15:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
6
81
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Кажется, в вашем коде есть несколько проблем:

  • Синтаксис := недействителен — используйте оператор =, чтобы присвоить значение переменной.
  • Для запуска команд Powershell вам следует использовать задачу 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.

См. Установка выходной переменной для нескольких заданий и Использование выходных переменных из задач для получения более подробной информации.

Другие вопросы по теме