Jenkins pipeline share information between jobs

前端 未结 3 704
渐次进展
渐次进展 2021-01-20 21:40

We are trying to define a set of jobs on Jenkins that will do really specific actions. JobA1 will build maven project, while JobA2 will build .NET code, JobB will upload it

相关标签:
3条回答
  • 2021-01-20 22:01

    There are two ways to share info between jobs:

    1. You can use stash/unstash to share the files/data between multiple jobs in a single pipeline.

      stage ('HostJob') {
          build 'HostJob'
          dir('/var/lib/jenkins/jobs/Hostjob/workspace/') {
              sh 'pwd'
              stash includes: '**/build/fiblib-test', name: 'app' 
          }
      }
      
      stage ('TargetJob') {
          dir("/var/lib/jenkins/jobs/TargetJob/workspace/") {
          unstash 'app'
          build 'Targetjob'
      }
      

      In this manner, you can always copy the file/exe/data from one job to the other. This feature in pipeline plugin is better than Artifact as it saves only the data locally. The artifact is deleted after a build (helps in data management).

    2. You can also use Copy Artifact Plugin.

      There are two things to consider for copying an artifact:

      a) Archive the artifacts in the host project and assign permissions.

      b) After building a new job, select the 'Permission to copy artifact' → Projects to allow copy artifacts: *

      c) Create a Post-build Action → Archive the artifacts → Files to archive: "select your files"

      d) Copy the artifacts required from host to target project. Create a Build action → Copy artifacts from another project → Enter the ' $Project name - Host project', which build 'e.g. Lastest successful build', Artifacts to copy '$host project folder', Target directory '$localfolder location'.

    0 讨论(0)
  • 2021-01-20 22:05

    The first part of your question(to pass variables between jobs) please use the below command as a post build section:

    post {
        always {
            build job:'/Folder/JobB',parameters: [string(name: 'BRANCH', value: "${params.BRANCH}")], propagate: false
        }
    }
    

    The above post build action is for all build results. Similarly, the post build action could be triggered on the current build status. I have used the BRANCH parameter from current build(JobA) as a parameter to be consumed by 'JobB' (provide the exact location of the job). Please note that there should be a similar parameter defined in JobB.

    Moreover, for sharing the workspace you can refer this link and share the workspace between the jobs.

    0 讨论(0)
  • 2021-01-20 22:10

    You could use the Pipelines shared groovy libraries plugin. Have a look at its documentation to implement libraries that multiple pipelines share and define shared global variables.

    0 讨论(0)
提交回复
热议问题