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.

    As Jesse Glick explica:

    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 objeto Run, 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étodo obtenerArchivosEspacioTrabajo y pasarle el objeto Run 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 objeto FilePath 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 variable JENKINS_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 objeto FilePath 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