Wie verwenden von Umgebungsvariablen erstellen.sbt?
Möchte ich, Umgebungsvariablen zu verwenden, um an meinem repo-Anmeldeinformationen bei Verwendung gebaut.sbt.
Ich habe versucht, Dinge wie diese, aber die details nicht abgeholt.
credentials += Credentials("Some Nexus Repository Manager", "my.artifact.repo.net", System.getenv("USERNAME"), System.getenv("PASSWORD"))
Ich habe auch versucht, eine credentials-Datei unter ~/.sbt/aber ich bin mir nicht sicher, wie Sie Sie zum hinzufügen von Umgebungsvariablen, die.
Wenn ich tippe einfach meinen Benutzernamen und mein Passwort in der Regel in der credentials-Datei, es funktioniert so weiß ich, dass die log-in Daten sind ok.
Zusätzlich:
Ich Quelle die environment vars in eine shell vor der Ausführung von sbt kompilieren.
Läuft
credentials += Credentials("Realm", "my.artifact.repo.net", sys.env("USERNAME"), sys.env("PASSWORD"))
Ergebnisse in einer Verbotenen url-Fehler.
Soll ich sagen, ich bin stecken versucht, Abhängigkeiten aufzulösen
UPDATE:
Im Folgenden gibt Sie den richtigen Wert
eval scala.sys.env("ARTIFACTORY_USERNAME")
Aber wenn ich das in mein script
val username = scala.sys.env("ARTIFACTORY_USERNAME")
val password = scala.sys.env("ARTIFACTORY_PASSWORD")
credentials += Credentials("Artifactory Realm", "artifactory.link.io", username, password)
resolvers ++= Seq(
"Artifactory Snapshot" at "https://artifactory.link.io/art/libs-snapshot"
)
oder
credentials += Credentials("Artifactory Realm", "my.artifact.repo.net", sys.env("ARTIFACTORY_USERNAME"), sys.env("ARTIFACTORY_PASSWORD"))
Bekomme ich eine VERBOTENE URL-Fehler, das deutet darauf hin, dass die scala Teil läuft ok, aber für einige Grund die Zugangsdaten sind immer noch falsch. Wenn ich explizit festlegen der Anmeldeinformationen in der build.sbt-es funktioniert.
- Sind Sie mit der environment-Variablen oder die JVM-Eigenschaften? Sind die Umgebungsvariablen in der shell? Wie funktioniert "nicht immer abgeholt", sich selbst auszudrücken, sind die Werte null?
- Hinzugefügt einige Sachen, diese zu beantworten. Ich denke, die Werte sind null-basierend auf der Fehlermeldung
- Sie können dies überprüfen. von Ihrem Skript ausführen
sbt shell
und geben Sie danneval sys.env("USERNAME")
und es sollte zeigen das Wert, wenn es vorhanden ist. - Ich kann den Benutzernamen und das Passwort mit dieser Methode. Aber mit den Anmeldeinformationen += Credentials("Reich", "my.artifact.repo.net", sys.env("USERNAME"), sys.env("PASSWORT")) führt zu einer [error] Unable to find Anmeldeinformationen für ["Realm" @ "my.artifact.repo.net",] Fehler
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erhalten Sie env-Variablen mit den Befehlen andere Antworten wie:
aber Sie wieder eine option vom Typ Option[String]
Diese in den string, den Sie entweder ein match oder nutzen Sie einfach
wenn Sie brauchen, um einige default-Wert. Warnung! Berufung ist .Holen Sie sich eine option, die nicht Wert haben, wird Ihnen ein runtime error.
sys.env.getOrElse("USERNAME", "some default value")
?Können Sie alles verwenden, das funktioniert in Scala sbt, zum Beispiel:
sys.env("PASSWORD")
stattHinzufügen von code, um das Beispiel, das senden von Anmeldeinformationen, die Zeichenfolgen für Benutzer-id und Passwort:
Immer die Umgebungsvariablen über
sys.env("VARIABLE")
oderSystem.getenv("VARIABLE")
beide arbeiten bauen.sbt-wenn Sie korrekt exportiert.Möglicherweise müssen setup Ihre Anmeldeinformationen korrekt (Allgemeine Hinweise).
Für Artifactory, es sollte wie folgt Aussehen:
Beachten Sie, dass "Artifactory Reich" ist hier nicht eine beliebige Zeichenfolge und muss eigentlich genau so, wie angegeben.
Vollständige Anleitung: https://www.jfrog.com/confluence/display/RTF/SBT+ - Repositories
resolvers += "my artifactory" at "http://my.artifactory.io"
oder mit einem Datei-Repositorys: jfrog.com/confluence/display/RTF/...Können Sie auch
(sys.env.get("USERNAME"), sys.env.get("PASSWORD")) match ...
hat nicht funktioniert mit sbt 1.1.1.Alternative Lösung von JFrog, hier ist ein Beispiel auf github
https://github.com/jfrog/project-examples/tree/master/circleci-example/circleci-sbt-artifactory
Erstellen Sie eine
credentials.properties
- Datei im Stammverzeichnis Ihres Projekts statt~/.sbt/credentials
. Fügen Sie es zu.gitignore
.Generieren Sie die Datei, während vor dem Bau Zeit und machen Sie einen Verweis darauf in Ihre
build.sbt