title: Triggering tasks on Semver change: triggers jobs out or order
body: <p>Here's what I'm trying to achieve:</p>
  
  <p>I have a project with a build job for a binary release. The binary takes a while to cross-compile for each platform, so I only want to release build to be done when a release is tagged, but I want the local-native version to build and tests to run for each checked-in version.</p>
  
  <p>Based on the flight-school demo... so far, my pipeline configuration looks like this:</p>
  
  <pre><code>resources:
    - name: flight-school
      type: git
      source:
        uri: https://github.com/nbering/flight-school
        branch: master
  
    - name: flight-school-version
      type: semver
      source:
        driver: git
        uri: https://github.com/nbering/flight-school
        branch: master
        file: version
  
  jobs:
    - name: test-app
      plan:
        - get: flight-school
          trigger: true
        - task: tests
          file: flight-school/build.yml
  
    - name: release-build
      plan:
        - aggregate:
          - get: flight-school-version
            trigger: true
          - get: flight-school
            passed: [test-app]
        - task: release-build
          file: flight-school/ci/release.yml
  </code></pre>
  
  <p>This produces a pipeline in the Web UI that looks like this:</p>
  
  <p><a href="https://i.stack.imgur.com/wJthg.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/wJthg.png" alt="Concourse Pipeline Sample"></a></p>
  
  <p>The problem is that when I update the "release" file in the git repository, the semver resource, "flight-school-version" can check before the git resource "flight-school", causing the release build to be processed from the git version assigned to the previous check-in.</p>
  
  <p>I'd like a way to work around this so that the release build appears as a separate task, but only triggers when the version is bumped.</p>
  
  <h3>Some things I've thought of so far</h3>
  
  <p>Create a separate git resource with a <code>tag_filter</code> set so that it only runs when a semver tag has been push to master</p>
  
  <ul>
  <li>Pro: Jobs only run when tag is pushed</li>
  <li>Con: Has the same disconnected-inheritance problem for tests as the semver-based example above</li>
  </ul>
  
  <p>Add the conditional check for a semver tag (or change diff on a file) using the git history in the checkout as part of the build script</p>
  
  <ul>
  <li>Pro: Will do basically what I want without too much wrestling with Concourse</li>
  <li>Con: Can't see the difference in the UI without actually reading the build output</li>
  <li>Con: Difficult to compose with other tasks and resource types to do something with the binary release</li>
  </ul>
  
  <p>Manually trigger release build</p>
  
  <ul>
  <li>Pro: Simple to set up</li>
  <li>Con: Requires manual intervention.</li>
  </ul>
  
  <p>Use the API to trigger a paused build step on completion of tests when a version change is detected</p>
  
  <ul>
  <li>Con: Haven't seen any examples of others doing this, seems really complicated.</li>
  </ul>
  
  <p>I haven't found a way to trigger a task when <em>both</em> the git resource and semver resource change.</p>
  
  <p>I'm looking for either an answer to solve the concurrency problem in my above example, or an alternative pattern that would produce a similar release workflow.</p>