2
2
set -eu
3
3
set -o pipefail
4
4
5
+ function print_logs {
6
+ docker logs ${CONTAINER_SERVER} 1
7
+ docker logs ${CONTAINER_SERVER} 2
8
+ docker logs ${CONTAINER_PROXY}
9
+ }
10
+
11
+ trap print_logs EXIT
12
+
13
+ mkdir -p ${WORKSPACE} /logs
14
+ mkdir -p ${WORKSPACE} /config
15
+ mkdir -p ${WORKSPACE} /dotenv
16
+
5
17
docker network create ${DOCKER_NETWORK}
6
18
7
19
# Start server dependencies
8
20
echo " Starting server dependencies ... "
9
- DOCKER_NETWORK=${DOCKER_NETWORK} docker compose -f ${DOCKER_COMPOSE_FILE} run -d --rm start_dependencies
21
+ DOCKER_NETWORK=${DOCKER_NETWORK} CONTAINER_PROXY= ${CONTAINER_PROXY} docker compose -f ${DOCKER_COMPOSE_FILE} run -d --rm start_dependencies
10
22
timeout --foreground 90s bash -c " until docker compose -f ${DOCKER_COMPOSE_FILE} exec -T postgres pg_isready ; do sleep 5 ; done"
11
23
12
24
echo " Pulling ${IMAGE_CALLS_RECORDER} in order to be quickly accessible ... "
@@ -29,15 +41,87 @@ docker images
29
41
echo " Spawning calls-offloader service with docker host access ..."
30
42
# Spawn calls offloader image as root to access local docker socket
31
43
docker run -d --quiet --user root --name " ${COMPOSE_PROJECT_NAME} _callsoffloader" \
32
- -v /var/run/docker.sock:/var/run/docker.sock:rw \
33
- --net ${DOCKER_NETWORK} \
34
- --env " API_SECURITY_ALLOWSELFREGISTRATION=true" \
35
- --env " JOBS_MAXCONCURRENTJOBS=20" \
36
- --env " LOGGER_ENABLEFILE=false" \
37
- --env " LOGGER_CONSOLELEVEL=DEBUG" \
38
- --env " DEV_MODE=true" \
39
- --env " DOCKER_NETWORK=${DOCKER_NETWORK} " \
40
- --network-alias=calls-offloader ${IMAGE_CALLS_OFFLOADER}
44
+ -v /var/run/docker.sock:/var/run/docker.sock:rw \
45
+ --net ${DOCKER_NETWORK} \
46
+ --env " API_SECURITY_ALLOWSELFREGISTRATION=true" \
47
+ --env " JOBS_MAXCONCURRENTJOBS=20" \
48
+ --env " LOGGER_ENABLEFILE=false" \
49
+ --env " LOGGER_CONSOLELEVEL=DEBUG" \
50
+ --env " DEV_MODE=true" \
51
+ --env " DOCKER_NETWORK=${DOCKER_NETWORK} " \
52
+ --network-alias=calls-offloader ${IMAGE_CALLS_OFFLOADER}
41
53
42
54
# Check that calls-offloader is up and ready
43
55
docker run --rm --quiet --name " ${COMPOSE_PROJECT_NAME} _curl_callsoffloader" --net ${DOCKER_NETWORK} ${IMAGE_CURL} sh -c " until curl -fs http://calls-offloader:4545/version; do echo Waiting for calls-offloader; sleep 5; done; echo calls-offloader is up"
56
+
57
+ # # Add extra environment variables for mattermost server. This is needed to override configuration in HA since
58
+ # # the config is stored in DB.
59
+ echo " MM_LICENSE=${MM_PLUGIN_CALLS_TEST_LICENSE} " >> ${WORKSPACE} /dotenv/app.private.env
60
+ echo " MM_FEATUREFLAGS_BoardsProduct=true" >> ${WORKSPACE} /dotenv/app.private.env
61
+ echo " MM_SERVICEENVIRONMENT=test" >> ${WORKSPACE} /dotenv/app.private.env
62
+ echo " MM_CALLS_JOB_SERVICE_URL=http://calls-offloader:4545" >> ${WORKSPACE} /dotenv/app.private.env
63
+ echo " MM_CONFIG=postgres://mmuser:mostest@postgres/mattermost_test?sslmode=disable&connect_timeout=10&binary_parameters=yes" >> ${WORKSPACE} /dotenv/app.private.env
64
+ echo " MM_SERVICESETTINGS_SITEURL=http://mm-server:8065" >> ${WORKSPACE} /dotenv/app.private.env
65
+ echo " MM_SERVICESETTINGS_ENABLELOCALMODE=true" >> ${WORKSPACE} /dotenv/app.private.env
66
+ echo " MM_SERVICESETTINGS_ENABLEDEVELOPER=true" >> ${WORKSPACE} /dotenv/app.private.env
67
+ echo " MM_SERVICESETTINGS_ENABLETESTING=true" >> ${WORKSPACE} /dotenv/app.private.env
68
+ echo " MM_SERVICESETTINGS_ALLOWCORSFROM=http://localhost:8065" >> ${WORKSPACE} /dotenv/app.private.env
69
+ echo " MM_SERVICESETTINGS_ENABLEONBOARDINGFLOW=false" >> ${WORKSPACE} /dotenv/app.private.env
70
+ echo " MM_PLUGINSETTINGS_ENABLE=true" >> ${WORKSPACE} /dotenv/app.private.env
71
+ echo " MM_PLUGINSETTINGS_ENABLEUPLOADS=true" >> ${WORKSPACE} /dotenv/app.private.env
72
+ echo " MM_PLUGINSETTINGS_AUTOMATICPREPACKAGEDPLUGINS=false" >> ${WORKSPACE} /dotenv/app.private.env
73
+ echo " MM_CLUSTERSETTINGS_ENABLE=true" >> ${WORKSPACE} /dotenv/app.private.env
74
+ echo " MM_CLUSTERSETTINGS_CLUSTERNAME=mm_server_e2e" >> ${WORKSPACE} /dotenv/app.private.env
75
+ echo " MM_LOGSETTINGS_CONSOLELEVEL=DEBUG" >> ${WORKSPACE} /dotenv/app.private.env
76
+ echo " MM_LOGSETTINGS_FILELEVEL=DEBUG" >> ${WORKSPACE} /dotenv/app.private.env
77
+ echo " MM_SQLSETTINGS_DATASOURCE=postgres://mmuser:mostest@postgres:5432/mattermost_test?sslmode=disable&connect_timeout=10&binary_parameters=yes" >> ${WORKSPACE} /dotenv/app.private.env
78
+ echo " MM_EXPERIMENTALSETTINGS_DISABLEAPPBAR=false" >> ${WORKSPACE} /dotenv/app.private.env
79
+ echo " MM_ANNOUNCEMENTSETTINGS_USERNOTICESENABLED=false" >> ${WORKSPACE} /dotenv/app.private.env
80
+ echo " MM_ANNOUNCEMENTSETTINGS_ADMINNOTICESENABLED=false" >> ${WORKSPACE} /dotenv/app.private.env
81
+
82
+ sudo cp -r ${WORKSPACE} /logs ${WORKSPACE} /logs1
83
+ sudo cp -r ${WORKSPACE} /config ${WORKSPACE} /config1
84
+ sudo chown -R 2000:2000 ${WORKSPACE} /logs1
85
+ sudo chown -R 2000:2000 ${WORKSPACE} /config1
86
+
87
+ sudo cp -r ${WORKSPACE} /logs ${WORKSPACE} /logs2
88
+ sudo cp -r ${WORKSPACE} /config ${WORKSPACE} /config2
89
+ sudo chown -R 2000:2000 ${WORKSPACE} /logs2
90
+ sudo chown -R 2000:2000 ${WORKSPACE} /config2
91
+
92
+ mkdir -p ${WORKSPACE} /mmdata
93
+ sudo chown -R 2000:2000 ${WORKSPACE} /mmdata
94
+
95
+ # Spawn mattermost server
96
+ echo " Spawning mattermost server 1 ... "
97
+ docker run -d --quiet --name ${CONTAINER_SERVER} 1 \
98
+ --net ${DOCKER_NETWORK} \
99
+ --net-alias mm-server1 \
100
+ --user mattermost:mattermost \
101
+ --env-file=" ${WORKSPACE} /dotenv/app.private.env" \
102
+ -v ${WORKSPACE} /config1:/mattermost/config:rw \
103
+ -v ${WORKSPACE} /logs1:/mattermost/logs:rw \
104
+ -v ${WORKSPACE} /mmdata:/mattermost/data:rw \
105
+ ${IMAGE_SERVER} \
106
+ sh -c " /mattermost/bin/mattermost server"
107
+
108
+ echo " Checking node 1 is up and running"
109
+ timeout --foreground 90s bash -c " until docker run --rm --quiet --name ${COMPOSE_PROJECT_NAME} _curl_mm1 --net ${DOCKER_NETWORK} ${IMAGE_CURL} curl -fs http://mm-server1:8065/api/v4/system/ping; do echo Waiting for mm-server1; sleep 2; done; echo mm-server1 is up"
110
+
111
+ echo " Spawning mattermost server 2 ... "
112
+ docker run -d --quiet --name ${CONTAINER_SERVER} 2 \
113
+ --net ${DOCKER_NETWORK} \
114
+ --net-alias mm-server2 \
115
+ --user mattermost:mattermost \
116
+ --env-file=" ${WORKSPACE} /dotenv/app.private.env" \
117
+ -v ${WORKSPACE} /config2:/mattermost/config:rw \
118
+ -v ${WORKSPACE} /logs2:/mattermost/logs:rw \
119
+ -v ${WORKSPACE} /mmdata:/mattermost/data:rw \
120
+ ${IMAGE_SERVER} \
121
+ sh -c " /mattermost/bin/mattermost server"
122
+
123
+ echo " Checking node 2 is up and running"
124
+ timeout --foreground 90s bash -c " until docker run --rm --quiet --name ${COMPOSE_PROJECT_NAME} _curl_mm2 --net ${DOCKER_NETWORK} ${IMAGE_CURL} curl -fs http://mm-server2:8065/api/v4/system/ping; do echo Waiting for mm-server2; sleep 2; done; echo mm-server2 is up"
125
+
126
+ echo " Checking proxy is up and running"
127
+ timeout --foreground 90s bash -c " until docker run --rm --quiet --name ${COMPOSE_PROJECT_NAME} _curl_proxy --net ${DOCKER_NETWORK} ${IMAGE_CURL} curl -fs http://mm-server:8065/api/v4/system/ping; do echo Waiting for proxy; sleep 2; done; echo proxy is up"
0 commit comments