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
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
opt-linux-x86_64:
extends:

View File

@ -3,16 +3,15 @@
.publish:
stage: publish
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE != "schedule"
when: on_success
- when: never
.publish-nightly:
stage: publish
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "schedule"
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
when: on_success
- 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:
extends: .publish
@ -29,27 +28,13 @@ docker:
# 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:${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:
extends: .publish-nightly
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
gittag:
extends: .publish
image: registry.gitlab.com/veloren/veloren-docker-ci/cache/quality:${CACHE_IMAGE_TAG}
tags: ["veloren/veloren", "publish", "trusted"]
script:
@ -57,8 +42,11 @@ tag-nightly:
- git config --global user.name "veloren-bot"
- git config --global http.postBuffer 52428800
- 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:
extends: .publish

View File

@ -2,29 +2,17 @@
.optional-release:
stage: check
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: manual
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:
stage: build
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: never
retry:
max: 1
max: 1

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;
}