Almacenar las credenciales de docker registry de forma más segura

Cuando haces login en un docker registry por defecto almacena las credenciales (basic auth) en un fichero de texto sin encriptar en $HOME/.docker/config.json.

Para que no almacene las credenciales ahí y utilice el almacen del sistema (por ejemplo gnome-keyring):

Descargar una release de este proyecto:

https://github.com/docker/docker-credential-helpers/

En este momento la versión es 0.6.0 y puede ser descargada de aquí:

https://github.com/docker/docker-credential-helpers/releases/download/v0.6.0/docker-credential-secretservice-v0.6.0-amd64.tar.gz

Extraer el fichero docker-credential-secretservice y colocarlo en algún sitio en el $PATH.

Hacer logout de los registry a los que estés logado actualmente:

$ docker logout docker.registry.url

Modificar $HOME/.docker/config.json añadiendo la clave credStore con el valor secretservice.

{
  "auths": {
    "docker.registry.url": {}
  },
  "HttpHeaders": {
    "User-Agent": "Docker-Client/18.09.1 (linux)"
  },
  "credsStore": "secretservice"
}

Esto es para GNU/Linux, para el resto de sistemas ver el siguiente enlace ya que no lo he probado:

https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Ocultar las credenciales de TestFairy a ojos curiosos

Como me resulta muy molesto tener que ir actualizando el número de versión cada vez que quiero subir un apk, últimamente vengo usando TestFairy y su plugin para Gradle.

La verdad es que funciona maravillosamente bién, pero siguiendo las instrucciones de la página del plugin parece que tuvieras que subir las credenciales (apiKey) en el repositorio de código fuente.

Para ello crearemos un fichero gradle.properties. Yo lo he puesto en la ruta $HOME/.gradle/gradle.properties pero puedes ponerlo en otros sitios.

$ cat $HOME/.gradle/gradle.properties
MyProjectTestFairyApiKey=blahblahblahblah

Es interesante conocer que todas las propiedades que pongamos aquí, estarán disponibles en el script de Gradle automáticamente.

En el build.gradle dónde va la api key, ponemos el nombre de la preferencia que acabamos de definir en el otro fichero:

testfairyConfig {
	apiKey MyProjectTestFairyApiKey
	...
}

De esta forma, no tendremos que compartir las credenciales con todo el mundo que tenga acceso al código fuente.

Saludos