«Нет такого файла или каталога» на Travis при использовании кавычек вокруг пути - PullRequest
0 голосов
/ 24 марта 2020

У меня работает сборка Maven на экземпляре Travis. В ходе своих интеграционных испытаний реактор Maven выполняет команды ОС, заданные c, используя ProcessBuilder, скажем:

String executeable = createAbsoluteFileString("hello-world.bat"); // or "hello-world.sh" for Linux

List<String> commands = new ArrayList<>();
commands.add("\"" + executeable  + "\""); 
commands.add("arg1");
commands.add("arg2");

ProcessBuilder pb = new ProcessBuilder(commands);
pb.redirectOutput(Redirect.INHERIT);
pb.redirectError(Redirect.INHERIT);
pb.start().waitFor();

На Windows это работает из IDE и сборки Maven без проблем. ,

На моем сервере Travis, который является Ubuntu, я получаю следующее исключение:

java.io.IOException: Cannot run program ""/home/travis/build/myname/myproject/myproject-it/path/hello-world.sh"": error=2, No such file or directory

Я думал, что проблема была с разрешением, поэтому я добавил следующее в конфигурацию в .travis.yml :

before_install:
  - sudo chmod a+x "/home/travis/build/myname/myproject/myproject-it/path/hello-world.sh"
  - ls -ails "/home/travis/build/myname/myproject/myproject-it/path/hello-world.sh"

Он печатает разрешения в виде "-rwxrwxr-x", что выглядит нормально для меня.

Поэтому я попытался проверить, могу ли я выполнить файл перед запуском сборки Maven:

before_install:
  - ...
  - /home/travis/build/myname/myproject/myproject-it/path/hello-world.sh arg1 arg2

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

Итак, я проверил это, и если я удаляю кавычки вокруг команды в ProcessBuilder, она также работает. Проблема в том, что я не могу убедиться, что на пути нет пробелов, поэтому я не могу их пропустить.

Так что я думаю, что это проблема Linux (возможно, кавычки неправильные символ?) или проблема Трэвиса (на моих очень старых компьютерных кавычках Cinnamon Mint работает), но, может быть, у кого-то еще есть понимание.

Как мне исправить эту проблему на моем сервере Travis?

...