meta data for this page
Jenkins
Pipeline
- is main Jenkins plugin which act as main build engine (from Jenkins 2.0)
- replay feature let to run job with modified by hand
Jenkinsfile
Scripted pipeline
It is possible to write Jenkinsfile's as Groovy scripts (advanced) or using Declarative Pipeline Syntax.
Top 10 Best Practices for Jenkins Pipeline https://www.blazemeter.com/blog/how-to-use-the-jenkins-scripted-pipeline https://jenkins.io/doc/book/pipeline/syntax/#scripted-pipeline
- jenkinsfile
node { stage("a") { } stage("b") { } stage("c") { parallel ( 'taskA': { stage("1") { }}, 'taskB': { stage("2") { }}, ) } stage("archive") { archiveArtifacts artifacts: 'out_*/*.*' archiveArtifacts artifacts: 'contiki/tools/cc2538-bsl/cc2538-bsl.py' } }
NOTE:
- parallel expect map as argument. https://www.cloudbees.com/blog/parallelism-and-distributed-builds-jenkins
Creating your first Pipeline https://jenkins.io/doc/pipeline/examples/ https://www.blazemeter.com/blog/how-to-use-the-jenkins-scripted-pipeline Distributed builds
archiveArtifacts
archiveArtifacts:
Directory//*.*
→ all the files in the workspace→ All the files recursively under Directory *
/*.*/*.xml
→ All the xml files recursively under Directory→ all xml files in your workspace. *
Directory//*.xml
archiveArtifacts artifacts: 'file.extension''' archiveArtifacts artifacts: 'teste.js' archiveArtifacts artifacts: '*.js' archiveArtifacts artifacts: 'teste.js', onlyIfSuccessful: true
Declarative Pipeline
- Jenkinsfile
pipeline { agent any stages { stage('Download') { steps { sh 'make config' sh 'echo "artifact file" > generatedFile.txt' } } } post { always { archiveArtifacts artifacts: 'generatedFile.txt', onlyIfSuccessful: true } } }
Global Pipeline Libraries
You may also declare whether scripts need to explicitly request that library (detailed below), or if it is present by default. Furthermore, if you specify a version in Jenkins configuration, you can block scripts from selecting a different version.
https://jenkins.io/doc/book/pipeline/shared-libraries/
https://stackoverflow.com/questions/38695237/create-resusable-jenkins-pipeline-script Share a standard Pipeline across multiple projects with Shared Libraries Exploring Jenkins Pipelines: Shared Libraries Extending with Shared Libraries https://cleverbuilder.com/articles/jenkins-shared-library/
Workspace
/workspace/project@script is checked out on Master only to get Jenkinsfile - it can be safely deleted /workspace/project@2 - folder where build is performed (can be on slave) /workspace/project@tmp - ?