about summary refs log tree commit diff
path: root/tools (follow)
AgeCommit message (Collapse)AuthorFilesLines
2019-10-03 feat(nix): Add derivation to create layer tars from a store path setVincent Ambo3-9/+69
This introduces a new Nix derivation that, given an attribute set of layer hashes mapped to store paths, will create a layer tarball for each of the store paths. This is going to be used by the builder to create layers that are not present in the cache. Relates to #50.
2019-10-03 docs(caching): Add information about Nixery's caching strategiesVincent Ambo2-0/+71
2019-10-03 feat(server): Introduce function to hash contents of a layerVincent Ambo1-0/+13
This creates a cache key which can be used to check if a layer has already been built.
2019-10-03 refactor(server): Expose layer grouping logic via a functionVincent Ambo1-55/+24
Refactors the layer grouping package (which previously compiled to a separate binary) to expose the layer grouping logic via a function instead. This is the next step towards creating layers inside of the server component instead of in Nix. Relates to #50.
2019-10-03 chore(server): Import layer grouping logic into server componentVincent Ambo2-0/+361
2019-10-03 chore(build-image): Simplify wrapper build & remove layer groupingVincent Ambo5-452/+21
Simplifies the wrapper script used to invoke Nix builds from Nixery to just contain the essentials, since the layer grouping logic is moving into the server itself.
2019-10-03 refactor(build-image): Do not assemble image layers in NixVincent Ambo1-162/+57
This is the first step towards a more granular build process where some of the build responsibility moves into the server component. Rather than assembling all layers inside of Nix, it will only create the symlink forest and return information about the runtime paths required by the image. The server is then responsible for grouping these paths into layers, and assembling the layers themselves. Relates to #50.
2019-09-22 refactor(build): Add group-layers to top-level Nix derivationsVincent Ambo1-5/+7
This makes CI build the group-layers tool (and cache it to Cachix!)
2019-09-22 refactor(build-image): Minor tweak to layer construction scriptVincent Ambo1-2/+2
2019-09-21 fix(build): Ensure launch script compatibility with other runtimesVincent Ambo1-1/+2
Fixes two launch script compatibility issues with other container runtimes (such as gvisor): * don't fail if /tmp already exists * don't fail if the environment becomes unset
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 fix(build-image): Use absolute paths in tarballsVincent Ambo1-2/+2
2019-09-21 fix(build): Ensure nixery-build-image is on Nixery's PATHVincent Ambo1-0/+1
This is useful when running Nixery locally.
2019-09-21 chore(build): Bump nixpkgs version used in TravisVincent Ambo1-1/+1
This version matches the updated popularity URL.
2019-09-21 feat: Add configuration option for popularity data URLVincent Ambo5-5/+12
2019-09-21 chore(docs): Remove mdbook overrideVincent Ambo1-18/+0
The change has been upstreamed in Nixpkgs.
2019-09-10 refactor(builder): Calculate image cache key only onceVincent Ambo2-17/+15
2019-09-10 feat(server): Cache built manifests to the GCS bucketVincent Ambo3-23/+96
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 Ambo2-32/+21
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 Ambo8-105/+192
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 docs: Add information about NIX_TIMEOUT variableVincent Ambo2-1/+5
2019-09-02 feat(server): Add configuration option for Nix build timeoutsVincent Ambo2-6/+11
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-09-02 refactor(build-image): Remove implicit import of entire package setVincent Ambo1-8/+5
Explicitly refer to where things come from, and also don't import dockerTools as it is no longer used for anything.
2019-09-02 refactor(build-image): Simplify customisation layer builderVincent Ambo1-15/+16
Moves the relevant parts of the customisation layer construction from dockerTools.mkCustomisationLayer into the Nixery code base. The version in dockerTools builds additional files (including via hashing of potentially large files) which are not required when serving an image over the registry protocol.
2019-08-21 chore(build): Add iana-etc to Nixery's own imageVincent Ambo1-0/+1
This package is used by a variety of programs that users may want to embed into Nixery in addition, for example cachix, but those packages don't refer to it explicitly.
2019-08-21 chore(docs): Update embedded nix-1p versionVincent Ambo1-2/+2
The new version of the document has syntactic fixes that render pipes in code blocks in tables correctly across dialects. Fixes #44
2019-08-19 fix(build): Force nix-env to use NIX_PATHVincent Ambo1-6/+5
Thanks to clever!
2019-08-19 chore(build): Pin nixpkgs to a specific commitVincent Ambo1-0/+2
This is the same commit for which Nixery has popularity data, but that isn't particularly relevant.
2019-08-19 feat(build): Add 'extraPackages' parameterVincent Ambo1-2/+4
This makes it possible to inject additional programs (e.g. Cachix) into a Nixery container.
2019-08-19 fix(docs): Correct link to layering strategyVincent Ambo1-1/+1
2019-08-17 fix(build): Ensure root user is known inside of containerVincent Ambo1-0/+4
This is required by git in cases where Nixery is configured with a custom git repository. I've also added a shell back into the image to make debugging a running Nixery easier. It turns out some of the dependencies already pull in bash anyways, so this is just surfacing it to $PATH.
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-17 docs(README): Update links to layering strategyVincent Ambo1-4/+7
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-15 fix(build): Ensure GCS signing is used in CIVincent Ambo1-0/+2
2019-08-15 docs: Add asciinema demo to README & bookVincent Ambo2-17/+12
2019-08-15 docs(book): Update information on new layering strategyVincent Ambo2-8/+11
2019-08-15 feat(build): Add an integration test that runs on TravisVincent Ambo1-2/+47
This test, after performing the usual Nixery build, loads the built image into Docker, runs it, pulls an image from Nixery and runs that image. To make this work, there is some configuration on the Travis side. Most importantly, the following environment variables have special values: * `GOOGLE_KEY`: This is set to a base64-encoded service account key to be used in the test. * `GCS_SIGNING_PEM`: This is set to a base64-encoded signing key (in PEM) that is used for signing URLs. Both of these are available to all branches in the Nixery repository.
2019-08-14 chore(server): Add 'go vet' to build processVincent Ambo1-0/+8
2019-08-14 fix(server): Print correct project name during startupVincent Ambo1-1/+1
They grow up so fast :')
2019-08-14 feat(builder): Implement build cache for manifests & layersVincent Ambo3-42/+152
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 Ambo3-304/+365
This module is going to get more complex as the implementation of #32 progresses.
2019-08-14 refactor(build-image): Extract package set loading into helperVincent Ambo4-65/+87
Some upcoming changes might require the Nix build to be split into multiple separate nix-build invocations of different expressions, thus splitting this out is useful. It also fixes an issue where `build-image/default.nix` might be called in an environment where no Nix channels are configured.
2019-08-14 style: Apply nixfmt to trivial Nix filesVincent Ambo5-27/+21
ALl the ones except for build-image.nix are considered trivial. On the latter, nixfmt makes some useful changes but by-and-large it is not ready for that code yet.
2019-08-14 feat(build-image): Use new image layering algorithm for imagesVincent Ambo1-38/+47
Removes usage of the old layering algorithm and replaces it with the new one. Apart from the new layer layout this means that each layer is now built in a separate derivation, which hopefully leads to better cacheability.
2019-08-14 feat(build-image): Introduce a terrifying hack to build group-layersVincent Ambo3-13/+86
The issue is described in detail in a comment in `build-image/default.nix`, please read it.
2019-08-14 feat: Add shell.nix for running a local NixeryVincent Ambo1-0/+27
2019-08-14 feat(popcount): Clean up popularity counting scriptVincent Ambo5-51/+93
Adds the script used to generate the popularity information for all of nixpkgs. The README lists the (currently somewhat rough) usage instructions.
2019-08-14 refactor(server): Use wrapper script to avoid path dependencyVincent Ambo7-9/+73
Instead of requiring the server component to be made aware of the location of the Nix builder via environment variables, this commit introduces a wrapper script for the builder that can simply exist on the builders $PATH. This is one step towards a slightly nicer out-of-the-box experience when using `nix-build -A nixery-bin`.
2019-08-14 chore(docs): Move mdBook derivation to docs/default.nixVincent Ambo2-23/+20