image: registry.gitlab.com/veloren/veloren-docker-ci:latest variables: GIT_STRATEGY: none stages: - optional-builds - check-compile - post before_script: - mkdir -p veloren - cd veloren - if [ ! -d ".git" ]; then git clone https://gitlab.com/veloren/veloren.git .; fi - git clean -f - git lfs install - git lfs fetch - git lfs checkout $CI_COMMIT_SHA - source $HOME/.cargo/env - df -h - free -h - gcc -v - cargo --version - export DISABLE_GIT_LFS_CHECK=true # -- optional build .optional-debug: &optional-debug stage: optional-builds tags: - veloren-docker except: - schedules when: manual optional-debug:linux: <<: *optional-debug cache: key: "cache-linux-debug" paths: - veloren/ script: - cd voxygen && VELOREN_ASSETS=assets cargo build --verbose && cd .. - cd server-cli && VELOREN_ASSETS=assets cargo build --verbose && cd .. - cp target/debug/veloren-server-cli $CI_PROJECT_DIR - cp target/debug/veloren-voxygen $CI_PROJECT_DIR - cp -r assets $CI_PROJECT_DIR artifacts: paths: - veloren-server-cli - veloren-voxygen - assets/ expire_in: 1 week optional-debug:windows: <<: *optional-debug cache: key: "cache-windows-debug" paths: - veloren/ script: - cd voxygen && VELOREN_ASSETS=assets cargo build --verbose --target=x86_64-pc-windows-gnu && cd .. - cd server-cli && VELOREN_ASSETS=assets cargo build --verbose --target=x86_64-pc-windows-gnu && cd .. - cp target/x86_64-pc-windows-gnu/debug/veloren-server-cli.exe $CI_PROJECT_DIR - cp target/x86_64-pc-windows-gnu/debug/veloren-voxygen.exe $CI_PROJECT_DIR - cp -r assets $CI_PROJECT_DIR artifacts: paths: - veloren-server-cli.exe - veloren-voxygen.exe - assets/ expire_in: 1 week .optional-release: &optional-release stage: optional-builds tags: - veloren-docker except: - schedules when: manual optional-release:linux: <<: *optional-release cache: key: "cache-linux-release" paths: - veloren/ script: - cd voxygen && VELOREN_ASSETS=assets cargo build --verbose --release && cd .. - cd server-cli && VELOREN_ASSETS=assets cargo build --verbose --release && cd .. - cp target/release/veloren-server-cli $CI_PROJECT_DIR - cp target/release/veloren-voxygen $CI_PROJECT_DIR - cp -r assets $CI_PROJECT_DIR artifacts: paths: - veloren-server-cli - veloren-voxygen - assets/ expire_in: 1 week optional-release:windows: <<: *optional-release cache: key: "cache-windows-release" paths: - veloren/ script: - cd voxygen && VELOREN_ASSETS=assets cargo build --verbose --target=x86_64-pc-windows-gnu --release && cd .. - cd server-cli && VELOREN_ASSETS=assets cargo build --verbose --target=x86_64-pc-windows-gnu --release && cd .. - cp target/x86_64-pc-windows-gnu/release/veloren-server-cli.exe $CI_PROJECT_DIR - cp target/x86_64-pc-windows-gnu/release/veloren-voxygen.exe $CI_PROJECT_DIR - cp -r assets $CI_PROJECT_DIR artifacts: paths: - veloren-server-cli.exe - veloren-voxygen.exe - assets/ expire_in: 1 week # -- # -- check check: stage: check-compile cache: key: "cache-linux-debug" paths: - veloren/ tags: - veloren-docker script: - RUSTFLAGS="-D warnings" cargo check --verbose code-quality: stage: check-compile cache: key: "cache-linux-debug" paths: - veloren/ tags: - veloren-docker script: - cargo clippy -- --warn clippy::all - cargo fmt --all -- --check # -- # -- post build unittests: stage: post cache: key: "cache-linux-debug" paths: - veloren/ when: delayed start_in: 5 seconds tags: - veloren-docker script: - cargo test benchmarks: stage: post cache: key: "cache-linux-release" paths: - veloren/ when: delayed start_in: 5 seconds tags: - veloren-docker script: - cargo bench allow_failure: true linux: stage: post cache: key: "cache-linux-release" paths: - veloren/ when: delayed start_in: 5 seconds only: refs: - /^r[0-9]+\.[0-9]+\.[0-9]+/ - /^v[0-9]+\.[0-9]+\.[0-9]+/ - /^master$/ tags: - veloren-docker script: - cd voxygen && VELOREN_ASSETS=assets cargo build --release && cd .. - cd server-cli && VELOREN_ASSETS=assets cargo build --release && cd .. - cp -r target/release/veloren-server-cli $CI_PROJECT_DIR - cp -r target/release/veloren-voxygen $CI_PROJECT_DIR - cp -r assets $CI_PROJECT_DIR artifacts: paths: - veloren-server-cli - veloren-voxygen - assets/ expire_in: 1 week windows: stage: post cache: key: "cache-windows-release" paths: - veloren/ when: delayed start_in: 5 seconds only: refs: - /^r[0-9]+\.[0-9]+\.[0-9]+/ - /^v[0-9]+\.[0-9]+\.[0-9]+/ - /^master$/ tags: - veloren-docker script: - cd voxygen && VELOREN_ASSETS=assets cargo build --target=x86_64-pc-windows-gnu --release && cd .. - cd server-cli && VELOREN_ASSETS=assets cargo build --target=x86_64-pc-windows-gnu --release && cd .. - cp -r target/x86_64-pc-windows-gnu/release/veloren-server-cli.exe $CI_PROJECT_DIR - cp -r target/x86_64-pc-windows-gnu/release/veloren-voxygen.exe $CI_PROJECT_DIR - cp -r assets $CI_PROJECT_DIR artifacts: paths: - veloren-server-cli.exe - veloren-voxygen.exe - assets/ expire_in: 1 week # --