Use nix-build in github-actions

This commit is contained in:
Griffin Smith 2019-09-29 11:10:28 -04:00
parent 05da490185
commit 272ff5b3e6
3 changed files with 52 additions and 9 deletions

23
.github/actions/nix-build/Dockerfile vendored Normal file
View file

@ -0,0 +1,23 @@
FROM lnl7/nix:2.1.2
LABEL name="Nix Build for GitHub Actions"
LABEL version="1.0"
LABEL repository="http://github.com/glittershark/xanthous"
LABEL homepage="http://github.com/glittershark/xanthous"
LABEL maintainer="Griffin Smith <root at gws dot fyi>"
LABEL "com.github.actions.name"="Nix Build"
LABEL "com.github.actions.description"="Runs 'nix-build'"
LABEL "com.github.actions.icon"="cpu"
LABEL "com.github.actions.color"="purple"
RUN nix-env -iA \
nixpkgs.gnutar nixpkgs.gzip \
nixpkgs.gnugrep nixpkgs.git && \
mkdir -p /etc/nix && \
(echo "binary-caches = https://cache.nixos.org/" | tee -a /etc/nix/nix.conf) && \
(echo "trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" | tee -a /etc/nix/nix.conf)
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT [ "/entrypoint.sh" ]
CMD [ "--help" ]

24
.github/actions/nix-build/entrypoint.sh vendored Executable file
View file

@ -0,0 +1,24 @@
#!/usr/bin/env bash
# Entrypoint that runs nix-build and, optionally, copies Docker image tarballs
# to real files. The reason this is necessary is because once a Nix container
# exits, you must copy out the artifacts to the working directory before exit.
[ "$DEBUG" = "1" ] && set -x
[ "$QUIET" = "1" ] && QUIET_ARG="-Q"
set -e
# file to build (e.g. release.nix)
file="$1"
[ "$file" = "" ] && echo "No .nix file to build specified!" && exit 1
[ ! -e "$file" ] && echo "File $file not exist!" && exit 1
echo "Building all attrs in $file..."
nix-build --no-link ${QUIET_ARG} "$file"
echo "Copying build closure to $(pwd)/store..."
mapfile -t storePaths < <(nix-build ${QUIET_ARG} --no-link "$file" | grep -v cache-deps)
printf '%s\n' "${storePaths[@]}" > store.roots
nix copy --to "file://$(pwd)/store" "${storePaths[@]}"

View file

@ -4,16 +4,12 @@ on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Install dependencies
run: cabal install --only-dependencies --enable-tests
- name: Build
run: |
cabal configure --enable-tests
cabal build
- name: Run tests
run: cabal test
- name: Nix Build
with:
args: default.nix
uses: ./.github/actions/nix-build