Merge branch 'xMAC94x/cleanup_ci' into 'master'

remove duplicate airshipper ci jobs. Introduce weekly build.

See merge request veloren/veloren!3286
This commit is contained in:
Marcel 2022-04-24 14:35:10 +00:00
commit d409a67984
7 changed files with 56 additions and 79 deletions

View File

@ -14,6 +14,7 @@ variables:
GIT_DEPTH: 3 GIT_DEPTH: 3
GIT_CLEAN_FLAGS: -f GIT_CLEAN_FLAGS: -f
CACHE_IMAGE_TAG: d7756444 CACHE_IMAGE_TAG: d7756444
TAG_REGEX: '/^v[0-9]+\.[0-9]+\.[0-9]+$/'
default: default:
# https://docs.gitlab.com/ee/ci/pipelines/settings.html#auto-cancel-pending-pipelines # https://docs.gitlab.com/ee/ci/pipelines/settings.html#auto-cancel-pending-pipelines

View File

@ -194,38 +194,6 @@ macos-aarch64:
- .release - .release
tags: ["veloren/veloren:macos", "build", "publish", "trusted"] tags: ["veloren/veloren:macos", "build", "publish", "trusted"]
# The air-* builds are the builds that Airshipper Server expects to find in the scheduled build webhook JSON.
# Renaming these will break Airshipper downloads! build on schedule quickfix till airshipper 0.5
air-linux-x86_64:
extends:
- .tlinux-x86_64
- .release-scheduled
tags: ["veloren/veloren", "build", "publish", "trusted"]
air-linux-aarch64:
extends:
- .tlinux-aarch64
- .release-scheduled
tags: ["veloren/veloren", "build", "publish", "trusted"]
air-windows-x86_64:
extends:
- .twindows-x86_64
- .release-scheduled
tags: ["veloren/veloren", "build", "publish", "trusted"]
air-macos-x86_64:
extends:
- .tmacos-x86_64
- .release-scheduled
tags: ["veloren/veloren:macos", "build", "publish", "trusted"]
air-macos-aarch64:
extends:
- .tmacos-aarch64
- .release-scheduled
tags: ["veloren/veloren:macos", "build", "publish", "trusted"]
# if NOT release or master, allow optional builds # if NOT release or master, allow optional builds
opt-linux-x86_64: opt-linux-x86_64:
extends: extends:

View File

@ -1,10 +1,11 @@
# cargo clippy is a superset of cargo check, so we don't check manually
code-quality: code-quality:
extends: .recompile-branch extends: .recompile-branch
stage: check stage: check
image: registry.gitlab.com/veloren/veloren-docker-ci/cache/quality:${CACHE_IMAGE_TAG} image: registry.gitlab.com/veloren/veloren-docker-ci/cache/quality:${CACHE_IMAGE_TAG}
tags: ["veloren/veloren", "check"] tags: ["veloren/veloren", "check"]
script: script:
- echo $CI_COMMIT_TAG
- echo $TAG_REGEX
- ln -s /dockercache/target target - ln -s /dockercache/target target
- cat ./.gitlab/scripts/code-quality.sh - cat ./.gitlab/scripts/code-quality.sh
- source ./.gitlab/scripts/code-quality.sh - source ./.gitlab/scripts/code-quality.sh

View File

@ -3,16 +3,11 @@
.publish: .publish:
stage: publish stage: publish
rules: rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE != "schedule" - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
when: on_success
- when: never
.publish-nightly:
stage: publish
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "schedule"
when: on_success when: on_success
- when: never - when: never
before_script:
- source "$CI_PROJECT_DIR/.gitlab/scripts/utils.sh"
docker: docker:
extends: .publish extends: .publish
@ -29,27 +24,16 @@ docker:
# avoids this issue: https://github.com/GoogleContainerTools/kaniko/issues/1542 # avoids this issue: https://github.com/GoogleContainerTools/kaniko/issues/1542
- export container=docker - export container=docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json - 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}/server-cli:${CI_COMMIT_REF_NAME}" - |
publishdockertag PUBLISH_DOCKER_TAG
if [ "${PUBLISH_DOCKER_TAG}" != "" ]; then
/kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/server-cli/Dockerfile --destination "${CI_REGISTRY_IMAGE}/server-cli:${PUBLISH_DOCKER_TAG}"
fi
docker-nightly: gittag:
extends: .publish-nightly extends: .publish
image: rules:
name: gcr.io/kaniko-project/executor:debug - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "schedule"
entrypoint: [""]
tags: ["veloren/veloren", "publish", "trusted"]
dependencies:
- air-linux-x86_64
before_script:
- ls "$CI_PROJECT_DIR/server-cli/"
script:
# Help kaniko identify that it is running in a container.
# avoids this issue: https://github.com/GoogleContainerTools/kaniko/issues/1542
- export container=docker
- 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}/server-cli:nightly"
tag-nightly:
extends: .publish-nightly
image: registry.gitlab.com/veloren/veloren-docker-ci/cache/quality:${CACHE_IMAGE_TAG} image: registry.gitlab.com/veloren/veloren-docker-ci/cache/quality:${CACHE_IMAGE_TAG}
tags: ["veloren/veloren", "publish", "trusted"] tags: ["veloren/veloren", "publish", "trusted"]
script: script:
@ -57,11 +41,16 @@ tag-nightly:
- git config --global user.name "veloren-bot" - git config --global user.name "veloren-bot"
- git config --global http.postBuffer 52428800 - git config --global http.postBuffer 52428800
- git remote set-url origin https://veloren-bot:${GITLAB_TOKEN_WRITE}@${CI_PROJECT_URL:8} - git remote set-url origin https://veloren-bot:${GITLAB_TOKEN_WRITE}@${CI_PROJECT_URL:8}
- git tag -a "nightly" -m '' -f - |
- git push origin nightly -f if [[ ! "${SCHEDULE_CADENCE}" =~ ${TAG_REGEX} ]]; then
git tag -a "${SCHEDULE_CADENCE}" -m '' -f;
git push origin "${SCHEDULE_CADENCE}" -f;
fi
pages: pages:
extends: .publish extends: .publish
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE != "schedule"
image: registry.gitlab.com/veloren/veloren-docker-ci/cache/quality:${CACHE_IMAGE_TAG} image: registry.gitlab.com/veloren/veloren-docker-ci/cache/quality:${CACHE_IMAGE_TAG}
tags: ["veloren/veloren", "publish"] tags: ["veloren/veloren", "publish"]
artifacts: artifacts:

