mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-01-22 17:33:19 +01:00
100 lines
2.4 KiB
YAML
100 lines
2.4 KiB
YAML
image: rust:latest
|
|
|
|
# Use shallow clone to reduce checkout size
|
|
variables:
|
|
GIT_DEPTH: "1"
|
|
# Put cargo home and target under project dir so we can clean them easily
|
|
CARGO_HOME: "$CI_PROJECT_DIR/.cargo"
|
|
CARGO_TARGET_DIR: "$CI_PROJECT_DIR/ci-target"
|
|
GIT_SUBMODULE_STRATEGY: normal
|
|
|
|
# Cache only cargo registries/git metadata to speed dependency fetches.
|
|
# Avoid caching compiled `target` artifacts which are large and easily fill disk.
|
|
.rust_cache: &rust_cache
|
|
cache:
|
|
key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
|
|
paths:
|
|
- .cargo/registry
|
|
- .cargo/git
|
|
|
|
before_script:
|
|
- df -h
|
|
- echo "Cleaning stale targets to free space if present"
|
|
- rm -rf "$CI_PROJECT_DIR/target" "$CI_PROJECT_DIR/ci-target" || true
|
|
- apt-get update -qq && apt-get install -y -qq libudev-dev libgtk-3-dev grep llvm clang libclang-dev libsdl2-dev libsdl2-gfx-dev
|
|
|
|
stages:
|
|
- format
|
|
- check
|
|
- test
|
|
- release
|
|
- deploy
|
|
|
|
format:
|
|
except:
|
|
- tags
|
|
<<: *rust_cache
|
|
script:
|
|
- rustup component add rustfmt || true
|
|
- cargo fmt --check
|
|
after_script:
|
|
- du -sh "$CI_PROJECT_DIR/ci-target" || true
|
|
- rm -rf "$CI_PROJECT_DIR/ci-target" || true
|
|
|
|
check:
|
|
except:
|
|
- tags
|
|
<<: *rust_cache
|
|
script:
|
|
- rustup component add clippy || true
|
|
- cargo check --locked --workspace
|
|
# deny currently catches too much
|
|
#- cargo install cargo-deny && cargo deny
|
|
- cargo install cargo-cranky && cargo cranky
|
|
after_script:
|
|
- rm -rf "$CI_PROJECT_DIR/ci-target" || true
|
|
|
|
test:
|
|
except:
|
|
- tags
|
|
<<: *rust_cache
|
|
script:
|
|
- mkdir -p .git/hooks > /dev/null
|
|
- cargo test --locked --all
|
|
after_script:
|
|
- rm -rf "$CI_PROJECT_DIR/ci-target" || true
|
|
|
|
release:
|
|
only:
|
|
- tags
|
|
<<: *rust_cache
|
|
script:
|
|
- cargo install cargo-vendor-filterer
|
|
- cargo fetch
|
|
- make FROZEN=1 && make vendor
|
|
artifacts:
|
|
paths:
|
|
- vendor_asusctl*.tar.xz
|
|
- cargo-config
|
|
expire_in: 1 week
|
|
after_script:
|
|
- rm -rf vendor vendor_asusctl*.tar.xz "$CI_PROJECT_DIR/ci-target" || true
|
|
|
|
pages:
|
|
stage: deploy
|
|
only:
|
|
- tags
|
|
<<: *rust_cache
|
|
script:
|
|
- cargo doc --locked --document-private-items --no-deps --workspace
|
|
- rm -rf public
|
|
- mkdir public
|
|
- cp -R ci-target/doc/* public
|
|
- cp extra/index.html public
|
|
artifacts:
|
|
paths:
|
|
- public
|
|
expire_in: 1 week
|
|
after_script:
|
|
- rm -rf "$CI_PROJECT_DIR/ci-target" || true
|