From b6135f60eddb7c536ab54148bdcc28c526abb601 Mon Sep 17 00:00:00 2001 From: Songtronix Date: Thu, 14 May 2020 18:12:22 +0200 Subject: [PATCH] change(ci): document and add retries + fmt --- .gitlab-ci.yml | 52 +++--- .gitlab/CI/build-post.gitlab-ci.yml | 193 +++++++++++------------ .gitlab/CI/check-compile.gitlab-ci.yml | 34 ++-- .gitlab/CI/optional-builds.gitlab-ci.yml | 64 ++++---- .gitlab/CI/publish.gitlab-ci.yml | 40 ++--- 5 files changed, 192 insertions(+), 191 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 733c4b152d..410ba6a02d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,33 +1,43 @@ stages: - - optional-builds - - check-compile - - build-post - - publish + - optional-builds + - check-compile + - build-post + - publish variables: - GIT_STRATEGY: fetch - GIT_DEPTH: 3 - GIT_CLEAN_FLAGS: -f + # Note: this is deprecated! + # https://docs.gitlab.com/ee/ci/yaml/#git-strategy + # However in gitlab web ui it's set to fetch so it should be fine ¯\_(ツ)_/¯ + GIT_STRATEGY: fetch + # Note: this is deprecated! + # ttps://docs.gitlab.com/ee/ci/yaml/#shallow-cloning + GIT_DEPTH: 3 + GIT_CLEAN_FLAGS: -f default: image: registry.gitlab.com/veloren/veloren-docker-ci:latest # https://docs.gitlab.com/ee/ci/pipelines/settings.html#auto-cancel-pending-pipelines interruptible: true - + # Retry automatically incase the runner times out or there's a runner failure + retry: + max: 2 + when: + - runner_system_failure + - stuck_or_timeout_failure 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 + - 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 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 + - 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 index aff874d177..58cbc79386 100644 --- a/.gitlab/CI/build-post.gitlab-ci.yml +++ b/.gitlab/CI/build-post.gitlab-ci.yml @@ -1,114 +1,105 @@ 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 + stage: build-post + when: delayed + start_in: 5 seconds + tags: + - veloren-docker + script: + - cargo test + retry: + max: 2 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 + stage: build-post + allow_failure: true + when: delayed + start_in: 5 seconds + tags: + - veloren-docker + script: + - cargo tarpaulin -v + retry: + max: 2 benchmarks: - stage: build-post - when: delayed - start_in: 5 seconds - tags: - - veloren-docker - script: - - unset DISABLE_GIT_LFS_CHECK - - cargo bench + stage: build-post + when: delayed + start_in: 5 seconds + tags: + - veloren-docker + script: + - unset DISABLE_GIT_LFS_CHECK + - cargo bench + retry: + max: 2 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 + 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 + +# Artifacts + +.artifact: &artifact + 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 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 + <<: *artifact + 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 + <<: *artifact + 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 + <<: *artifact + 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 diff --git a/.gitlab/CI/check-compile.gitlab-ci.yml b/.gitlab/CI/check-compile.gitlab-ci.yml index b014d42f11..e2434b6a86 100644 --- a/.gitlab/CI/check-compile.gitlab-ci.yml +++ b/.gitlab/CI/check-compile.gitlab-ci.yml @@ -1,22 +1,22 @@ check: - stage: check-compile - tags: - - veloren-docker - script: - - RUSTFLAGS="-D warnings" cargo check --locked + 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 + 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 + stage: check-compile + allow_failure: true + tags: + - veloren-docker + script: + - cargo audit diff --git a/.gitlab/CI/optional-builds.gitlab-ci.yml b/.gitlab/CI/optional-builds.gitlab-ci.yml index ee5b6c34fd..086b9ba72c 100644 --- a/.gitlab/CI/optional-builds.gitlab-ci.yml +++ b/.gitlab/CI/optional-builds.gitlab-ci.yml @@ -1,37 +1,37 @@ .optional-release: &optional-release - stage: optional-builds - tags: - - veloren-docker - except: - - schedules - when: manual + 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 + 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 + <<: *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 diff --git a/.gitlab/CI/publish.gitlab-ci.yml b/.gitlab/CI/publish.gitlab-ci.yml index 78c13444c6..d2398f4cf5 100644 --- a/.gitlab/CI/publish.gitlab-ci.yml +++ b/.gitlab/CI/publish.gitlab-ci.yml @@ -1,21 +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 + 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"