CI: Wrap nix devshell invocation with just
Some checks failed
/ verify (push) Has been cancelled

This commit also adds the flake version to the justfile's version check.
This commit is contained in:
Juno Takano 2026-06-29 02:56:17 -03:00
commit 0b16253e1e
No known key found for this signature in database
3 changed files with 44 additions and 42 deletions

View file

@ -16,10 +16,11 @@ jobs:
container: container:
image: rust:slim image: rust:slim
steps: steps:
- name: Install action dependencies - name: Set up action dependencies
run: | run: |
apt-get install --no-install-recommends --update -y \ apt-get install --no-install-recommends --update -y nodejs git nix
nodejs git nix echo experimental-features = nix-command flakes >> /etc/nix/nix.conf
nix profile install nixpkgs#just # trixie is on nix 2.26
- name: Checkout code - name: Checkout code
uses: actions/checkout@v6 uses: actions/checkout@v6
@ -36,20 +37,15 @@ jobs:
run: | run: |
rust_version=$(sed -nE 's/^rust-version = "(.*)"$/\1/p' Cargo.toml) rust_version=$(sed -nE 's/^rust-version = "(.*)"$/\1/p' Cargo.toml)
su ci -c " # su ci -c "
rustup default '$rust_version' # rustup default '$rust_version'
rustup toolchain install nightly # rustup toolchain install nightly
rustup component add llvm-tools # rustup component add llvm-tools
rustup component add --toolchain nightly rustfmt clippy # rustup component add --toolchain nightly rustfmt clippy
rustup target add \ # rustup target add \
x86_64-unknown-linux-musl \ # x86_64-unknown-linux-musl \
x86_64-unknown-linux-gnu # x86_64-unknown-linux-gnu
" # "
- name: Assess - name: Assess
run: | run: /root/.nix-profile/bin/just ci-nix "$PATH" verify
ENV_PATH=$PATH su ci -c "
nix --experimental-features 'nix-command flakes' \
develop path:$PWD \
-c just -f $PWD/.justfile verify
"

View file

