veloren/.gitlab-ci.yml
2019-10-17 15:35:14 +02:00

229 lines
5.8 KiB
YAML

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
- post
before_script:
- source $HOME/.cargo/env
- df -h
- free -h
- gcc -v
- cargo --version
- export DISABLE_GIT_LFS_CHECK=true
- find assets | md5sum
# -- 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-v2"
paths:
- ./target
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
artifacts:
paths:
- veloren-server-cli
- veloren-voxygen
- assets/
- LICENSE
expire_in: 1 week
optional-debug:windows:
<<: *optional-debug
cache:
key: "cache-windows-debug-v2"
paths:
- ./target
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
artifacts:
paths:
- veloren-server-cli.exe
- veloren-voxygen.exe
- assets/
- LICENSE
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-v2"
paths:
- ./target
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
artifacts:
paths:
- veloren-server-cli
- veloren-voxygen
- assets/
- LICENSE
expire_in: 1 week
optional-release:windows:
<<: *optional-release
cache:
key: "cache-windows-release-v2"
paths:
- ./target
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
artifacts:
paths:
- veloren-server-cli.exe
- veloren-voxygen.exe
- assets/
- LICENSE
expire_in: 1 week
# --
# -- check
check:
stage: check-compile
cache:
key: "cache-linux-debug-v2"
paths:
- ./target
tags:
- veloren-docker
script:
- RUSTFLAGS="-D warnings" cargo check --verbose
code-quality:
stage: check-compile
cache:
key: "cache-linux-debug-v2"
paths:
- ./target
tags:
- veloren-docker
script:
- cargo clippy -- --warn clippy::all
- cargo fmt --all -- --check
# --
# -- post build
unittests:
stage: post
cache:
key: "cache-linux-debug-v2"
paths:
- ./target
when: delayed
start_in: 5 seconds
tags:
- veloren-docker
script:
- cargo test
benchmarks:
stage: post
cache:
key: "cache-linux-release-v2"
paths:
- ./target
when: delayed
start_in: 5 seconds
tags:
- veloren-docker
script:
- cargo bench
allow_failure: true
linux:
stage: post
cache:
key: "cache-linux-release-v2"
paths:
- ./target
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
artifacts:
paths:
- veloren-server-cli
- veloren-voxygen
- assets/
expire_in: 1 week
windows:
stage: post
cache:
key: "cache-windows-release-v2"
paths:
- ./target
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
artifacts:
paths:
- veloren-server-cli.exe
- veloren-voxygen.exe
- assets/
expire_in: 1 week
# --