Синтаксический анализ параметров программы Java с помощью picocli не работает на этапе запуска задания Spinnaker.
Я запускаю основную программу java с аргументами, используя задачу запуска плагина Gradle. Программа использует picocli для разбора аргументов командной строки. Это прекрасно работает при запуске в моей среде Dev с помощью следующей команды:
./gradlew run --args="-ahttp://foo.com/bar -dmydeviceid"
Это также работает нормально, когда я ssh в Docker-контейнер для моего образа приложения Docker.
Однако, если я запускаю ту же задачу запуска Gradle на этапе запуска задания конвейера Spinnaker с тем же образом докера, это не работает. Операторы журнала показывают, что аргументы получены программой правильно, но не обработаны picocli. Я предполагаю, что это потому, что генератор кода для picocli по какой-то причине не работает в конвейере Run Job of Spinnaker.
Любые предложения, как это исправить.
1 ответ
Я нашел обходной путь. Вместо того, чтобы запускать программу, используя 'gradle run', я создал шеллскрипт, который использует дистрибутив tar для программы, созданной плагином gradle application.
Вот как выглядит скрипт:
#!/usr/bin/env bash
# Build application tar
gradle -i distTar
tar -xvf ./build/distributions/apk-deployer-cli.tar
./apk-deployer-cli/bin/apk-deployer-cli -a $APK_URL -d $DEVICE_ID
Затем в конфигурации этапа spinnaker я установил $APK_URL и $DEVICE_ID как часть переменных env для этапа следующим образом:
"envVars": [
{
"name": "APK_URL",
"value": "${parameters[\"APK_URL\"]}"
},
{
"name": "DEVICE_ID",
"value": "${parameters[\"DEVICE_ID\"]}"
}
]