Agregue credenciales para permitir que Travis-CI use un repositorio de Nexus privado
Pregunta
Estoy usando Travis para la integración continua.Sin embargo, mis proyectos dependen de un repositorio de nexo privado.Preferiría no verificar las credenciales SBT en nuestro repositorio.Travis admite claves de cifrado pero solo afectan las variables de entorno.
¿Cómo puedo obtener Travis para autenticar contra Nexus?sbt
no parece que admite credenciales de una variable de entorno.
https://github.com/sbt/sbt/blob/0.13/launch/src/main/scala/xsbt/boot/update.scala#l56
Parece que hay soporte para especificar un archivo de credenciales de una variable de entorno, o para especificar las credenciales como propiedades del sistema.Desafortunadamente, esto no parecía funcionar con 0.13
.
sbt -Dsbt.boot.realm="Sonatype Nexus Repository Manager" -Dsbt.boot.host="www.there.com" -Dsbt.boot.user="deployment" -Dsbt.boot.password="password" aether-deploy
Solución
Puede establecer variables globales en su .travis.yml como se define aquí: http://docs.travis-ci.com/user/ CONFIGURACIÓN DE CONSTRUCCIÓN / # CONFIGURACIÓN DE MEDIO entIBIENTE-VARIABLES
Aquellos VAR globales se pueden cifrar para Travis utilizando la gema Travis.Explicado por ej.aquí: Cómo usar Travis-ci's .travis.yml para proporcionar parámetros de entorno para la aplicación NOde.js?
Otros consejos
You want to use Travis secure environment variables as documented. Assuming your environment variables are NEXUS_USER
and NEXUS_PASS
, the command line needs to be:
sbt 'set credentials += Credentials("Sonatype Nexus Repository Manager", "www.there.com", System.getenv("NEXUS_USER"), System.getenv("NEXUS_PASS"))' aether-deploy
You could also safely have that line in your build.sbt
, if you wanted to make that a standard practice for your builds.
The Jackson Scala Module uses this for deploying Travis builds to the Sonatype OSS repository. You can our .travis.yml
to see how it's set up.