add debian package building in ci

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.
This commit is contained in:
Charles Hall 2024-01-19 12:10:23 -08:00
parent 4de54db305
commit 0b7ed5adc9
No known key found for this signature in database
GPG key ID: 7B8E0645816E07CF
2 changed files with 27 additions and 5 deletions

View file

@ -8,17 +8,17 @@ variables:
before_script:
# Enable nix-command and flakes
- echo "experimental-features = nix-command flakes" >> /etc/nix/nix.conf
- if command -v nix > /dev/null; then echo "experimental-features = nix-command flakes" >> /etc/nix/nix.conf; fi
# Add nix-community binary cache
- echo "extra-substituters = https://nix-community.cachix.org" >> /etc/nix/nix.conf
- echo "extra-trusted-public-keys = nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" >> /etc/nix/nix.conf
- 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
- nix-env -iA nixpkgs.direnv nixpkgs.nix-direnv
- if command -v nix > /dev/null; then nix-env -iA nixpkgs.direnv nixpkgs.nix-direnv; fi
# Allow .envrc
- direnv allow
- 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"
@ -29,6 +29,7 @@ ci:
script:
- direnv exec . engage
cache:
key: nix
paths:
- target
- .gitlab-ci.d
@ -44,3 +45,22 @@ docker:
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

View file

@ -13,6 +13,8 @@ edition = "2021"
# rust-version HASH" in `flake.nix`. If you don't have Nix installed or
# otherwise don't know how to do this, ping `@charles:computer.surgery` or
# `@dusk:gaze.systems` in the matrix room.
#
# Also make sure to update the docker image tags in `.gitlab-ci.yml`.
rust-version = "1.70.0"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html