Hacker News new | ask | show | jobs
by webo 3266 days ago
Mostly off-topic but I've been looking for more than a CI for some quite time, more on the CD side. How are you guys handling some of these cases? Bonus points for hosted options.

- Truly a pipeline based stages. No messing around with git branches/tags for each environment release.

- Ability to combine multiple builds together.

- Build dependencies. Ability to trigger project-B build when project-A build succeeds. (Docker Cloud Builds have something like this.)

- Use the same artifact across multiple build stages.

- An option to promote a build to the next step either manually or automatically.

Amazon's internal Apollo system was amazing. AWS Code Pipelines kind of does some of these things but it's every limited and hard to work with.

10 comments

We use https://gocd.io/ so I'll comment on this:

> - Truly a pipeline based stages. No messing around with git branches/tags for each environment release.

That's how we use it. We have two or more stages for each environment (repo upload + installation, often tests) that are simply chained.

> - Ability to combine multiple builds together.

You can do fan-in and fan-out between pipelines (you can combine multiple pipelines in a DAG).

> - Build dependencies. Ability to trigger project-B build when project-A build succeeds. (Docker Cloud Builds have something like this.)

As above, with a graph of pipelines. We use this to trigger rebuild of some projects when libraries change.

> - Use the same artifact across multiple build stages.

You can reference and retrieve artifacts from all previous stages, even stages from upstream pipelines. The syntax for referencing takes some time to get used to.

> - An option to promote a build to the next step either manually or automatically.

automatic is default, but you can have manual approval steps, optionally with permissions attached to them.

Plug: I wrote a book that uses GoCD for its examples: https://leanpub.com/deploy

https://buildkite.com has all those features, and very easy to work with.

It's a hybrid hosted model -you supply your own workers (they provide a CFN template to make that part easy), everything else (e.g. web UI/API) is hosted

Buildkite is hands down the best tool we have used.
CircleCI's New 'Workflows' in their 2.0 version looks like it has these features: https://circleci.com/docs/2.0/workflows/
GitLab CI has multi project pipeline, triggers, artifacts, and manually approved next steps. But I'm not sure what your first requirement means, GitLab CI always composes pipelines from individual projects so it probably doesn't meet your criteria. I'm interested to hear what you ran into with previous systems that made this your nr 1 criteria.
Have you looked at Go.CD - https://www.gocd.org/
> Build dependencies. Ability to trigger project-B build when project-A build succeeds

Within a pipeline, you can 'pass' an output of one step as a triggering input to another. Across pipelines, you can use e.g. an S3 resource to save state; the job to be triggered looks at that S3 resource and triggers when it changes.

> Use the same artifact across multiple build stages.

Yep - you can pass the output of one job to be used as the input of another.

> Ability to combine multiple builds together.

Yep - have a look for "fan-in" in the docs.

> An option to promote a build to the next step either manually or automatically.

You can manually trigger steps from the UI; you could also have a resource that triggers a job automatically on some condition.

Mozilla's TaskCluster is definitely aimed at CI use cases, but does handle all the requirements you listed. It is entirely open-source, but unfortunately they aren't currently interested in supporting other organizations running it.
I used Octopus Deploy for .Net, it was amazing. It did releases as first-class objects (a collection of versioned packages pulled from a repository), per-environment configs, parallel execution of steps, rolling windows (for bouncing a few hosts at a time), pre- & post- activate scripts, and great IIS integration.

There was talk of Python + Linux support a few years back, a shame that didn't take off.

(Octopus CEO here)

You can do Linux today actually - you can connect to machines over SSH, run bash scripts, etc. Today there's a Mono dependency, but in the next couple of weeks we'll be rolling out a beta that removes that dependency.

Python scripting support is on the roadmap - :-)

Check out CDDirector[0]. I've been using it to model release pipelines and enjoying it quite a bit. Disclaimer, I work for CA Technologies though not on this product.

[0] https://cddirector.io/

Have you checked out https://semaphoreci.com ?