veloren/.gitlab-ci.yml
Forest Anderson 1ed043d70e fix my CodeReview,
no need to remove old zip because we remove the whole bin folder now
no need to copy archive at the end, just upload the archive in `bin/`


Former-commit-id: 05c6faf144e67169336a2cdcb5817ac9998e170c
2019-04-29 14:05:53 +00:00

215 lines
5.7 KiB
YAML

stages:
- build
- test
- post-build
- executable
# our own git fetch command like https://gitlab.com/gitlab-org/gitlab-runner/blob/master/shells/abstract.go
# speeds up building because we skip the git clean and dont need any gitlab caches
variables:
GIT_STRATEGY: none
before_script:
- mkdir -p /cache/veloren
- rm -rf /cache/veloren/bin
- cd /cache/veloren
- if [ -d .git ]; then
echo "is git dir";
else
git clone $CI_REPOSITORY_URL . ;
fi;
- mkdir -p /cache/veloren/bin
- rm -f .git/index.lock
- rm -f .git/shallow.lock
- rm -f .git/HEAD.lock
- rm -f .git/hocks/post-checkout
- git remote set-url origin $CI_REPOSITORY_URL
- git fetch origin --prune +refs/heads/*:refs/remotes/origin/* +refs/tags/*:refs/tags/*
- git checkout -f -q $CI_COMMIT_SHA
- if [ ! -z "${SOURCE_PROJECT}" -a "${SOURCE_PROJECT}" != " " ]; then
echo "THIS SEEMS TO BE A MERGE PIPELINE FROM ${SOURCE_PROJECT}/${SOURCE_BRANCH}";
git pull "https://gitlab.com/${SOURCE_PROJECT}/veloren.git" "${SOURCE_BRANCH}";
fi;
- git submodule sync --recursive
- git submodule update --init --recursive --depth 20
- git status
- if [ -d target ]; then
ls -la target;
fi;
#############
# BUILD
#############
build-voxygen:
stage: build
image: registry.gitlab.com/veloren/veloren-docker-ci
tags:
- veloren-docker
script:
- (cd voxygen && cargo build)
build-server-cli:
stage: build
image: registry.gitlab.com/veloren/veloren-docker-ci
tags:
- veloren-docker
script:
- (cd server-cli && cargo build)
#############
# TEST
#############
unittests:
stage: test
image: registry.gitlab.com/veloren/veloren-docker-ci
tags:
- veloren-docker
script:
- cargo test
benchmarktests:
stage: test
image: registry.gitlab.com/veloren/veloren-docker-ci
tags:
- veloren-docker
script:
- cargo bench
allow_failure: true
#############
# POST-BUILD
#############
clean-code:
stage: post-build
image: registry.gitlab.com/veloren/veloren-docker-ci
tags:
- veloren-docker
script:
- cargo fmt --all -- --check
allow_failure: true
# # Coverage needs to be disabled until an issue in the Rust compiler is fixed
# # https://github.com/rust-lang/rust/issues/58375
# coverage:
# stage: post-build
# image: registry.gitlab.com/veloren/veloren-docker-ci
# tags:
# - veloren-docker
# script:
# - cargo tarpaulin --all
# allow_failure: true
clippy:
stage: post-build
image: registry.gitlab.com/veloren/veloren-docker-ci
tags:
- veloren-docker
script:
- cargo clippy --all -- -D clippy || echo "This job is disabled, because we are not activly using it now, so we dont want to see yellow failed partly"
allow_failure: true
#############
# Commit build
#############
commit-linux-debug:
stage: executable
image: registry.gitlab.com/veloren/veloren-docker-ci
tags:
- veloren-docker
script:
- (cd voxygen && VELOREN_ASSETS=assets cargo build)
- (cd server-cli && VELOREN_ASSETS=assets cargo build)
- rm -r -f commit-build
- mkdir commit-build
- cp target/debug/veloren-server-cli commit-build
- cp target/debug/veloren-voxygen commit-build
- cp -r assets commit-build/
- cp -r voxygen/shaders commit-build/
- tar -cvjSf bin/commit-linux-debug.tar.bz2 commit-build
artifacts:
paths:
- bin/commit-linux-debug.tar.bz2
expire_in: 1 week
except:
- schedules
only:
refs:
- master
commit-windows-debug:
stage: executable
image: registry.gitlab.com/veloren/veloren-docker-ci
tags:
- veloren-docker
script:
- (cd voxygen && VELOREN_ASSETS=assets cargo build --target=x86_64-pc-windows-gnu)
- (cd server-cli && VELOREN_ASSETS=assets cargo build --target=x86_64-pc-windows-gnu)
- rm -r -f commit-build
- mkdir commit-build
- cp target/x86_64-pc-windows-gnu/debug/veloren-server-cli.exe commit-build
- cp target/x86_64-pc-windows-gnu/debug/veloren-voxygen.exe commit-build
- cp -r assets commit-build/
- cp -r voxygen/shaders commit-build/
- zip -r bin/commit-windows-debug.zip commit-build
artifacts:
paths:
- bin/commit-windows-debug.zip
expire_in: 1 week
except:
- schedules
only:
refs:
- master
#############
# NIGHTLY
#############
nightly-linux-optimized:
stage: executable
image: registry.gitlab.com/veloren/veloren-docker-ci
tags:
- veloren-docker
script:
- (cd voxygen && VELOREN_ASSETS=assets cargo build --release)
- (cd server-cli && VELOREN_ASSETS=assets cargo build --release)
- rm -r -f nightly-build
- mkdir nightly-build
- cp target/release/veloren-server-cli nightly-build
- cp target/release/veloren-voxygen nightly-build
- cp -r assets nightly-build/
- cp -r voxygen/shaders nightly-build/
- tar -cvjSf bin/nightly-linux-optimized.tar.bz2 nightly-build
artifacts:
paths:
- bin/nightly-linux-optimized.tar.bz2
expire_in: 2 days
only:
- schedules
nightly-windows-optimized:
stage: executable
image: registry.gitlab.com/veloren/veloren-docker-ci
tags:
- veloren-docker
script:
- (cd voxygen && VELOREN_ASSETS=assets cargo build --release --target=x86_64-pc-windows-gnu)
- (cd server-cli && VELOREN_ASSETS=assets cargo build --release --target=x86_64-pc-windows-gnu)
- rm -r -f nightly-build
- mkdir nightly-build
- cp target/x86_64-pc-windows-gnu/release/veloren-server-cli.exe nightly-build
- cp target/x86_64-pc-windows-gnu/release/veloren-voxygen.exe nightly-build
- cp -r assets nightly-build/
- cp -r voxygen/shaders nightly-build/
- zip -r bin/nightly-windows-optimized.zip nightly-build
artifacts:
paths:
- bin/nightly-windows-optimized.zip
expire_in: 2 days
only:
- schedules