Ошибка сценария задачи CmdLine конвейера Azure devops

Привет, я новичок в AzureDevops и конвейерах, я пытаюсь создать задачу CmdLine со сценарием, который устанавливает некоторые переменные на основе имени ветки, здесь сценарий:

- task: CmdLine@2
  displayName: Find Branch type
  inputs:
   script: |
     IF contains($(Build.SourceBranch), 'release')==True (set isLongBranch=True
      ) ELSE IF contains($(Build.SourceBranch), 'support') (set isLongBranch=True
      ) ELSE IF contains($(Build.SourceBranchName), 'develop') (set isLongBranch=True
      ) ELSE IF contains($(Build.SourceBranchName), 'master') (set isLongBranch=True
      ) ELSE IF contains($(Build.SourceBranch), 'hotfix') (set isLongBranch=True
      ) ELSE (set isLongBranch=False)
     IF contains($(Build.SourceBranch), 'release') (set isSonar=True
      ) ELSE IF contains($(Build.SourceBranch), 'support'), 'support')] (set isSonar=True
      ) ELSE IF contains($(Build.SourceBranchName), 'develop') (set isSonar=True
      ) ELSE IF contains($(Build.SourceBranchName), 'master') (set isSonar=False
      ) ELSE IF contains($(Build.SourceBranch), 'hotfix') (set isSonar=True
      ) ELSE IF contains($(Build.SourceBranch), 'feature') (set isSonar=True
      ) ELSE IF %isPoolRequest%==True (set isSonar=False
      ) ELSE (set isSonar=False)
      #echo $(Build.SourceBranch)
      #echo $(Build.SourceBranchName)

Ошибка, которую я получаю:

'релиз')==Правда была неожиданной. ##[ошибка]Cmd.exe остановлен. код выхода: '255'.


person Haytham    schedule 04.05.2021    source источник
comment
Как насчет вопроса? Решил ли приведенный ниже ответ ваш вопрос. Если нет, не могли бы вы сообщить мне последнюю информацию об этой проблеме?   -  person Leo Liu-MSFT    schedule 11.05.2021


Ответы (1)


Ошибка сценария задачи CmdLine конвейера Azure devops

Я получил ту же ошибку с вами, если я использую тот же код, что и вы.

Как правило, мы используем findstr, чтобы проверить, содержит ли переменная подстроку, например:

echo $(Build.SourceBranch) | findstr "release" >nul &&(
    echo "include"
)

В качестве альтернативы вы можете использовать сценарии powershell для этого:

$files = @("$(Build.SourceBranch)")
$excludeTypes = @("*release*","*support*", "*master*")

    foreach ($type in $excludeTypes) {
        if ($file -like $type) { 
            Write-Host ("Match found: {0} matches {1}" -f $file, $type)
            $Env:isLongBranch = true
        } 
          else
        {
          $Env:isLongBranch = False
        }
    }

Вы можете проверить эту тему для более подробной информации.

person Leo Liu-MSFT    schedule 05.05.2021