diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 203c56a70b..889e5b0246 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,215 +22,8 @@ before_script: - 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" - -# -- +include: + - local: .gitlab/CI/optional-builds.gitlab-ci.yml + - local: .gitlab/CI/check-compile.gitlab-ci.yml + - local: .gitlab/CI/build-post.gitlab-ci.yml + - local: .gitlab/CI/publish.gitlab-ci.yml diff --git a/.gitlab/CI/build-post.gitlab-ci.yml b/.gitlab/CI/build-post.gitlab-ci.yml new file mode 100644 index 0000000000..aff874d177 --- /dev/null +++ b/.gitlab/CI/build-post.gitlab-ci.yml @@ -0,0 +1,114 @@ +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 \ No newline at end of file diff --git a/.gitlab/CI/check-compile.gitlab-ci.yml b/.gitlab/CI/check-compile.gitlab-ci.yml new file mode 100644 index 0000000000..b014d42f11 --- /dev/null +++ b/.gitlab/CI/check-compile.gitlab-ci.yml @@ -0,0 +1,22 @@ +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 \ No newline at end of file diff --git a/.gitlab/CI/optional-builds.gitlab-ci.yml b/.gitlab/CI/optional-builds.gitlab-ci.yml new file mode 100644 index 0000000000..ee5b6c34fd --- /dev/null +++ b/.gitlab/CI/optional-builds.gitlab-ci.yml @@ -0,0 +1,37 @@ +.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 \ No newline at end of file diff --git a/.gitlab/CI/publish.gitlab-ci.yml b/.gitlab/CI/publish.gitlab-ci.yml new file mode 100644 index 0000000000..78c13444c6 --- /dev/null +++ b/.gitlab/CI/publish.gitlab-ci.yml @@ -0,0 +1,21 @@ +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" \ No newline at end of file