74388353b5
In your hydra config, you can add an arbitrary number of <s3config> sections, with the following options: * name (required): Bucket name * jobs (required): A regex to match job names (in project:jobset:job format) that should be backed up to this bucket * compression_type: bzip2 (default), xz, or none * prefix: String to prepend to all hydra-created s3 keys (if this is meant to represent a directory, you should include the trailing slash, e.g. "cache/"). Default "". After each build with an output (i.e. successful or failed-with-output builds), the output path and its closure are uploaded to the bucket as .nar files, with corresponding .narinfos to enable use as a binary cache. This plugin requires that s3 credentials be available. It uses Net::Amazon::S3, which as of this commit the nixpkgs version can retrieve s3 credentials from the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables, or from ec2 instance metadata when using an IAM role. This commit also adds a hydra-s3-backup-collect-garbage program, which uses hydra's gc roots directory to determine which paths are live, and then deletes all files except nix-cache-info and any .nar or .narinfo files corresponding to live paths. hydra-s3-backup-collect-garbage respects the prefix configuration option, so it won't delete anything outside of the hierarchy you give it, and it has the same credential requirements as the plugin. Probably a timer unit running the garbage collection periodically should be added to hydra-module.nix Note that two of the added tests fail, due to a bug in the interaction between Net::Amazon::S3 and fake-s3. Those behaviors work against real s3 though, so I'm committing this even with the broken tests. Signed-off-by: Shea Levy <shea@shealevy.com>
21 lines
446 B
Makefile
21 lines
446 B
Makefile
EXTRA_DIST = \
|
|
$(distributable_scripts) \
|
|
hydra-control \
|
|
hydra-eval-guile-jobs.in
|
|
|
|
distributable_scripts = \
|
|
hydra-init \
|
|
hydra-build \
|
|
hydra-evaluator \
|
|
hydra-queue-runner \
|
|
hydra-server \
|
|
hydra-update-gc-roots \
|
|
hydra-s3-backup-collect-garbage \
|
|
nix-prefetch-git \
|
|
nix-prefetch-bzr \
|
|
nix-prefetch-hg
|
|
|
|
bin_SCRIPTS = \
|
|
$(distributable_scripts) \
|
|
hydra-eval-guile-jobs
|