Bash-скрипт Azure DevOps не видит двоичные файлы в PATH - PullRequest
1 голос
/ 03 июня 2019

Я пытаюсь выполнить скрипт Bash в моем конвейере сборки, который запускается на агенте с собственным хостом. Я сталкиваюсь с ошибкой:

##[section]Starting: Bash
==============================================================================
Task         : Bash
Description  : Run a Bash script on macOS, Linux, or Windows
Version      : 3.148.2
Author       : Microsoft Corporation
Help         : [More Information](https://go.microsoft.com/fwlink/?LinkID=613738)
==============================================================================
Generating script.
[command]C:\WINDOWS\system32\bash.exe --noprofile --norc -c pwd
/mnt/c/agent/_work/1/s/utilities/Uncrustify
Formatted command: . '/mnt/c/agent/_work/1/s/utilities/Uncrustify/check.sh'
[command]C:\WINDOWS\system32\bash.exe --noprofile --norc -c pwd
/mnt/c/agent/_work/_temp
========================== Starting Command Output ===========================
[command]C:\WINDOWS\system32\bash.exe --noprofile --norc /mnt/c/agent/_work/_temp/146cb6ce-a7e9-48f6-b4f9-6cde2bf22685.sh
/mnt/c/agent/_work/1/s/utilities/Uncrustify/check.sh: line 27: uncrustify: command not found
##[error]Bash exited with code '127'.
##[error]Bash wrote one or more lines to the standard error stream.
##[section]Finishing: Bash

Скрипт check.sh просто запускает uncrustify:

#!/bin/bash

# Absolute path to this script, e.g. /home/user/bin/foo.sh
SCRIPT="$0"

# Absolute path this script is in, e.g. /home/user/bin/
SCRIPTPATH="$(dirname -- "$SCRIPT")"

# Relative path from this script to the top level of this repo.
GITREPO="$SCRIPTPATH/../.."

uncrustify --check -c "$GITREPO/.uncrustify.cfg" \
    $(find "$GITREPO" -name "*.c" -o -name "*.cpp" -o -name "*.cxx" -o -name "*.h" -o -name "*.hpp" -o -name "*.hxx")

Задача bash в azure-pipelines.yml:

- task: Bash@3
  inputs:
    filePath: 'utilities/Uncrustify/check.sh'
    displayName: 'Verify coding standard compliance'
    failOnStderr: true

Я проверил, что uncrustify.exe существует в PATH, который находится в /mnt/c/ProgramData/chocolatey/bin. Я не уверен, что я делаю неправильно. Нужно ли делать что-то особенное, чтобы скрипт bash мог вызывать другие исполняемые файлы, которые могут находиться в PATH?

1 Ответ

0 голосов
/ 04 июня 2019

Примерно через час проб и ошибок было исправлено явное указание расширения в сценарии оболочки.

uncrustify --check -c "$GITREPO/.uncrustify.cfg" \
    $(find "$GITREPO" -name "*.c" -o -name "*.cpp" -o -name "*.cxx" -o -name "*.h" -o -name "*.hpp" -o -name "*.hxx")

стало:

uncrustify.exe --check -c "$GITREPO/.uncrustify.cfg" \
    $(find "$GITREPO" -name "*.c" -o -name "*.cpp" -o -name "*.cxx" -o -name "*.h" -o -name "*.hpp" -o -name "*.hxx")

Такая незначительная вещь.Это не проблема, если вы выполняете его вручную в любой из моих установок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...