Nunca he trabajado con el plugin S3 para Jenkins (pero ahora que sé que existe, podría intentarlo), sin embargo, mirando el código, parece que solo puedes hacer lo que quieras usando una solución alternativa .
Aquí es lo que el código del plugin real no (tomado de github) --que eliminado las partes del código que no son relevantes para facilitar la lectura:
clase hudson.plugins.s3.S3Profile
, método upload
:
final Destination dest = new Destination(bucketName,filePath.getName());
getClient().putObject(dest.bucketName, dest.objectName, filePath.read(), metadata);
Ahora bien, si se echa un vistazo a JavaDoc hudson.FilePath.getName()
's:
Obtiene sólo la parte de nombre de archivo sin directorios.
Ahora, echar un vistazo a la hudson.plugins.s3.Destination
's constructor:
public Destination(final String userBucketName, final String fileName) {
if (userBucketName == null || fileName == null)
throw new IllegalArgumentException("Not defined for null parameters: "+userBucketName+","+fileName);
final String[] bucketNameArray = userBucketName.split("/", 2);
bucketName = bucketNameArray[0];
if (bucketNameArray.length > 1) {
objectName = bucketNameArray[1] + "/" + fileName;
} else {
objectName = fileName;
}
}
el Javadoc Destination
clase dice:
La convención implementado aquí es que un/en un nombre de depósito es usado para construir una estructura en el nombre del objeto. Es decir, un archivo de .txt al nombre del paquete de "mybucket/v1" hará que se cree el objeto "v1/file.txt" en mybucket.
Conclusión: los filePath.getName()
tiras de llamada con el prefijo (S3 no tiene ningún directorio, sino más bien prefijos, ver this y this hilos para más información) se añaden al archivo. Si realmente necesita poner sus archivos en una "carpeta" (es decir, tener un prefijo específico que contiene una barra inclinada (/
)), le sugiero que agregue este prefijo al final de su nombre de depósito, como se explicita en la clase JavaDoc Destination
.
Yo sugeriría usar t él JClouds Enchufe ahora. – Aron
JClouds tampoco es genial; sigue fallando con un error oscuro sobre la transmisión. Tener que recurrir a una herramienta CLI para esto es ridículo ... – aendrew
s3cmd no es óptimo, ya que requiere una tienda separada para las credenciales de aws. El uso de s3 de los perfiles s3 para la autenticación tiene sus méritos. De acuerdo en que preservar la jerarquía de artefactos sería preferible al comportamiento actual. –