Select workspace by build to use in fan in/out workflow
M
Mark Oswald
Ability to select a specific job(s) to use workspace from when workflow fans back in. For example:
Start workflow with a
pre-build job
that splits into two streams (one for Linux, one for MacOS). These then fan back in for the Deploy job, which requires that all previous jobs have succeeded, but only needs to attach workspaces from specific jobs. Example
- macOS XCode preparation (checkout, build frameworks)
1.1. iOS Testsuite I
1.2. iOS Testsuite II
1.3. iOS Testsuite III
- node.js preparation (checkout, running npm install)
2.1. run tests + coverage
2.2. run e2e tests on linux/node.js
I need to add a job to deploy the stuff which needs to wait for all to end successfully, but does not need the upstream from all. In the workflow description, the requires keyword/configuration is fine to describe, that this jobs needs to wait for jobs 1.1, 1.2, 1.3, 2.1 and 2.2.!
But for the deployment job, the attach_workspace is not configurable. It assumes, that the required jobs/containers are my workspace upstreams. This could still be the default, but adding an optional configuration to select the job where I want to get my workspaces from OR adding a name to workspaces to select them somehow when attaching or persisting them would help in my case.
CCI-I-602
Ryan
Same here. This is a pain in the ass and causing me more work.
U
Ulrich Petri
This has also become an annoyance for us.
With complex fan-out, fan-in setups (esp. multi platform) it's sometimes difficult to prevent duplicate workspace items.
L
Liam Damewood
I don't have precisely the same issue, but the solution here would be beneficial to my organization. We generate very large (2.4GB) workspaces during our build phase, then fan-out to many jobs that have different dependencies from the workspace. For example, one job may require unit test executables (the bulk of the size), another job may require the original git repo, and another job may require the installer artifacts. The ability to select which objects I get from the workspace would both speed up my builds substantially and mitigate issues like
Error applying workspace layer for job XXXX: Error extracting tarball /tmp/workspace-layer-XXXX: exit status 2
which appear when the workspace gets very large.