Use nix-build in github-actions
This commit is contained in:
parent
05da490185
commit
272ff5b3e6
3 changed files with 52 additions and 9 deletions
23
.github/actions/nix-build/Dockerfile
vendored
Normal file
23
.github/actions/nix-build/Dockerfile
vendored
Normal 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
24
.github/actions/nix-build/entrypoint.sh
vendored
Executable 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[@]}"
|
14
.github/workflows/haskell.yml
vendored
14
.github/workflows/haskell.yml
vendored
|
@ -4,16 +4,12 @@ on: [push]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v1
|
||||||
- name: Install dependencies
|
- name: Nix Build
|
||||||
run: cabal install --only-dependencies --enable-tests
|
with:
|
||||||
- name: Build
|
args: default.nix
|
||||||
run: |
|
uses: ./.github/actions/nix-build
|
||||||
cabal configure --enable-tests
|
|
||||||
cabal build
|
|
||||||
- name: Run tests
|
|
||||||
run: cabal test
|
|
||||||
|
|
Loading…
Reference in a new issue