0b7ed5adc9
This uses a separate step and docker image, which I'm not a huge fan of. At least I could get this to work for now, but I won't be shocked when it breaks later. I know, I know, fixing this kind of problem is the exact reason I bothered to do this, but I was really struggling to do better here. Maybe I can take a second pass at this later. Also, this explicitly names the caches, because without this, various things related to linking will break.
66 lines
1.6 KiB
YAML
66 lines
1.6 KiB
YAML
stages:
|
|
- ci
|
|
- artifacts
|
|
|
|
variables:
|
|
# Makes some things print in color
|
|
TERM: ansi
|
|
|
|
before_script:
|
|
# Enable nix-command and flakes
|
|
- if command -v nix > /dev/null; then echo "experimental-features = nix-command flakes" >> /etc/nix/nix.conf; fi
|
|
|
|
# Add nix-community binary cache
|
|
- if command -v nix > /dev/null; then echo "extra-substituters = https://nix-community.cachix.org" >> /etc/nix/nix.conf; fi
|
|
- if command -v nix > /dev/null; then echo "extra-trusted-public-keys = nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" >> /etc/nix/nix.conf; fi
|
|
|
|
# Install direnv and nix-direnv
|
|
- if command -v nix > /dev/null; then nix-env -iA nixpkgs.direnv nixpkgs.nix-direnv; fi
|
|
|
|
# Allow .envrc
|
|
- if command -v nix > /dev/null; then direnv allow; fi
|
|
|
|
# Set CARGO_HOME to a cacheable path
|
|
- export CARGO_HOME="$(git rev-parse --show-toplevel)/.gitlab-ci.d/cargo"
|
|
|
|
ci:
|
|
stage: ci
|
|
image: nixos/nix:2.19.2
|
|
script:
|
|
- direnv exec . engage
|
|
cache:
|
|
key: nix
|
|
paths:
|
|
- target
|
|
- .gitlab-ci.d
|
|
|
|
docker:
|
|
stage: artifacts
|
|
image: nixos/nix:2.19.2
|
|
script:
|
|
- nix build .#oci-image
|
|
|
|
# Make the output less difficult to find
|
|
- cp result docker-image.tar.gz
|
|
artifacts:
|
|
paths:
|
|
- docker-image.tar.gz
|
|
|
|
debian:
|
|
stage: artifacts
|
|
image: rust:1.70.0
|
|
script:
|
|
- apt-get update && apt-get install -y --no-install-recommends libclang-dev
|
|
- cargo install cargo-deb
|
|
- cargo deb
|
|
|
|
# Make the output less difficult to find
|
|
- mv target/debian/*.deb .
|
|
artifacts:
|
|
paths:
|
|
- "*.deb"
|
|
cache:
|
|
key: debian
|
|
paths:
|
|
- target
|
|
- .gitlab-ci.d
|