Cargo
Private GitLab-Repositorien einbinden
Öffentliche Git-Repositorien können wie folgt eingebunden werden:
[dependencies]
public-repo = {git = "https://gitlab.instance.io/project/public-repo.git", tag = "v1.0.0"}
Um ein privates Git-Repositorium bei lokalen Builds einzubinden, muss das Repositorium über ssh geklont werden:
[dependencies]
private-repo = {git = "ssh://git@gitlab.instance.io/project/private-repo.git", tag = "v1.0.0"}
Damit der private ssh-Schlüssel verwendet wird, muss zudem cargo entsprechend konfiguriert werden:
mkdir .cargo
cat > .cargo/config <<EOF
[net]
git-fetch-with-cli = true
EOF
Für die Nutzung in Gitlab-CI-Prozessen muss die Pipeline so eingestellt werden, dass sie das CI-Access-Token beim Zugriff auf das Repositorium verwendet (das funktioniert natürlich nur, wenn das private Repo in derselben Gruppe wie der CI-Prozess liegt).
In .gitlab-ci.yml
zu ergänzen:
.git-access:
before_script:
- git config --global credential.helper store
- echo "https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.instance.io" > ~/.git-credentials
- git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.instance.io".insteadOf ssh://gitlab.instance.io
Damit wird eine Rewrite-Regel definiert, womit git bestimmte URLs ersetzen kann.
TODO: Docker / Podman-Integration (s. https://oliverjumpertz.com/blog/how-to-handle-private-gitlab-dependencies-with-cargo/)
Cargo-Erweiterungen
Alle mit cargo
installierten Binaries ausgeben:
cargo install -list
cargo-audit
Audit Cargo.lock files for vulnerable crates
cargo-binutils
Cargo subcommands to invoke the LLVM tools shipped with the Rust toolchain
cargo-expand
Show the result of macro expansion
cargo-generate
cargo, make me a project
cargo-make
Rust task runner and build tool
cargo-outdated
Displays information about project dependency versions
cargo-release
Cargo subcommand for you to smooth your release process.
cargo-tarpaulin
Cargo-Tarpaulin is a tool to determine code coverage achieved via tests
cargo-tree
Display a tree visualization of a dependency graph
cargo-update
Update dependencies as recorded in the local lock file
cargo-watch
Watches over your Cargo project’s source
cargo-wizard
Cargo subcommand for applying Cargo profile templates
rustfilt
Demangles names generated by the rust compiler
Testing
Logging und Tracing
Performanz messen
- flamegraph