repo r1: repo r2: repo r3: repo r4: repo r5: destination d1: job first: checkout: - repo: r1 dest: d1 - repo: r4 dest: d4b - repo: r3 dest: d3 - repo: r2 dest: d2 - repo: r4 dest: d4 shell: - touch some_file artifact out: path: some_file job first_manual_revision: checkout: - repo: r1 dest: d1 - repo: r1 dest: d1b revision: tag1 - repo: r2 dest: d2b revision: tag1 - repo: r4 dest: d4b - repo: r3 dest: d3 revision: tag1 - repo: r2 dest: d2 - repo: r4 dest: d4 shell: - touch some_file artifact out: path: some_file job second: checkout: - repo: r2 dest: d2 - repo: r5 dest: d5 - repo: r3 dest: d3 shell: - touch second_file artifact out: path: second_file job dependent: uses: - first.out shell: - mv some_file some_other_file artifact out: path: some_other_file job dependent_publish: publish: - to: d1 artifact: first.out job transitive: uses: - dependent.out artifact out: path: some_other_file job combined: uses: - first.out - second.out artifact out: path: second_file job combined_transitive: uses: - combined.out - transitive.out