script remote over example groovy jenkins-workflow jenkinsfile

groovy - remote - ¿Cómo puedo usar el complemento Jenkins Copy Artifacts desde las tuberías(jenkinsfile)?



publish over ssh jenkins example (4)

Estoy tratando de encontrar un ejemplo del uso del complemento de artefactos de copia de Jenkins desde las tuberías de Jenkins (flujos de trabajo).

¿Alguien puede señalar un código Groovy de muestra que lo esté usando?


Con un archivo Jenkins declarativo, puede utilizar la siguiente canalización:

pipeline { agent any stages { stage (''push artifact'') { steps { sh ''mkdir archive'' sh ''echo test > archive/test.txt'' zip zipFile: ''test.zip'', archive: false, dir: ''archive'' archiveArtifacts artifacts: ''test.zip'', fingerprint: true } } stage(''pull artifact'') { steps { step([ $class: ''CopyArtifact'', filter: ''test.zip'', fingerprintArtifacts: true, projectName: ''${JOB_NAME}'', selector: [$class: ''SpecificBuildSelector'', buildNumber: ''${BUILD_NUMBER}''] ]) unzip zipFile: ''test.zip'', dir: ''./archive_new'' sh ''cat archive_new/test.txt'' } } } }

Con CopyArtifact , uso ''$ {JOB_NAME}'' como nombre del proyecto, que es el proyecto en ejecución actual.

El selector predeterminado utilizado por CopyArtifact usa el último número de compilación del proyecto exitoso, nunca el actual (porque aún no tiene éxito, o no). Con SpecificBuildSelector puede elegir ''$ {BUILD_NUMBER}'' que contiene el número de compilación actual del proyecto en ejecución.

Esta canalización funciona con etapas paralelas y puede administrar archivos enormes (estoy usando un archivo de 300 Mb, no funciona con ocultación / eliminación)

Esta tubería funciona perfectamente con mi Jenkins 2.74, siempre que tenga todos los complementos necesarios.


Si está utilizando esclavos en su maestro y desea copiar artefactos entre sí, puede usar stash / unhash, por ejemplo:

stage ''build'' node{ git ''https://github.com/cloudbees/todo-api.git'' stash includes: ''pom.xml'', name: ''pom'' } stage name: ''test'', concurrency: 3 node { unstash ''pom'' sh ''cat pom.xml'' }

Puedes ver este ejemplo en este enlace:

https://dzone.com/refcardz/continuous-delivery-with-jenkins-workflow


Si las compilaciones no se ejecutan en la misma canalización, puede usar el complemento directo CopyArtifact , aquí hay un ejemplo: https://www.cloudbees.com/blog/copying-artifacts-between-builds-jenkins-workflow y código de ejemplo:

node { // setup env.. // copy the deployment unit from another Job... step ([$class: ''CopyArtifact'', projectName: ''webapp_build'', filter: ''target/orders.war'']); // deploy ''target/orders.war'' to an app host }


name = "/" + "${env.JOB_NAME}" def archiveName = ''relNum'' try { step($class: ''hudson.plugins.copyartifact.CopyArtifact'', projectName: name, filter: archiveName) } catch (none) { echo ''No artifact to copy from '' + name + '' with name relNum'' writeFile file: archiveName, text: ''3'' } def content = readFile(archiveName).trim() echo ''value archived: '' + content

intente usar el complemento de copia de artefactos