It's not clear for me from the documentation if it's even possible to pass one job's output to the another job (not from task to task, but from job to job).
I don't know if conceptually I'm doing the right thing, maybe it should be modeled differently in Concourse, but what I'm trying to achieve is having pipeline for Java project split into several granular jobs, which can be executed in parallel, and triggered independently if I need to re-run some job.
How I see the pipeline:
mvn deploy)SNAPSHOT versions of the Maven project submodulesoutput of the task)jar's from the output
I was unable to pass the output from job 1 to job 2.
Also, I am curious if any changes I introduce to the original git repo resource will be present in the next job (from job 1 to job 2).
So the questions are:
What I've found so far:
outputs are not passed from job to jobput to the github repo) are fetched in the next job, but changes in working copy are notMinimal example (it fails if commented lines are uncommented with error: missing inputs: gist-upd, gist-out):
---
resources:
  - name: gist
    type: git
    source:
      uri: "[email protected]:snippets/foo/bar.git"
      branch: master
      private_key: {{private_git_key}}
jobs:
  - name: update
    plan:
      - get: gist
        trigger: true
      - task: update-gist
        config:
          platform: linux
          image_resource:
            type: docker-image
            source: {repository: concourse/bosh-cli}
          inputs:
            - name: gist
          outputs:
            - name: gist-upd
            - name: gist-out
          run:
            path: sh
            args:
              - -exc
              - |
                git config --global user.email "[email protected]"
                git config --global user.name "Concourse"
                git clone gist gist-upd
                cd gist-upd
                echo `date` > test
                git commit -am "upd"
                cd ../gist
                echo "foo" > test
                cd ../gist-out
                echo "out" > test
      - put: gist
        params: {repository: gist-upd}
  - name: fetch-updated
    plan:
      - get: gist
        passed: [update]
        trigger: true
      - task: check-gist
        config:
          platform: linux
          image_resource:
            type: docker-image
            source: {repository: alpine}
          inputs:
            - name: gist
            #- name: gist-upd
            #- name: gist-out
          run:
            path: sh
            args:
              - -exc
              - |
                ls -l gist
                cat gist/test
                #ls -l gist-upd
                #cat gist-upd/test
                #ls -l gist-out
                #cat gist-out/test
To answer your questions one by one.
Also, to get to your specific error, the reason that you are seeing missing inputs is because concourse will look for directories (made by resource gets) named each of those inputs. So you would need to get resource instances named gist-upd and gist-out prior to to starting the task.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With