image: registry.gitlab.com/veloren/veloren-docker-ci:latest variables: GIT_STRATEGY: fetch GIT_DEPTH: 3 GIT_CLEAN_FLAGS: -f stages: - optional-builds - check-compile - build-post - publish before_script: - source $HOME/.cargo/env - df -h / - free -h - cargo --version - export DISABLE_GIT_LFS_CHECK=true - export VELOREN_ASSETS="$(pwd)/assets" - echo "VELOREN_ASSETS=$VELOREN_ASSETS" - rm -r target || echo "target doesnt exist, which is fine" - ln -s /dockercache/veloren/target target # -- optional build .optional-release: &optional-release stage: optional-builds tags: - veloren-docker except: - schedules when: manual optional-release:linux: <<: *optional-release script: - cargo build --verbose --release - cp target/release/veloren-server-cli $CI_PROJECT_DIR - cp target/release/veloren-voxygen $CI_PROJECT_DIR - strip --strip-all veloren-server-cli - strip --strip-all veloren-voxygen artifacts: paths: - veloren-server-cli - veloren-voxygen - assets/ - LICENSE expire_in: 1 week optional-release:windows: <<: *optional-release script: - cargo build --verbose --target=x86_64-pc-windows-gnu --release - 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 artifacts: paths: - veloren-server-cli.exe - veloren-voxygen.exe - assets/ - LICENSE expire_in: 1 week # -- # -- check check: stage: check-compile tags: - veloren-docker script: - RUSTFLAGS="-D warnings" cargo check --locked code-quality: stage: check-compile tags: - veloren-docker script: - cargo clippy -- --warn clippy::all - cargo fmt --all -- --check security: stage: check-compile allow_failure: true tags: - veloren-docker script: - cargo audit # -- # -- build-post unittests: stage: build-post when: delayed start_in: 5 seconds tags: - veloren-docker script: - echo "Workaround, cargo tests fails due some rust files are already deleted, so we just stack cargo test. if its the os error, it wont appear on them all, if its a real error, it will retry and then fail" - cargo test || ( sleep 10 && cargo test ) || ( sleep 10 && cargo test ) || cargo test || cargo test || cargo test || cargo test || cargo test || cargo test || cargo test || cargo test || cargo test || cargo test coverage: stage: build-post allow_failure: true when: delayed start_in: 5 seconds tags: - veloren-docker script: - echo "Workaround, tarpaulin fails due some rust files are already deleted, so we just stack tarpaulin. if its the os error, it wont appear on them all, if its a real error, it will retry and then fail" - cargo tarpaulin -v || ( sleep 10 && cargo tarpaulin -v ) || ( sleep 10 && cargo tarpaulin -v ) || cargo tarpaulin -v || cargo tarpaulin -v || cargo tarpaulin -v || cargo tarpaulin -v || cargo tarpaulin -v || cargo tarpaulin -v || cargo tarpaulin -v || cargo tarpaulin -v benchmarks: stage: build-post when: delayed start_in: 5 seconds tags: - veloren-docker script: - unset DISABLE_GIT_LFS_CHECK - cargo bench localization-status: variables: GIT_DEPTH: 0 stage: build-post when: delayed start_in: 5 seconds allow_failure: true tags: - veloren-docker script: - cargo test -q test_all_localizations -- --nocapture --ignored linux: stage: build-post when: delayed start_in: 5 seconds only: refs: - /^r[0-9]+\.[0-9]+\.[0-9]+/ - /^v[0-9]+\.[0-9]+/ - /^master$/ tags: - veloren-docker script: - cargo build --release - cp -r target/release/veloren-server-cli $CI_PROJECT_DIR - cp -r target/release/veloren-voxygen $CI_PROJECT_DIR - strip --strip-all veloren-server-cli - strip --strip-all veloren-voxygen artifacts: paths: - veloren-server-cli - veloren-voxygen - assets/ - LICENSE expire_in: 1 week windows: stage: build-post when: delayed start_in: 5 seconds only: refs: - /^r[0-9]+\.[0-9]+\.[0-9]+/ - /^v[0-9]+\.[0-9]+/ - /^master$/ tags: - veloren-docker script: - cargo build --target=x86_64-pc-windows-gnu --release - 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 artifacts: paths: - veloren-server-cli.exe - veloren-voxygen.exe - assets/ - LICENSE expire_in: 1 week macos: stage: build-post when: delayed start_in: 5 seconds only: refs: - /^r[0-9]+\.[0-9]+\.[0-9]+/ - /^v[0-9]+\.[0-9]+/ - /^master$/ tags: - veloren-docker script: - PATH="/dockercache/osxcross/target/bin:$PATH" COREAUDIO_SDK_PATH=/dockercache/osxcross/target/SDK/MacOSX10.13.sdk CC=o64-clang CXX=o64-clang++ cargo build --target x86_64-apple-darwin --release - cp -r target/x86_64-apple-darwin/release/veloren-server-cli $CI_PROJECT_DIR - cp -r target/x86_64-apple-darwin/release/veloren-voxygen $CI_PROJECT_DIR artifacts: paths: - veloren-server-cli - veloren-voxygen - assets/ - LICENSE expire_in: 1 week allow_failure: true # -- # -- publish docker: stage: publish when: delayed start_in: 5 seconds image: name: gcr.io/kaniko-project/executor:debug entrypoint: [""] dependencies: - linux before_script: - ls "$CI_PROJECT_DIR/server-cli/" only: refs: - /^r[0-9]+\.[0-9]+\.[0-9]+/ - /^v[0-9]+\.[0-9]+/ - /^master$/ tags: - veloren-docker script: - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/server-cli/Dockerfile --destination "${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_NAME}-server" # --