remove duplicate airshipper ci jobs. Introduce weekly build.

This requires the veloren schedule to contain variables and requires the airshipper server to handle those in the config
This commit is contained in:
Marcel Märtens 2022-03-19 12:49:40 +01:00
parent c6066d7f3f
commit 203fe7ad47
4 changed files with 119 additions and 78 deletions

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

@ -3,16 +3,15 @@
.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"
- publishtype PUBLISH_TYPE
- publishdockertag PUBLISH_DOCKER_TAG
- publishgittag PUBLISH_GIT_TAG
- echo "Publish detected '$PUBLISH_TYPE' Docker Tag '$PUBLISH_DOCKER_TAG' Git Tag '$PUBLISH_GIT_TAG'"
docker: docker:
extends: .publish extends: .publish
@ -29,27 +28,13 @@ 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}" - |
if [[ ! -z "${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:
name: gcr.io/kaniko-project/executor:debug
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,8 +42,11 @@ 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 [[ ! -z "${PUBLISH_GIT_TAG}" ]]; then
git tag -a "${PUBLISH_GIT_TAG}" -m '' -f;
git push origin "${PUBLISH_GIT_TAG}" -f;
fi
pages: pages:
extends: .publish extends: .publish

View File

@ -2,28 +2,16 @@
.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 =~ /^v[0-9]+\.[0-9]+\.[0-9]+/
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 =~ /^v[0-9]+\.[0-9]+\.[0-9]+/)
when: on_success
- when: never
retry:
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: on_success
- when: never - when: never
retry: retry:

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

@ -0,0 +1,97 @@
#!/bin/bash
### forbid setting SCHEDULE_CADENCE to v0.1.2 syntax
sanitize () {
local -n VAR=$1
INPUT=$2
if [[ "${INPUT}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+ ]]; then
echo "---WARN---SANITIZE---ACTIVE---"
VAR="";
return 1;
fi
VAR="${INPUT}";
}
### returns the respective type of publish for the ci
### 0 => optional build/no publish
### 10 => master build
### 20 => scheduled build
### 30 => release build
publishtype () {
local -n VAR=$1
if [[ "${CI_COMMIT_TAG}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+ ]]; then
VAR=30;
return 0;
fi
if [[ -z "${SCHEDULE_CADENCE}" && ${CI_PIPELINE_SOURCE} == "schedule" ]]; then
VAR=20;
return 0;
fi
if [[ ${CI_COMMIT_BRANCH} == ${CI_DEFAULT_BRANCH} ]]; then
VAR=10;
return 0;
fi
VAR=0;
}
### returns respective DOCKER TAG
### 0 => exit code 3
### 10 => master
### 20 => <SCHEDULE_CADENCE>
### 30 => <tag>
### else => exit code 7
publishdockertag () {
local -n VAR=$1
INPUT=$2
if [[ "${INPUT}" == "0" ]]; then
VAR="";
return 3;
fi
if [[ "${INPUT}" == "10" ]]; then
VAR="master";
return 0;
fi
if [[ "${INPUT}" == "20" ]]; then
VAR="${SCHEDULE_CADENCE}";
sanitize $1 "${VAR}";
return 0;
fi
if [[ "${INPUT}" == "30" ]]; then
VAR="${CI_COMMIT_TAG}";
return 0;
fi
VAR="";
return 7;
}
### returns respective GIT TAG
### 0 => exit code 3
### 10 => exit code 4
### 20 => <SCHEDULE_CADENCE>
### 30 => exit code 6
### else => exit code 7
publishgittag () {
local -n VAR=$1
INPUT=$2
if [[ "${INPUT}" == "0" ]]; then
VAR="";
return 3;
fi
if [[ "${INPUT}" == "10" ]]; then
VAR="";
return 4;
fi
if [[ "${INPUT}" == "20" ]]; then
VAR="${SCHEDULE_CADENCE}";
sanitize $1 "${VAR}";
return 0;
fi
if [[ "${INPUT}" == "30" ]]; then
VAR="${CI_COMMIT_TAG}";
return 0;
fi
VAR="";
return 7;
}