2017-01-19 8 views
1

Я пытаюсь опубликовать проект на Artifactory Maven репо, но я получаю следующую ошибку (409) конфликт:Artifactory возвращает 409 для ПОМ при запуске SBT публиковать

[error] (kamon-cloudwatch/*:publish) java.io.IOException: PUT operation to URL https://[org].artifactoryonline.com/[org]/libs-release-local/kamon-cloudwatch/kamon-cloudwatch_2.11/0.6.5-SNAPSHOT/kamon-cloudwatch_2.11-0.6.5-SNAPSHOT.pom failed with status code 409: Conflict 

Вот соответствующая часть из мой build.sbt

publishTo := sys.env.get("BUILD_NUMBER") 
    .map(_ => Some("Artifactory Realm" at "https://[org].artifactoryonline.com/[org]/libs-snapshot-local;build.timestamp=" + new java.util.Date().getTime)) 
    .getOrElse(Some("Artifactory Realm" at "https://[org].artifactoryonline.com/[org]/libs-release-local")), 
credentials += Credentials(
    "Artifactory Realm", 
    "[org].artifactoryonline.com", 
    sys.env.get("ARTIFACTORY_USER").getOrElse(""), 
    sys.env.get("ARTIFACTORY_KEY").getOrElse("") 
) 

Решения, которые envolve изменение параметров на стороне Artifactory не являются вариантом, так как я не являюсь администратором репозитория.

(также не возражал бы лучшее решение для хранения учетных данных)

ответ

0

Оказывается Artifactory не нравится -snapshot в моей версии. Вот то, что я в конечном итоге делает:

version := "0.6.5" + sys.env.get("BUILD_NUMBER").map("." + _ + "-SNAPSHOT").getOrElse(""), 

publishTo := { 
    if (isSnapshot.value) { 
    Some("Artifactory Realm" at "https://[org].artifactoryonline.com/[org]/libs-snapshot-local") 
    } else { 
    Some("Artifactory Realm" at "https://[org].artifactoryonline.com/[org]/libs-release-local") 
    } 
}, 
credentials += Credentials(Path.userHome/".ivy2"/".credentials") 

Мой билд релиз оставляет $BUILD_NUMBER пустой, так что нет номер сборки или -SNAPSHOT и поэтому он работает в настоящее время.

А вот что файл .credentials выглядит следующим образом:

realm=Artifactory Realm 
host=[org].artifactoryonline.com 
user=[user] 
password=[api-key] 
2

На самом деле, это установка для Maven/SBT хранилищ в Artifactory, которые можно настроить. Попробуйте отредактировать репозиторий, перейдя в Admin-> Repositories-> Local, а затем щелкнув по репозиторию Maven, к которому вы хотите развернуть. Затем просто установите флажок «Обрабатывать снимки», чтобы включить моментальные снимки в этом репозитории или «Обработать выпуски», чтобы разрешить выпуски, или оба без ограничений.

В качестве примечания к вашему второму комментарию, вы можете также настроить учетные данные непосредственно в build.sbt, а не установки переменных окружения, как вы едите, ниже приведен пример:

publishTo: = Некоторые ("Artifactory Realm" в "http://localhost:8081/artifactory/ ") полномочия + = полномочия (" Artifactory Realm", "локальный", "администратор", "пароль")

Где админы пользователь и пароль пароль. Обратите внимание, что это потенциальный риск безопасности, хранящий в файле обычный текст (или зашифрованный/api ключ). Однако вам решать, как лучше всего управлять безопасностью.

+0

К сожалению, у меня нет прав на управление репозиториями. Это настраиваемая политика компании. Что касается учетных данных, я должен уточнить, что в моем вопросе, но причина использования переменных среды заключается в том, что я не хочу хранить их в файле build.sbt. Я также обновляю свой ответ, потому что в итоге я использовал файл '.credentials' в папке' .ivy2'. –