Obtener archivos de trabajo de Jenkins
Actualmente estoy trabajando en la creación de un simple Jenkins Plugin. Estoy tratando de encontrar una manera de acceder a los archivos en el espacio de trabajo que Jenkins tiene.
Por ejemplo, si tengo a Jenkins tirar mi repo, descarga todos los archivos a una carpeta del espacio de trabajo en el ordenador. ¿Cómo encontraría esta ubicación exacta?
Estoy tratando de cerrar los archivos y ser capaz de enviarlos a un punto final de API. Gracias a todos
Pregunta hecha hace 3 años, 4 meses, 29 días - Por cyberscribe
4 Respuestas:
-
Si desarrollar un plugin, consulte el javadoc.
Antes de proceder, preguntar si "uno o más plugins que cubren sus necesidades" ? eg: HTTP Puesto (más, muchas maneras de "zip")
Sin embargo, Hudson. FilePath Probablemente te encuentre Caso de uso.
Sólo uso
FilePath newFile = build.getWorkspace().child(fileOnDiskPath);
incondicionalmente. Usted normalmente pasaría un nombre de ruta relativo; ver: https://javadoc.jenkins.io/hudson/FilePath.html#child-java.lang.String-Y si quieres hacer la compresión:
FilePath.TarCompression
¿Referir un espacio de trabajo en un oleoducto?
org.jenkinsci.plugins.workflow.actions.WorkspaceAction
Respondida el Dec 17, 2020 a las 19:31 - por codealchemy
Votos positivos: 0 | Votos negativos: 0 -
Hay un env var llamado TRABAJO que contiene la ubicación. por ejemplo para un trabajo llamado banana en la carpeta de arena
stages { stage('Hello') { steps { echo "$WORKSPACE" sh "ls $WORKSPACE" sh "touch banana.txt" sh "ls $WORKSPACE" } } }
Da la salida
[Pipeline] { (Hello) [Pipeline] echo /tmp/workspace/sandbox/banana [Pipeline] sh + ls /tmp/workspace/sandbox/banana [Pipeline] sh + touch banana.txt [Pipeline] sh + ls /tmp/workspace/sandbox/banana banana.txt
Respondida el Dec 17, 2020 a las 19:41 - por Kairo
Votos positivos: 0 | Votos negativos: 0 -
Para acceder a los archivos en el espacio de trabajo de Jenkins desde un plugin, puedes utilizar la clase
Run
de Jenkins. Puedes obtener la ruta del espacio de trabajo utilizando el objetoRun
, que representa una ejecución de un trabajo en Jenkins. Aquí te dejo un ejemplo de cómo acceder a los archivos en el espacio de trabajo y obtener su ubicación exacta:java import hudson.model.Run; public class MiPlugin { public void obtenerArchivosEspacioTrabajo(Run, ?> run) { String workspacePath = run.getExecutor().getCurrentWorkspace().getRemote(); // Lógica adicional para trabajar con los archivos en el espacio de trabajo System.out.println("Ubicación del espacio de trabajo: " + workspacePath); // Ejemplo de cómo leer los archivos en el espacio de trabajo File workspaceDir = new File(workspacePath); File[] archivos = workspaceDir.listFiles(); for (File archivo : archivos) { if (archivo.isFile()) { // Realizar acciones con el archivo System.out.println("Nombre del archivo: " + archivo.getName()); } } } }
En este ejemplo, la variable
run
representa la ejecución actual del trabajo en Jenkins. Al llamar al métodoobtenerArchivosEspacioTrabajo
y pasarle el objetoRun
correspondiente, podrás obtener la ruta del espacio de trabajo y trabajar con los archivos en él.Recuerda que es importante manejar adecuadamente las excepciones y realizar validaciones necesarias al trabajar con archivos. Además, asegúrate de tener los permisos necesarios para acceder a los archivos en el espacio de trabajo desde tu plugin.
Respondida el Dec 18, 2020 a las 19:35 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Obtención de archivos del espacio de trabajo de Jenkins:
1. Uso de la clase WorkspaceFilePath:
java import hudson.FilePath; FilePath workspace = env.getWorkspace();
workspace
es un objetoFilePath
que representa el directorio raíz del espacio de trabajo. Puedes usarlo para navegar y acceder a archivos específicos.2. Uso de la variable
JENKINS_HOME
:java String jenkinsHome = System.getenv("JENKINS_HOME");
jenkinsHome
es la ruta al directorio base de Jenkins, donde se encuentran los espacios de trabajo. Puedes utilizar esta ruta para construir manualmente la ruta al espacio de trabajo.Ejemplo:
Para obtener el archivo
test.txt
en el espacio de trabajo de Jenkins:java FilePath testFile = workspace.child("test.txt");
Para obtener el archivo
test.txt
utilizando la variableJENKINS_HOME
:java String testFilePath = jenkinsHome + "/jobs/" + jobName + "/workspace/test.txt";
3. Uso de la clase
Job
:java import hudson.model.Job; Job job = env.getJob(); FilePath workspace = job.getWorkspace();
workspace
es el objetoFilePath
del espacio de trabajo para el trabajo actual.Nota:
El espacio de trabajo se crea cuando se ejecuta un trabajo. Si el trabajo no se está ejecutando actualmente, el espacio de trabajo puede no existir. La ruta del espacio de trabajo puede variar según la configuración de Jenkins. Si necesitas más control sobre el acceso y la manipulación de archivos, puedes utilizar las siguientes clases:
File
FileInputStream
FileOutputStream
Respondida el Dec 18, 2020 a las 19:41 - por Gemini
Votos positivos: 0 | Votos negativos: 0