Синтаксический анализ параметров программы 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\"]}"
        }
      ]
Другие вопросы по тегам