@ -310,17 +310,17 @@ check:
alias c := check alias c := check
# Run tests # Run tests
[group: 'assess'] [group: 'assess', script]
test pattern="": test pattern="":
cargo test {{ pattern }} --timings -- --test-threads=1 'serial_tests::' cargo test {{ pattern }} --timings -- --test-threads=1 'serial_tests::'
cargo test {{ pattern }} --timings --bin en cargo test {{ pattern }} --timings --bin en
cargo test {{ pattern }} --timings --doc cargo test {{ pattern }} --timings --doc
cargo test {{ pattern }} --timings --lib -- --skip 'serial_tests::' cargo test {{ pattern }} --timings --lib -- --skip 'serial_tests::'
{{ if which("wine") == "" { if command -v wine >/dev/null; then
"echo Skipping Windows tests: wine not found" {{ just_cmd }} test-windows
} else { else
just_cmd + " test-windows" echo "Skipping Windows tests: wine not found"
} }} fi
alias t := test alias t := test
@ -383,17 +383,15 @@ alias v := verify
[script, group: 'assess'] [script, group: 'assess']
[arg("remote", long="remote", short="r", value="true")] [arg("remote", long="remote", short="r", value="true")]
version-assess remote="false": update version-assess remote="false": update
last_remote_tag=$( echo "Local: {{ last_local_tag }}"
git ls-remote --tags --sort=-creatordate origin | echo "Remote: {{ last_remote_tag }}"
head -n 1 | tr -d v | cut -d / -f 3 echo "Manifest: {{ manifest_version }}"
) echo "Lockfile: {{ lockfile_version }}"
printf 'Local: %s\nRemote: %s\nManifest: %s\nLockfile: %s\n' \ echo "Flake: {{ flake_version }}"
"{{ last_local_tag }}" \
"$last_remote_tag" \
"{{ manifest_version }}" \
"{{ lockfile_version }}"
test "{{ last_local_tag }}" = "{{ lockfile_version }}" test "{{ last_local_tag }}" = "{{ lockfile_version }}"
test "{{ last_local_tag }}" = "{{ manifest_version }}" test "{{ last_local_tag }}" = "{{ manifest_version }}"
test "{{ last_local_tag }}" = "{{ flake_version }}"
if {{ if remote == "true" { "true" } else { "false" } }}; then if {{ if remote == "true" { "true" } else { "false" } }}; then
test "{{ last_local_tag }}" = "$last_remote_tag" test "{{ last_local_tag }}" = "$last_remote_tag"
fi fi
@ -529,12 +527,15 @@ alias ch := choose
[script, private] [script, private]
ci recipes: ci recipes:
ENV_PATH="$PATH" su ci -c "{{ just_cmd }} -f '{{ justfile() }}' {{ recipes }}" su ci -c "{{ just_cmd }} -f '{{ justfile() }}' {{ recipes }}"
[script, private] [script, private]
ci-nix recipes: ci-nix path recipes:
ENV_PATH="$PATH" su ci -c "nix develop --command \ ENV_PATH="{{ path }}" su ci -c "
{{ just_cmd }} -f '{{ justfile() }}' {{ recipes }}" nix --experimental-features 'nix-command flakes' \
develop "path:{{ justfile_directory() }}" --command \
{{ just_cmd }} -f '{{ justfile() }}' {{ recipes }}
"
[private] [private]
smoke: smoke:
@ -549,18 +550,23 @@ msvc_target := "x86_64-pc-windows-msvc"
default_target := musl_target default_target := musl_target
debug_vars := 'DEBUG=${DEBUG:-} DEBUG_FILTER=${DEBUG_FILTER:-} RUST_BACKTRACE=${RUST_BACKTRACE:-} RUSTFLAGS=${RUSTFLAGS:-}' debug_vars := 'DEBUG=${DEBUG:-} DEBUG_FILTER=${DEBUG_FILTER:-} RUST_BACKTRACE=${RUST_BACKTRACE:-} RUSTFLAGS=${RUSTFLAGS:-}'
just_cmd := 'just --timestamp --command-color green' just_cmd := just_cmd_no_ts + ' --timestamp'
just_cmd_no_ts := 'just --explain --command-color green' just_cmd_no_ts := just_executable() + ' --command-color green'
watch_cmd := "watchexec -qc -r -e rs,toml,html,css --color always -- " watch_cmd := "watchexec -qc -r -e rs,toml,html,css --color always -- "
cover_cmd := 'cargo llvm-cov --color always --ignore-filename-regex "main\.rs|log\.rs"' cover_cmd := 'cargo llvm-cov --color always --ignore-filename-regex "main\.rs|log\.rs"'
last_local_tag := `git tag --sort=-creatordate | head -n 1 | tr -d v` last_local_tag := `git tag --sort=-creatordate | head -n 1 | tr -d v`
last_remote_tag := ```
git ls-remote --tags --sort=-creatordate origin |
head -n 1 | tr -d v | cut -d / -f 3
```
manifest_version := `grep "^version" Cargo.toml | cut -d \" -f 2` manifest_version := `grep "^version" Cargo.toml | cut -d \" -f 2`
lockfile_version := ``` lockfile_version := ```
grep -A 1 'name = "en"' Cargo.lock \ grep -A 1 'name = "en"' Cargo.lock \
| grep version | cut -d '"' -f 2 | grep version | cut -d '"' -f 2
``` ```
flake_version := `grep '^ *version = "' flake.nix | cut -d \" -f 2`
## OPTIONS ## OPTIONS
set unstable set unstable # TODO remove this once all used features are stabilized
set lazy set lazy

View file

@ -5,7 +5,7 @@
outputs = { nixpkgs, self }: let outputs = { nixpkgs, self }: let
name = "en"; name = "en";
version = "0.4.0"; version = "0.4.0-alpha";
supportedSystems = [ supportedSystems = [
"x86_64-linux" "x86_64-linux"