2015-08-13 1 views
0

У меня проблема с одной из моих сборщиков jenkins.Как решить проблему с привязкой секретных файлов

У меня настроено в моих глобальных учетных данных, keystore для одного из моих android build. Это хранилище ключей необходимо, когда я должен подписать свой apk, чтобы распространять свое приложение в Google Play, например.

Таким образом, в работе, я настроил Секретный файл связывания, чтобы Дженкинс скопировать файл хранилищу во временную папку и устанавливает переменную, давайте назовем его SECRET_PATH, к этому месту. Затем я могу предоставить gradle значение этой переменной в командной строке, когда вызывает сценарий градиента (в разделе переключателей).

Но тогда сборка не может каждый раз:

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':myapp:packageRelease'. 
> Failed to read key ******** from store "/home/jenkins/slave/secretFiles/3607aab3-6e27-497a-b198-7d9a3aeb2913/keystore": Keystore was tampered with, or password was incorrect 

это как если бы место /дома/Jenkins/ведомый/secretFiles/3607aab3-6e27-497a-b198-7d9a3aeb2913/хранилище ключей не даже есть.

В конфигурации задания, наконечник помощи на креплений секции также упоминает об этом:

Warning: if the master or slave node has multiple executors, any other build running concurrently on the same node will be able to read the contents of this file. 

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

Еще одна вещь, я использую топологию master/slave, где все находится в докерезе. Не уверен, что сам докер работает. Я думаю, что это чисто проблема Дженкинса, но я даю эту информацию, чтобы вы, ребята, имели какой-то контекст.

Вы когда-нибудь испытывали это странное поведение, когда дженкинсы, похоже, не смогли «разрешить» секретные привязки файлов? Любая помощь будет действительно оценена.

заранее спасибо,

ответ

0

Failed to read key ******** from store "/home/jenkins/slave/secretFiles/3607aab3-6e27-497a-b198-7d9a3aeb2913/keystore": Keystore was tampered with, or password was incorrect

это как если бы место /.../keystore не существовало.

Нет, сообщение об ошибке правильно - файл ли существует, но, скорее всего, магазин пароль или ключ пароль, который вы предоставляете неверен.

Если хранилище ключей не существует, вы получите что-то вроде ошибки:
File '/.../release.keystore' specified for property 'signingConfig.storeFile' does not exist.

Вы можете еще раз проверить это, запустив file $SECRET_PATH/keystore или ls -l $SECRET_PATH/keystore, или с помощью keytool или что-то подобное.


Вы не упоминаете инъекционное хранилище ключей и пароль ключа (ов) на все в работу - как вы это делаете?

Сначала убедитесь, что сборка и подписание версии выпуска работает должным образом с помощью Gradle из командной строки.

Тогда вы можете попробовать сделать то же самое в Дженкинсе, передав имя файла и пароль с помощью шага Gradle (хотя это не отличная идея, если вы используете, например, плагин Истории конфигурации задания).

После этого вы можете использовать плагин привязки учетных данных для ввода файла и для ввода пароля.

Смежные вопросы