Build docker images for each package in CI (#950)

Fixes #513
This commit is contained in:
Gabriel Gonzalez 2019-05-13 10:37:03 -07:00 committed by GitHub
parent 20f6d8c316
commit 89817b41fd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 72 additions and 12 deletions

View File

@ -57,6 +57,36 @@ $ nix-env -i "$(curl -L https://hydra.dhall-lang.org/job/dhall-haskell/master/li
These instructions also work for any pull request, too, by replacing `master`
with the pull request number for any of the above URLs.
## Pre-built containers
You can download pre-built `docker` image archives for each package using the
following URLs:
* [https://hydra.dhall-lang.org/job/dhall-haskell/master/image-dhall/latest/download/1/docker-image-dhall.tar.gz](https://hydra.dhall-lang.org/job/dhall-haskell/master/image-dhall/latest/download/1/docker-image-dhall.tar.gz)
* [https://hydra.dhall-lang.org/job/dhall-haskell/master/image-dhall-bash/latest/download/1/docker-image-dhall-bash.tar.gz](https://hydra.dhall-lang.org/job/dhall-haskell/master/image-dhall-bash/latest/download/1/docker-image-dhall-bash.tar.gz)
* [https://hydra.dhall-lang.org/job/dhall-haskell/master/image-dhall-json/latest/download/1/docker-image-dhall-json.tar.gz](https://hydra.dhall-lang.org/job/dhall-haskell/master/image-dhall-json/latest/download/1/docker-image-dhall-json.tar.gz)
* [https://hydra.dhall-lang.org/job/dhall-haskell/master/image-dhall-lsp-server/latest/download/1/docker-image-dhall-lsp-server.tar.gz](https://hydra.dhall-lang.org/job/dhall-haskell/master/image-dhall-lsp-server/latest/download/1/docker-image-dhall-lsp-server.tar.gz)
* [https://hydra.dhall-lang.org/job/dhall-haskell/master/image-dhall-nix/latest/download/1/docker-image-dhall-nix.tar.gz](https://hydra.dhall-lang.org/job/dhall-haskell/master/image-dhall-nix/latest/download/1/docker-image-dhall-nix.tar.gz)
* [https://hydra.dhall-lang.org/job/dhall-haskell/master/image-dhall-text/latest/download/1/docker-image-dhall-text.tar.gz](https://hydra.dhall-lang.org/job/dhall-haskell/master/image-dhall-text/latest/download/1/docker-image-dhall-text.tar.gz)
You can then load and run one of these archives like so:
```
$ NAME="dhall"
$ curl --location --remote-name "https://hydra.dhall-lang.org/job/dhall-haskell/master/image-${NAME}/latest/download/1/docker-image-${NAME}.tar.gz"
$ docker load < "docker-image-${NAME}.tar.gz"
...
Loaded image: dhall:vx95jiijmp2i07f5ynl8h6sllf34jggz
$ docker run -i dhall:vx95jiijmp2i07f5ynl8h6sllf34jggz dhall <<< '2 + 2'
4
```
These instructions also work for any pull request, too, by replacing `master`
with the pull request number for any of the above URLs.
## Building from source
For all of the following instructions, make sure to first check out the

View File

@ -596,20 +596,34 @@ let
# Benchmark dependencies aren't added by default
(pkgs.haskell.lib.doBenchmark drv).env;
possibly-static = {
dhall = makeStaticIfPossible "dhall" ;
dhall-bash = makeStaticIfPossible "dhall-bash" ;
dhall-json = makeStaticIfPossible "dhall-json" ;
dhall-lsp-server = makeStaticIfPossible "dhall-lsp-server";
dhall-nix = makeStaticIfPossible "dhall-nix" ;
dhall-text = makeStaticIfPossible "dhall-text" ;
};
toDockerImage = name:
let
image =
pkgs.dockerTools.buildImage {
inherit name;
contents = [ possibly-static."${name}" ];
};
in
pkgs.runCommand "image-${name}" {} ''
${pkgs.coreutils}/bin/mkdir --parents "$out/nix-support"
${pkgs.coreutils}/bin/ln --symbolic '${image}' "$out/docker-image-${name}.tar.gz"
echo "file binary-dist $out/docker-image-${name}.tar.gz" >> $out/nix-support/hydra-build-products
'';
in
rec {
inherit trivial;
inherit pkgs;
possibly-static = {
dhall = makeStaticIfPossible "dhall" ;
dhall-bash = makeStaticIfPossible "dhall-bash" ;
dhall-json = makeStaticIfPossible "dhall-json" ;
dhall-lsp-server = makeStaticIfPossible "dhall-lsp-server";
dhall-nix = makeStaticIfPossible "dhall-nix" ;
dhall-text = makeStaticIfPossible "dhall-text" ;
};
inherit trivial pkgs possibly-static;
tarball-dhall = makeTarball "dhall" ;
tarball-dhall-bash = makeTarball "dhall-bash" ;
@ -632,6 +646,13 @@ in
shell-dhall-text = toShell pkgs.haskell.packages."${compiler}".dhall-text ;
shell-dhall-try = toShell pkgs.haskell.packages."${compiler}".dhall-try ;
image-dhall = toDockerImage "dhall" ;
image-dhall-bash = toDockerImage "dhall-bash" ;
image-dhall-json = toDockerImage "dhall-json" ;
image-dhall-lsp-server = toDockerImage "dhall-lsp-server";
image-dhall-nix = toDockerImage "dhall-nix" ;
image-dhall-text = toDockerImage "dhall-text" ;
test-dhall =
pkgs.mkShell
{ buildInputs =

View File

@ -85,4 +85,13 @@ in
linux-dhall-lsp-server = shared_linux.possibly-static.dhall-lsp-server;
linux-dhall-nix = shared_linux.possibly-static.dhall-nix;
linux-dhall-text = shared_linux.possibly-static.dhall-text;
inherit (shared_linux)
image-dhall
image-dhall-bash
image-dhall-json
image-dhall-lsp-server
image-dhall-nix
image-dhall-text
;
}