¿Cómo acceder a los artefactos de trabajo1 de Hudson desde otro trabajo2?
jenkins hudson-api (3)
Tenemos un trabajo de producción y un trabajo nocturno para un proyecto en Hudson. El trabajo de producción necesita sacar algunos artefactos de un # de compilación nocturno específico (que se proporciona como parámetro). ¿Alguien puede ayudarnos con una pista sobre cómo lograr esto?
El complemento Copy Artifact parece ser capaz de hacer esto.
Otro enfoque podría ser buscar el artefacto a través de
http://server/jobs/job1/[build #]/artifacts/
Puede usar las herramientas de configuración "Entorno de compilación" en la página de configuración del trabajo. Marque la casilla Configurar M2 Extra Build Steps y agregue un Shell de ejecución que grep cosas desde el artefacto deseado.
Tenemos una necesidad similar y usamos el siguiente sistema groovy:
import hudson.model.*
def currentBuild = Thread.currentThread().executable;
currentBuild.addAction(new ParametersAction(new StringParameterValue(''LAST_BUILD_STATUS'', ''FAILURE'')));
def buildJob = Hudson.instance.getJob("ArtifactJobName");
def artifacts = buildJob.getLastBuild().getArtifacts();
if (buildJob.getLastBuild().getResult() == Result.SUCCESS && artifacts != null && artifacts.size() > 0) {
currentBuild.addAction(new ParametersAction(new StringParameterValue(''VARIABLE_NAME'', artifacts[0].getFileName())));
currentBuild.addAction(new ParametersAction(new StringParameterValue(''LAST_BUILD_STATUS'', ''SUCCESS'')));
}
Esto crea un VARIABLE_NAME
con el nombre de artefacto en él de ArtifactJobName
, que usamos ya que todos están almacenados en una carpeta específica. No estoy seguro de lo que sucederá si tiene múltiples artefactos, pero parece que podría obtenerlos de la matriz de artefactos.
Puedes usar getLastSuccessfulBuild
para evitar problemas cuando se está construyendo otro ArtifactJobName
en este momento y obtienes una matriz con null.