Thank you for your reply, Ketan.
I've come across the fan-in & fan-out capabilities - which is one of the
main reasons I decided to give GoCD a try and hopefully switch to it
eventually.
I've read the documentation you've linked prior to creating this
conversation. However, I'm unclear as to how to modify my pipeline C (or
rather template T_C) so there's no more explicit dependency on the upstream
pipeline. In my opinion I did this by having the *Fetch Artifact* task in
T_C which allows C which uses T_C to specify the upstream pipeline with
*#{UPSTREAM_BUILD_PIPELINE}*.
What am I missing / doing wrong?
In my pipeline C -> Materials I am unable to remove the dependency to the
upstream build pipeline A. As far as I can tell this has been added
automatically when creating pipeline A from template T_A as T_A requires
the *#{UPSTREAM_BUILD_PIPELINE}* parameter for the *Fetch Artifact* task.
~ Joel
On Friday, November 27, 2020 at 4:16:38 PM UTC+1 [email protected]
wrote:
> If pipeline "C" requires a binary from "A", there's no need to add an
> explicit dependency. You can specify an upstream pipeline as part of your
> fetch artifact task.
>
> In either case, C should not trigger twice. Pipeline C should wait for B
> to be complete before kicking off.
>
> Also — what you're looking at is called "fan-in" in gocd terminology. This
> document <https://docs.gocd.org/current/advanced_usage/fan_in.html> might
> help.
>
> - Ketan
>
>
>
> On Fri, Nov 27, 2020 at 7:47 PM Joel Bodenmann <[email protected]> wrote:
>
>> Hello folks,
>>
>> Consider the following scenario:
>>
>> - Template *T_A*: Builds some binaries and stores them as an artifact.
>> - Template *T_B*: Fetches binaries from the upstream pipeline *T_A *and
>> runs tests. To achieve this, *T_B* has a *Fetch Artifact *task with
>> the upstream pipeline as a parameter *#{UPSTREAM_BUILD_PIPELINE}.*
>> - Template *T_C*: Fetches binaries from upstream pipeline *T_A* and
>> creates packages. To achieve this, *T_C* has a *Fetch Artifact *task
>> with the upstream pipeline as a parameter
>> *#{UPSTREAM_BUILD_PIPELINE}.*
>> - Pipeline *A*: Uses template *T_A*.
>> - Pipeline *B*: Uses template *T_B**. *Sets *UPSTREAM_BUILD_PIPELINE
>> *to pipeline *A.*
>> - Pipeline *C*: Uses template *T_C*. Sets *UPSTREAM_BUILD_PIPELINE *
>> to pipeline *A.*
>>
>> This results in the following VSM:
>>
>>
>> The problem I have is that pipeline C will be triggered twice: Once after
>> A finishes and once after B finishes. The expected behavior (or the
>> behavior I wish to achieve) is that C will only run after B finishes
>> successfully.
>>
>> How can I make sure that C only runs after successful completion of B
>> (and therefore implicitly A)?
>>
>> Attached is the corresponding XML fragment of my templates & pipelines
>> where:
>>
>> - *T_A -> Build-CMake-OS-Compiler*
>> - *T_B -> Test-OS*
>> - *T_C -> Package-OS*
>> - *A -> GPDS-Build-FreeBSD-GCC*
>> - *B -> GPDS-Test-FreeBSD-GCC*
>> - *C -> GPDS-Package-FreeBSD*
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "go-cd" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/go-cd/0a8a6dc4-0b49-4036-a573-44d0feca32b9n%40googlegroups.com
>>
>> <https://groups.google.com/d/msgid/go-cd/0a8a6dc4-0b49-4036-a573-44d0feca32b9n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>
--
You received this message because you are subscribed to the Google Groups
"go-cd" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/go-cd/65aaaae7-7f7f-49cb-b153-b7e2a3279e1en%40googlegroups.com.