2014-01-20 3 views
3

Я пытаюсь выпустить свои артефакты на OSS Sonatype Nexus Server, используя Jenkins. Но при попытке подписания для артефактов я получаю следующую ошибку. Я создал свои gpg-ключи и подключился к папке C:/Users/Sara/AppData/Roaming/gnupg на моей машине с Windows. Из другого вопроса Where to keep a GPG secret key for a Maven project in CI environment? я мог видеть, что ответ для среды, основанной на Unix. Может ли кто-нибудь пролить свет на то, где разместить секретные ключи для дженкинсов в среде Windows?Где хранить секретный ключ GPG для Jenkins, работающий в Windows?

[INFO] --- maven-gpg-plugin:1.1:sign (sign-artifacts) @ StudentEnrollmentWithREST --- 
    gpg: no default secret key: secret key not available 
    gpg: signing failed: secret key not available 
    [INFO] ------------------------------------------------------------------------ 
    [INFO] BUILD FAILURE 
    [INFO] ------------------------------------------------------------------------ 
    [INFO] Total time: 1:27.647s 
    [INFO] Finished at: Mon Jan 20 12:12:27 CST 2014 
    [INFO] Final Memory: 22M/53M 
    [INFO] ------------------------------------------------------------------------ 
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-gpg-plugin:1.1:sign (sign-artifacts) on project StudentEnrollmentWithREST: Exit code: 2 -> [Help 1] 
    [ERROR] 
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
    [ERROR] Re-run Maven using the -X switch to enable full debug logging. 
    [ERROR] 
    [ERROR] For more information about the errors and possible solutions, please read the following articles: 
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 1:45.118s 
[INFO] Finished at: Mon Jan 20 12:12:33 CST 2014 
[INFO] Final Memory: 8M/19M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.1:prepare (default-cli) on project StudentEnrollmentWithREST: Maven execution failed, exit code: '1' -> [Help 1] 
[JENKINS] Archiving C:\Program Files (x86)\Jenkins\workspace\Upload REST Release Artifacts\pom.xml to com.github.elizabetht/StudentEnrollmentWithREST/1.3-SNAPSHOT/StudentEnrollmentWithREST-1.3-SNAPSHOT.pom 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException 
channel stopped 
Skipping Cobertura coverage report as build was not UNSTABLE or better ... 
Finished: FAILURE 

ответ

3

Согласно документации gpg:sign.
${gpg.homedir}, который по умолчанию равен ~/.gnupg или %APPDATA%/gnupg, должен найти ваш ключ в папке, которую вы в настоящее время описали. Файлы по умолчанию pubring.gpg и secring.gpg по умолчанию также могут быть настроены.

Возможно, проблема заключается в поиске правильного ключа, maven использует «ключ по умолчанию», если не задано иное. Первый ключ в keyring по умолчанию.

Выбор ключа - это может перейти в проект/родителей или настроек, или даже на командной строке

<properties> 
    <gpg.keyname>C78F3CC4</gpg.keyname> 
</properties> 

Некоторые другие конфигурации, скорее всего, будет «на хозяина», может быть, профиль в настройках. XML

<profile> 
    <id>gpg-release</id> 
    <properties> 
     <gpg.passphrase>...</gpg.passphrase> 
     <gpg.useagent>true</gpg.useagent> 
<!-- 
     <gpg.defaultKeyring>false</gpg.defaultKeyring> 
     <gpg.homedir>/private/.../.gnupg</gpg.homedir> 
     <gpg.publicKeyring>/private/.../.gnupg/pubring.gpg</gpg.publicKeyring> 
     <gpg.secretKeyring>/private/.../.gnupg/secring.gpg</gpg.secretKeyring> 
--> 
    </properties> 
</profile> 

Если вы используете командную строку с ОССОМ Sonatype, а не в своей настройках XML, то это будет нуждаться в дальнейшей гимнастике.
От OSS Sonatype documentation.
Поскольку Maven-релиз-плагин запустит новый Maven экземпляр, -Dgpg.passphrase=PASSPHRASE не будет работать в этом случае, вместо этого, вы должны использовать mvn release:perform -Darguments=-Dgpg.passphrase=PASSPHRASE [и настроить в использовании проекта пом в $ {аргументы}]

1

Добавление раздела профиля, как показано ниже в settings.xml работал

<profile> 
<id>gpg-release</id> 
<properties> 
<gpg.passphrase>password</gpg.passphrase> 
<gpg.useagent>true</gpg.useagent> 
<gpg.defaultKeyring>false</gpg.defaultKeyring> <gpg.homedir>C:/Users/User/AppData/Roaming/gnupg</gpg.homedir> <gpg.publicKeyring>C:/Users/User/AppData/Roaming/gnupg/pubring.gpg</gpg.publicKe‌​yring> <gpg.secretKeyring>C:/Users/User/AppData/Roaming/gnupg/secring.gpg</gpg.secre‌​tKeyring> </properties> 
</profile> 
1

Вы можете сохранить свой ключ GPG в Jenkins в Jenkins управления/Configure-системы. Существует ключевой раздел подписи RPM, в котором вы можете добавить свои ключи GPG. Перед тем, как добавить дополнительный плагин в Jenkins

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