about summary refs log tree commit diff
path: root/tools/nixery/server/builder/builder.go
AgeCommit message (Collapse)AuthorFilesLines
2019-10-03 feat(server): Reimplement creation & uploading of layersVincent Ambo1-85/+248
The new build process can now call out to Nix to create layers and upload them to the bucket if necessary. The layer cache is populated, but not yet used.
2019-09-21 feat(server): Log Nix output live during the buildsVincent Ambo1-3/+12
Instead of dumping all Nix output as one at the end of the build process, stream it live as the lines come in. This is a lot more useful for debugging stuff like where manifest retrievals get stuck.
2019-09-21 feat: Add configuration option for popularity data URLVincent Ambo1-0/+4
2019-09-10 refactor(builder): Calculate image cache key only onceVincent Ambo1-2/+11
2019-09-10 feat(server): Cache built manifests to the GCS bucketVincent Ambo1-3/+3
Caches manifests under `manifests/$cacheKey` in the GCS bucket and introduces two-tiered retrieval of manifests from the caches (local first, bucket second). There is some cleanup to be done in this code, but the initial version works.
2019-09-10 refactor(server): Use package source specific cache keysVincent Ambo1-2/+2
Use the PackageSource.CacheKey function introduced in the previous commit to determine the key at which a manifest should be cached in the local cache. Due to this change, manifests for moving target sources are no longer cached and the recency threshold logic has been removed.
2019-09-10 refactor(server): Move package source management logic to serverVincent Ambo1-3/+4
Introduces three new types representing each of the possible package sources and moves the logic for specifying the package source to the server. Concrete changes: * Determining whether a specified git reference is a commit vs. a branch/tag is now done in the server, and is done more precisely by using a regular expression. * Package sources now have a new `CacheKey` function which can be used to retrieve a key under which a build manifest can be cached *if* the package source is not a moving target (i.e. a full git commit hash of either nixpkgs or a private repository). This function is not yet used. * Users *must* now specify a package source, Nixery no longer defaults to anything and will fail to launch if no source is configured.
2019-09-02 feat(server): Add configuration option for Nix build timeoutsVincent Ambo1-0/+1
Adds a NIX_TIMEOUT environment variable which can be set to a number of seconds that is the maximum allowed time each Nix builder can run. By default this is set to 60 seconds, which should be plenty for most use-cases as Nixery is not expected to be performing builds of uncached binaries in most production cases. Currently the errors Nix throws on a build timeout are not separated from other types of errors, meaning that users will see a generic 500 server error in case of a timeout. This fixes #47
2019-08-17 fix(server): Sort requested packages in image name & specVincent Ambo1-3/+13
Before this change, Nixery would pass on the image name unmodified to Nix which would lead it to cache-bust the manifest and configuration layers for images that are content-identical but have different package ordering. This fixes #38.
2019-08-16 feat(server): add iana-etc and cacert to the shell convenience packageFlorian Klink1-1/+1
These probably should be part of every container image by default, but adding it to the "shell" convenience name probably is our best bet for now.
2019-08-14 feat(builder): Implement build cache for manifests & layersVincent Ambo1-41/+53
Implements a cache that keeps track of: a) Manifests that have already been built (for up to 6 hours) b) Layers that have already been seen (and uploaded to GCS) This significantly speeds up response times for images that are full or partial matches with previous images served by an instance.
2019-08-14 refactor(server): Extract build logic into separate moduleVincent Ambo1-0/+208
This module is going to get more complex as the implementation of #32 progresses.