build_Rust:
stage: build
tags:
- linux
- ci
timeout: 15 minutes
script:
- echo "Building Rust Binding"
- cd ./Rust/
- cargo build
artifacts:
paths:
- target/release/
expire_in: 1 hour
rules:
- if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"
changes:
- Rust/**/*
test_Rust:
stage: package
tags:
- linux
- ci
dependencies:
- build_Rust
needs:
- build_Rust
timeout: 15 minutes
script:
- echo "Testing Rust Binding"
- cd ./Rust/
- mv tests that_requires_an_avt_server_running/
- cargo test --all-targets
- cargo test --doc
rules:
- if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"
changes:
- Rust/**/*
release_Rust:
stage: deploy
tags:
- linux
- ci
timeout: 15 minutes
before_script:
- cd ./Rust/
- cargo install cargo-get
- echo "Package name - $(cargo get package.name)"
- echo "Package version - $(cargo get --version)"
- export CRATE_NAME=$(cargo get package.name) CRATE_VERSION=$(cargo get --version)
- export CRATE_FILE=${CRATE_NAME}-${CRATE_VERSION}.crate
script:
- echo "Packaging"
- cargo package
- cargo metadata --format-version 1 > metadata.json
- echo "$CARGO_REGISTRY_TOKEN" | cargo login
- cargo publish --allow-dirty
artifacts:
name: avesterra_rust
paths:
- ./Rust/metadata.json
rules:
- if: $CI_COMMIT_BRANCH == "master"
changes:
- Rust/src/**/*
- Rust/Cargo.toml
- Rust/README.md