-
Notifications
You must be signed in to change notification settings - Fork 28
/
semaphore.yml
66 lines (51 loc) · 2.41 KB
/
semaphore.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
---
version: "v1.0"
name: "Vaultenv CI Pipeline"
agent:
machine:
type: "f1-standard-2"
os_image: "ubuntu2004"
blocks:
- name: "Run checks"
task:
secrets:
# Keys needed to access our cachix cache.
- name: "cachix-channable-public"
jobs:
- name: "Run tests"
commands:
- "checkout"
# Download and verify Nix installation script.
- curl -o install-nix-2.10.3 https://releases.nixos.org/nix/nix-2.10.3/install
- sha256sum --check .semaphore/install-nix.sha256
# Restore `/nix` cache. Create the directory first, otherwise we encounter
# permission errors. We do this because the Semaphore cache is faster than
# both Cachix and cache.nixos.org.
- "sudo mkdir /nix"
- "sudo chown -R semaphore:semaphore /nix"
- "cache restore nix-store-"
# For some reason, Semaphore CI sets this variable, but it causes the nix installation to fail
- unset LD_LIBRARY_PATH
# Install Nix and source the shell configuration immediately.
- "sh ./install-nix-2.10.3 --no-daemon"
# Enable `nix-command` feature, which `nix build` needs to build
- "sudo mkdir /etc/nix"
- "echo 'experimental-features = nix-command' | sudo tee -a /etc/nix/nix.conf"
- ". $HOME/.nix-profile/etc/profile.d/nix.sh"
# Install Cachix and use the Channable cache
- "nix-env -iA nixpkgs.cachix"
- "cachix use channable-public"
# Build the devenv and the static package
- "nix-build --no-out-link default.nix nix/release.nix > nix-store-locations"
# push the result to Cachix.
- "cat nix-store-locations | cachix push channable-public"
# Run the build and tests with Stack
- "nix shell -f default.nix -c stack build --only-dependencies --test"
- "nix shell -f default.nix -c stack test"
# Run the integration tests
- "(cd test && nix shell -f default.nix -c ./integration_test.sh)"
# Build the Debian package
- "nix shell -f default.nix -c ./package/build_package.sh"
# Store a copy of the nix store. This will be refreshed daily, which
# is more than sufficient for this repo.
- "cache store nix-store-$(date -u -Idate) /nix"