CLD-5699 Preliminary fixes (#25040)
* Rework some of PR24647 * Store MM_LICENSE to .env.server file * Remove legacy network setup * Fixes, generate docker-compose and env files in one place * Simplify templating mechanism for server.yml * Fix race condition for dashboard start * Fix websockets for local debugging * Fix: make webhook-interaction work again * Simplify and fix dashboard&cloud configuration, formatting fix --------- Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
b0bf5d0765
Коммит
42b3ef0238
@@ -2,6 +2,9 @@
|
||||
|
||||
# Utility variables
|
||||
# NB: these assume you `source` them from the directory this file is in
|
||||
# Set up base docker compose file and export
|
||||
export MME2E_DC_SERVER="docker compose -p mmserver -f ./server.yml"
|
||||
export MME2E_DC_DASHBOARD="docker compose -p mmdashboard -f ./dashboard/docker/docker-compose.yml -f ./dashboard.override.yml"
|
||||
export MME2E_UID=$(id -u)
|
||||
export MME2E_OSTYPE=$(docker version -f '{{ .Client.Os }}')
|
||||
export MME2E_ARCHTYPE=$(docker version -f '{{ .Client.Arch }}')
|
||||
@@ -10,8 +13,11 @@ export NODE_VERSION_REQUIRED=$(cat ../../.nvmrc)
|
||||
# Default values for optional variables
|
||||
export SERVER_IMAGE_DEFAULT="mattermostdevelopment/mm-ee-test:$(git rev-parse --short=7 HEAD)"
|
||||
export BROWSER_DEFAULT="chrome"
|
||||
export SERVER_DEFAULT="self-hosted"
|
||||
export TEST_DEFAULT="cypress"
|
||||
export ENABLED_DOCKER_SERVICES_DEFAULT="postgres inbucket"
|
||||
# OS specific defaults overrides
|
||||
case $MME2E_OSTYPE in
|
||||
# OS specific defaults overrides
|
||||
darwin )
|
||||
BROWSER_DEFAULT="electron" ;;
|
||||
* )
|
||||
@@ -20,6 +26,9 @@ esac
|
||||
# Populate the optional variables that are used in the docker-compose file
|
||||
export SERVER_IMAGE=${SERVER_IMAGE:-$SERVER_IMAGE_DEFAULT}
|
||||
export BROWSER=${BROWSER:-$BROWSER_DEFAULT}
|
||||
export SERVER=${SERVER:-$SERVER_DEFAULT}
|
||||
export TEST=${TEST:-$TEST_DEFAULT}
|
||||
export ENABLED_DOCKER_SERVICES=${ENABLED_DOCKER_SERVICES:-$ENABLED_DOCKER_SERVICES_DEFAULT}
|
||||
|
||||
# Function definitions
|
||||
mme2e_log () { echo "[$(date +%Y-%m-%dT%H:%M:%S%Z)]" "$@"; }
|
||||
@@ -30,16 +39,16 @@ mme2e_get_current_shopt_arg () {
|
||||
case $(set -o | sed -n -E "s/^${SHOPT_ARG}[[:space:]]+(o..?)$/\1/p") in
|
||||
on) echo -n "-o ${SHOPT_ARG}";;
|
||||
off) echo -n "+o ${SHOPT_ARG}";;
|
||||
*) exit 1;;
|
||||
*) return 1;;
|
||||
esac
|
||||
}
|
||||
mme2e_load_env_file () {
|
||||
# This loads the ./.env file. Variables are automatically exported
|
||||
[ -f ./.env ] || return 0
|
||||
# This loads the ./env file. Variables are automatically exported
|
||||
[ -f ./env ] || return 0
|
||||
MME2E_PREVIOUS_ALLEXPORT=$(mme2e_get_current_shopt_arg allexport)
|
||||
set -o allexport
|
||||
mme2e_log "Loading .env file"
|
||||
. ./.env
|
||||
mme2e_log "Loading env file"
|
||||
. ./env
|
||||
# shellcheck disable=SC2086
|
||||
set ${MME2E_PREVIOUS_ALLEXPORT}
|
||||
}
|
||||
@@ -65,14 +74,15 @@ mme2e_wait_command_success () {
|
||||
# shellcheck disable=SC2086
|
||||
set ${MME2E_PREVIOUS_PIPEFAIL}
|
||||
if [ "$RETRIES_LEFT" = "0" ]; then
|
||||
exit 1
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
mme2e_wait_service_healthy () {
|
||||
DC_COMMAND="${DC_COMMAND:-$MME2E_DC_SERVER}"
|
||||
SERVICE_NAME=${1?}
|
||||
RETRIES_LEFT=${2:-1}
|
||||
RETRIES_INTERVAL=${3:-10}
|
||||
mme2e_wait_command_success "${MME2E_DC_SERVER} ps ${SERVICE_NAME} | grep -q '\(healthy\)'" "Waiting for ${SERVICE_NAME} container to be healthy" "$RETRIES_LEFT" "$RETRIES_INTERVAL"
|
||||
mme2e_wait_command_success "${DC_COMMAND} ps ${SERVICE_NAME} | grep -q '\(healthy\)'" "Waiting for ${SERVICE_NAME} container to be healthy" "$RETRIES_LEFT" "$RETRIES_INTERVAL"
|
||||
}
|
||||
mme2e_wait_image () {
|
||||
IMAGE_NAME=${1?}
|
||||
@@ -80,20 +90,16 @@ mme2e_wait_image () {
|
||||
RETRIES_INTERVAL=${3:-10}
|
||||
mme2e_wait_command_success "docker pull $IMAGE_NAME" "Waiting for docker image ${IMAGE_NAME} to be available" "$RETRIES_LEFT" "$RETRIES_INTERVAL"
|
||||
}
|
||||
mme2e_legacy_setup () {
|
||||
# These functions are needed until every pipeline depending on the `server/build/gitlab-dc.*.yml` files is adapted to not use external docker networking anymore
|
||||
# After that is fixed, this function and the external network in the docker-compose files may be removed
|
||||
export COMPOSE_PROJECT_NAME=mmserver_legacy
|
||||
case $MME2E_OSTYPE in
|
||||
windows )
|
||||
# https://learn.microsoft.com/en-us/virtualization/windowscontainers/container-networking/network-drivers-topologies
|
||||
DOCKER_NETWORK_DRIVER="nat" ;;
|
||||
* )
|
||||
DOCKER_NETWORK_DRIVER="bridge" ;;
|
||||
esac
|
||||
docker network inspect ${COMPOSE_PROJECT_NAME} >/dev/null 2>&1 || docker network create --driver=${DOCKER_NETWORK_DRIVER} ${COMPOSE_PROJECT_NAME}
|
||||
mme2e_is_token_in_list() {
|
||||
local TOKEN=$1
|
||||
local LIST=$2
|
||||
grep -qE "(^| )$TOKEN( |$)" <<<"$LIST"
|
||||
}
|
||||
|
||||
# Utility alias, for interactive shell usage. Can be reversed with 'unalias docker-compose' in your shell
|
||||
# NB: this won't work in the script
|
||||
alias docker-compose-mmserver='${MME2E_DC_SERVER}'
|
||||
alias docker-compose-mmdashboard='${MME2E_DC_DASHBOARD}'
|
||||
|
||||
# Call prerequisite utility functions
|
||||
mme2e_load_env_file
|
||||
mme2e_legacy_setup # Temporary
|
||||
|
||||
Ссылка в новой задаче
Block a user