6 ms·
We're got some pretty complex pipelines, so much so that we've reached quite a few limitations. You can do all the things you've listed. But you can't build an
by leg100 9y ago
We're got some pretty complex pipelines, so much so that we've reached quite a few limitations.
You can do all the things you've listed. But you can't build an arbitrarily complex DAG of tasks. Instead, you must order everything into a sequential list of 'stages'. Within a stage you have a list of jobs, which are run in parallel. This might be enough for your needs, but I'd like flexibility to express dependencies for each and every task, Say `t1 -> ((t2,t3),t4 -> t5) -> t6`, etc.
And it's a pain to propagate variables from one task to another, like say setting an environment variable in one task, and getting its value in a downstream task. You end up writing scripts to write them to a file, telling gitlab to make that file an 'artifact', and then reading it downstream.
And then there's the transient errors, all of which are listed on open issues. We're using the hosted gitlab.com, and on some of our CI pipelines, we have a dozen or some stages. The chances of a transient error, .e.g. a runner getting a 503 from gitlab.com, are pretty high.
- oblio 9y agoCan you nest stages? Say I want something like this: 1. Sequential: stage "build", build-type agent. 2. Sequential: stage "tests" (this is just a wrapper/container) 2.1 Parallel: stage "integration tests #1", integration #1-type agent 2.2 Parallel: stage "integration tests #2, integration #2-type agent 2.3 Parallel: stage "deploy and functional tests" (this is just a wrapper/container) 2.3.1 Sequential: stage "deploy", deploy-type agent 2.3.2 Sequential: stage "functional tests", functional-type agent Is it doable?
- Tushon 9y agoYes, that should be doable but not quite how you have it sketched out. See here: https://docs.gitlab.com/ee/ci/pipelines.html https://docs.gitlab.com/ee/ci/pipelines.html
- Chico75 9y agoNo, you can define jobs and stages. Stages run one after the others and all jobs inside the same stage will run in parallel, that's it, unless you start triggering remote jobs but then it becomes a lot let maintainable.
- Tushon 9y agoI don't have personal experience with this, but it seems to be that OP could have done this using their pipelines and maybe the graphs? https://docs.gitlab.com/ee/ci/pipelines.html#pipeline-graphs https://docs.gitlab.com/ee/ci/pipelines.html#pipeline-graphs
- tyho 9y agoIt is with https://concourse-ci.org https://concourse-ci.org