Earlier quoted context omitted.
I like how Codeship approaches the problem - see here for inspiration https://documentation.codeship.com/pro/getting-started/steps... Still, they're super expensive and not very performant, so I welcome competition. What I'm missing here is an easy way to link a container being tested with external containers (eg DB).
Disclaimer: Codeship employee. Glad you like our approach. We are constantly working on performance, for sure. Since we offer dedicated build machines, there are always options for better performance. Appreciate the feedback, and feel free to reach out to me directly anytime if you have other questions or thoughts on how we can get better.
Introducing Google Cloud Container Builder
41–50 of 114 posts
Re: Introducing Google Cloud Container Builder
#42Earlier quoted context omitted.
One approach to this problem that I like is storing these dependencies in an intermediate image. Then, you can do an incremental build by referencing (rather than rebuilding) this intermediate image, and pay only the cost of downloading the raw data which should be cheap compared to the normal install process.
Why not leverage Docker's built-in image layer caching?
Yarn works the same.
Re: Introducing Google Cloud Container Builder
#43Earlier quoted context omitted.
I like how Codeship approaches the problem - see here for inspiration https://documentation.codeship.com/pro/getting-started/steps... Still, they're super expensive and not very performant, so I welcome competition. What I'm missing here is an easy way to link a container being tested with external containers (eg DB).
re: link the container with external containers, that's a bit tricky and generally I think that's a space you should use a "dev" environment for. We like to be the connection between source and registry, with your dev environment being after the registry.
Re: Introducing Google Cloud Container Builder
#44I'm so surprised that both Docker's as well as Google's solution to this problem involves 0 caching. Much of our container building includes fetching dependencies from various package managers which rarely changes across builds, yet takes up the majority of the build time. Most of the time thats good enough, but for cases where we want to immediately deploy a fix, it can be quite frustrating to having to spend all th…
Re: Introducing Google Cloud Container Builder
#45I'm so surprised that both Docker's as well as Google's solution to this problem involves 0 caching. Much of our container building includes fetching dependencies from various package managers which rarely changes across builds, yet takes up the majority of the build time. Most of the time thats good enough, but for cases where we want to immediately deploy a fix, it can be quite frustrating to having to spend all th…
Bazel is a general purpose build system that focuses on reproducibility (same build inputs -> same build outputs) and strict dependency specification (at various levels: file, subsystem, external package fetching etc.) enforced by sandboxing which allows for fast incremental builds. Bazel is the open-source version of Google's internal build-system.
More info here: https://bazel.build/
How external resources are handled: https://bazel.build/versions/master/docs/external.html
Obviously Bazel requires some buy-in which may be unappealing (at least for existing projects: migration/supporting multiple build systems.) There are, however, serious benefits (and a larger, but nascent, ecosystem of related open-source tooling.) The biggest gap at the moment is supported languages/etc.
(I don't work for Google, I just like Bazel.)
Re: Introducing Google Cloud Container Builder
#46I'm so surprised that both Docker's as well as Google's solution to this problem involves 0 caching. Much of our container building includes fetching dependencies from various package managers which rarely changes across builds, yet takes up the majority of the build time. Most of the time thats good enough, but for cases where we want to immediately deploy a fix, it can be quite frustrating to having to spend all th…
The Quay build system has implemented caching. The builder preemptively calculates the hashes of Dockerfile commands and then sends them to an API endpoint that finds the tag for the most similar tree of command hashes in a given repository. This tag is pulled before ever attempting to build the Dockerfile.
Google's solution seems far more general than just building Dockerfiles. I'm glad they're pushing for more innovation in this space.
Re: Introducing Google Cloud Container Builder
#47Earlier quoted context omitted.
Why not leverage Docker's built-in image layer caching?
I think the idea here is that the docker level caching isn't well suited for this. Eg for us we install all relevant gems with `bundle install`. If you update one gem, that the whole layer is rebuilt. Since the whole `bundle install` layer is rebuilt, every gem is fetched again from rubygems. Yarn works the same.
Re: Introducing Google Cloud Container Builder
#48I'm so surprised that both Docker's as well as Google's solution to this problem involves 0 caching. Much of our container building includes fetching dependencies from various package managers which rarely changes across builds, yet takes up the majority of the build time. Most of the time thats good enough, but for cases where we want to immediately deploy a fix, it can be quite frustrating to having to spend all th…
Some century the industry will discover the NixOS model...
Use different semantics if you must, but please use some existing syntax for your DSL.
I'm so tired of learning a pointless new variety of almost the same thing, only with slightly different syntax, maybe some awkward string quoting, and some rather pointless syntactic sugar.
I'm not saying NixOS is the worst offender, but innovating in (mostly) superficial syntax, or using obscure syntax is almost certainly not well spent time except for a few very narrow niches/contexts. Especially not for prospective users.
I get it, it's fun inventing both languages and tools, I love doing it myself!
However, and in general: Don't invent a language when you need a tool, and vice versa.
Re: Introducing Google Cloud Container Builder
#49Earlier quoted context omitted.
One approach to this problem that I like is storing these dependencies in an intermediate image. Then, you can do an incremental build by referencing (rather than rebuilding) this intermediate image, and pay only the cost of downloading the raw data which should be cheap compared to the normal install process.
Why not leverage Docker's built-in image layer caching?
Re: Introducing Google Cloud Container Builder
#50Earlier quoted context omitted.
Some century the industry will discover the NixOS model...
I like what I understand to be the core ideas of NixOS to be, but i have to say: There might be a chance that some century, people both in the industry and outside understand that new syntax, or languages, are rarely necessary, or even beneficial. Use different semantics if you must, but please use some existing syntax for your DSL. I'm so tired of learning a pointless new variety of almost the same thing, only with…