View File

@ -2,29 +2,17 @@
.optional-release: .optional-release:
stage: check stage: check
rules: rules:
- if: $CI_PIPELINE_SOURCE != "merge_request_event" || $CI_PIPELINE_SOURCE == "schedule" || $CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+/ || $CI_COMMIT_REF_NAME =~ /^r[0-9]+\.[0-9]+/ - if: $CI_PIPELINE_SOURCE != "merge_request_event" || $CI_PIPELINE_SOURCE == "schedule" || ( $CI_COMMIT_TAG != null && $CI_COMMIT_TAG =~ $TAG_REGEX )
when: never when: never
- when: manual - when: manual
allow_failure: true allow_failure: true
# Template to only run if pushes to master, a version tag, or release branch happened # Template to only run if pushes to master, schedule or a version tag
.release: .release:
stage: build stage: build
rules: rules:
- if: $CI_PIPELINE_SOURCE != "merge_request_event" && $CI_PIPELINE_SOURCE != "schedule" && ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+/ || $CI_COMMIT_REF_NAME =~ /^r[0-9]+\.[0-9]+/) - if: $CI_PIPELINE_SOURCE != "merge_request_event" && ( $CI_PIPELINE_SOURCE == "schedule" || $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || ( $CI_COMMIT_TAG != null && $CI_COMMIT_TAG =~ $TAG_REGEX ) )
when: on_success when: on_success
- when: never - when: never
retry: retry:
max: 1 max: 1
# Template to only run if pushes to master or a tag happened for scheduled builds
# This is a temporary fix until Airshipper can use a different mechanism of identifying jobs it should take
# artifacts from. Once this is done the air-* jobs can be removed.
.release-scheduled:
stage: build-nightly
rules:
- if: $CI_PIPELINE_SOURCE == "schedule" && ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+/ || $CI_COMMIT_REF_NAME =~ /^r[0-9]+\.[0-9]+/)
when: on_success
- when: never
retry:
max: 1

View File

@ -1,4 +1,5 @@
#!/bin/bash #!/bin/bash
# cargo clippy is a superset of cargo check, so we don't check manually
time cargo clippy --all-targets --locked --features="bin_cmd_doc_gen,bin_compression,bin_csv,bin_graphviz,bin_bot,bin_asset_migrate,asset_tweak" -- -D warnings && time cargo clippy --all-targets --locked --features="bin_cmd_doc_gen,bin_compression,bin_csv,bin_graphviz,bin_bot,bin_asset_migrate,asset_tweak" -- -D warnings &&
# Ensure that the veloren-voxygen default-publish feature builds as it excludes some default features # Ensure that the veloren-voxygen default-publish feature builds as it excludes some default features
time cargo clippy -p veloren-voxygen --locked --no-default-features --features="default-publish" -- -D warnings && time cargo clippy -p veloren-voxygen --locked --no-default-features --features="default-publish" -- -D warnings &&

29
.gitlab/scripts/util.sh Executable file
View File

@ -0,0 +1,29 @@
#!/bin/bash
### returns respective DOCKER TAG
### release-tag => <release-tag> (e.g. v1.2.3)
### schedule => <SCHEDULE_CADENCE> (e.g. nightly)
### master => "master"
### else => ""
publishdockertag () {
# this stores the result in a variable defined by the caller
local -n VAR=$1
VAR="";
if [[ "${CI_COMMIT_TAG}" =~ ${TAG_REGEX} ]]; then
VAR="${CI_COMMIT_TAG}";
return 0;
fi
if [[ -z "${SCHEDULE_CADENCE}" && ${CI_PIPELINE_SOURCE} == "schedule" ]]; then
# sanitize check
if [[ "${SCHEDULE_CADENCE}" =~ ${TAG_REGEX} ]]; then
VAR="invalid_cadence";
else
VAR="${SCHEDULE_CADENCE}";
fi
return 0;
fi
if [[ ${CI_COMMIT_BRANCH} == ${CI_DEFAULT_BRANCH} ]]; then
VAR="master";
return 0;
fi
}