Я настраиваю работу jenkins freestyle с помощью шага сборки сценария bash с помощью команды ack. Почему я не получаю тот же результат, что и от команды bash в macOS?
Дженкинс настроен на эту macOS. Я использую версию sck 2.28. Я попытался указать точный путь к объявлению SCK.
DEVVER=$\(/usr/local/Cellar/ack/2.28/bin/ack /path/to/file/app.config.ts -o --match '(?<=devVersion = ")(\d+\.)(\d+\.)(\d+)'\)
echo ${DEVVER}
Ожидаемый результат:
1.9.16
Фактический результат:
/path/to/file/app.config.ts: line 1: export: `{': not a valid identifier
/path/to/file/app.config.ts: line 3: static: command not found
... (same for each line till 221;)
/path/to/file/app.config.ts: line 221: syntax error: unexpected end of file
/usr/local/bin
, поэтому в целом, если вы поместите/usr/local/bin
в свой PATH, вы можете просто использоватьack
и все остальное, что homebrew устанавливает, не вводя весь этот путь. с/usr/local/Cellar/ack/2.28...
Если хотите проверить, попробуйтеls -l /usr/local/bin/ack
- person Mark Setchell   schedule 13.06.2019/usr/local/Cellar/ack/2.28...
- person michal_lipski   schedule 13.06.2019DEVVER=$(ack ...)
- person Mark Setchell   schedule 13.06.2019/Jenkins/tmp/jenkins277369741079369146.sh: line 2: unexpected EOF while looking for matching
)'` - person michal_lipski   schedule 13.06.2019Empty changeset (manual trigger?), running build.
- person michal_lipski   schedule 13.06.2019)
- person Mark Setchell   schedule 13.06.2019ack
, напримерack ABC XYZ
, и протестируйте ее, пока она не напечатает то, что вы хотите, а затем окружите ееDEVVER=$(...)
. - person Mark Setchell   schedule 13.06.2019ack app.config.ts -o --match '(?<=devVersion = ")(\d+\.)(\d+\.)(\d+)'
как оболочку, но она выдала такой вывод:Empty changeset (manual trigger?), running build \n Build step 'Execute shell' marked build as failure
. Когда я набираю это в bash на Mac, я получаю вывод: 1.9.16 - person michal_lipski   schedule 13.06.2019#!/bin/bash function getVersion() { sudo chmod 777 /path/to/file/app.config.ts ack /path/to/file/app.config.ts -o --match '(?<=devVersion = ")(\d+\.)(\d+\.)(\d+)' } value=`getVersion` echo "$value"
Когда я запускаю этот скрипт bash /path/to/script в bash, он работает, но запуск его в jenkins возвращает пустое значение. Не знаю, почему - person michal_lipski   schedule 14.06.2019?<=
и заменилspaces
на.
и вырезал несоответствующие символы в найденной строке. - person michal_lipski   schedule 17.06.2019