Posted on: 15/10/2019
Some quick thoughts on what I remember about all these CICD systems.
Gitlab (Rating 4/5):
- Feels massively comprehensive
- Supports multiple environments and contexts
- You can host your own “runners”
- The documentation can be all over the place. Specially with the gitlab issues - where solutions / workarounds are mixed in with hundreds of other comments
CircleCI (Rating 3/5):
- Setting environment variables are done ONE AT A TIME. So many clicks… It’s really tedious.
- Setting ‘context’ (for example production / staging) environment variable is not possible via the API either
- Not always intuitive as to the logic behind the very declarative approach https://devops.stackexchange.com/questions/11432/circle-ci-workflow-job-stuck-in-created-when-adding-a-required-step-to-the-wor
- Building large docker containers can be very slow as it’s transferring files over the network to a remote(?) docker instance. This seems to be the issue mentioned here: https://discuss.circleci.com/t/docker-image-build-is-3-times-slower-than-the-normal-build/27601/21
- Determining the error in you config spec requires you to know clojure?
circleci-cli config validate
Error: Config does not conform to schema: {:workflows {:build_deploy_test {:jobs [nil nil nil nil nil {:dockerbuild-admin (not (map? nil)), :requires (not (map? a-clojure.lang.LazySeq)), :filters {:branches disallowed-key}} {:dockerbuild-cms (not (map? nil)), :requires (not (map? a-clojure.lang.LazySeq)), :filters {:branches disallowed-key}} {:dockerbuild-web (not (map? nil)), :requires (not (map? a-clojure.lang.LazySeq)), :filters {:branches disallowed-key}} {:dockerbuild-api (not (map? nil)), :requires (not (map? a-clojure.lang.LazySeq)), :filters {:branches disallowed-key}} nil nil nil nil nil nil]}}}
- The backend is written in Clojure which to me means it’s a good choice.
Google Cloud Build (Rating 4/5):
- Simple
- Good documentation
- I don’t recall having any issues?
Bitbucket pipelines (Rating: 3/5):
- Really simple
Travis (Rating: 1/5):
- No option for custom machine types with high cpus/memory
- Good github integration - though ran into a bug or two with it showing incorrect information
- They request your GITHUB USERNAME AND PASSWORD if you want to use “encrypted variables” in your travis build file!?!? https://stackoverflow.com/questions/49365669/travis-ci-enterprise-travis-encrypt-after-successful-login-responds-not-logg
- Expensive
- Documentation seems bad. Concepts are really not well defined.
- An annoying issue that hasn’t been fixed in months https://github.com/travis-ci/travis-ci/issues/6652
- Another annoying issue where tagged commits get built as a separate git branch https://stackoverflow.com/questions/30156581/travis-ci-skipping-deployment-although-commit-is-tagged. This makes 0 sense because, if it’s built as a branch, then all your “branch specific” environment variables aren’t set?
- Need to set a longer build timeout? Well if you use the recommended
travis_wait
command, it won’t show any build output until the build finishes. Also described here: https://travis-ci.community/t/use-travis-wait-but-still-see-the-output/5647 - Takes longer than a week to respond to a support ticket https://twitter.com/chrisczynski/status/1305896005817245696
- An interesting thread about travis hnewshttps://news.ycombinator.com/item?id=18978251 which seems to confirm they’re “stagnating”
Comments
No comments, yet!
Submit a comment