Speed up build (#9993)
* configure MySQL to use tmpfs * simplify use of COMPOSE_PROJECT_NAME, and set envs vs. overriding config.json, fix error output, --no-ansi * cmd/mattermost/commands/*_test.go: ignore MM_SQLSETTINGS_DATASOURCE from the env * clean up exit 1 semantics
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
1f197d7c55
Коммит
86fa3866c1
@@ -14,7 +14,7 @@ pipeline {
|
|||||||
options { buildDiscarder(logRotator(numToKeepStr: '3')) }
|
options { buildDiscarder(logRotator(numToKeepStr: '3')) }
|
||||||
|
|
||||||
environment {
|
environment {
|
||||||
DCNAME = "${rnd}"
|
COMPOSE_PROJECT_NAME="${rnd}-${env.BUILD_NUMBER}"
|
||||||
}
|
}
|
||||||
|
|
||||||
stages {
|
stages {
|
||||||
@@ -54,13 +54,13 @@ pipeline {
|
|||||||
ansiColor('xterm') {
|
ansiColor('xterm') {
|
||||||
sh """
|
sh """
|
||||||
#!/bin/bash -ex
|
#!/bin/bash -ex
|
||||||
git checkout $env.BRANCH_NAME || git checkout $env.CHANGE_BRANCH || git checkout $env.GIT_BRANCH || git checkout master || echo 1
|
git checkout $env.BRANCH_NAME || git checkout $env.CHANGE_BRANCH || git checkout $env.GIT_BRANCH || git checkout master
|
||||||
rm -rf ./dist
|
rm -rf ./dist
|
||||||
export WEBAPP_GIT_COMMIT=\$(git rev-parse HEAD)
|
export WEBAPP_GIT_COMMIT=\$(git rev-parse HEAD)
|
||||||
|
|
||||||
echo Webapp Commit: \${WEBAPP_GIT_COMMIT}
|
echo Webapp Commit: \${WEBAPP_GIT_COMMIT}
|
||||||
|
|
||||||
curl -f -o ./dist.tar.gz https://releases.mattermost.com/mattermost-webapp/commit/\${WEBAPP_GIT_COMMIT}/mattermost-webapp.tar.gz && mkdir ./dist && tar -xvf ./dist.tar.gz -C ./dist --strip-components=1 || make node_modules test build || exit 1
|
curl -f -o ./dist.tar.gz https://releases.mattermost.com/mattermost-webapp/commit/\${WEBAPP_GIT_COMMIT}/mattermost-webapp.tar.gz && mkdir ./dist && tar -xvf ./dist.tar.gz -C ./dist --strip-components=1 || make node_modules test build
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -79,9 +79,9 @@ pipeline {
|
|||||||
sh """
|
sh """
|
||||||
cd /go/src/github.com/mattermost/mattermost-server
|
cd /go/src/github.com/mattermost/mattermost-server
|
||||||
mv config/default.json config/config.json || echo ""
|
mv config/default.json config/config.json || echo ""
|
||||||
make check-style BUILD_NUMBER='${BRANCH_NAME}-${BUILD_NUMBER}' || exit 1
|
make check-style BUILD_NUMBER='${BRANCH_NAME}-${BUILD_NUMBER}'
|
||||||
make build BUILD_NUMBER='${BRANCH_NAME}-${BUILD_NUMBER}' || exit 1
|
make build BUILD_NUMBER='${BRANCH_NAME}-${BUILD_NUMBER}'
|
||||||
make package BUILD_NUMBER='${BRANCH_NAME}-${BUILD_NUMBER}' || exit 1
|
make package BUILD_NUMBER='${BRANCH_NAME}-${BUILD_NUMBER}'
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -101,41 +101,38 @@ pipeline {
|
|||||||
CI_INBUCKET_SMTP_PORT = "10025"
|
CI_INBUCKET_SMTP_PORT = "10025"
|
||||||
CI_LDAP_HOST = "openldap"
|
CI_LDAP_HOST = "openldap"
|
||||||
IS_CI = true
|
IS_CI = true
|
||||||
|
MM_SQLSETTINGS_DATASOURCE = "mmuser:mostest@tcp(mysql:3306)/mattermost_test?charset=utf8mb4,utf8"
|
||||||
|
MM_EMAILSETTINGS_SMTPSERVER = "inbucket"
|
||||||
|
MM_EMAILSETTINGS_SMTPPORT = "10025"
|
||||||
|
MM_ELASTICSEARCHSETTINGS_CONNECTIONURL = "http://elasticsearch:9200"
|
||||||
}
|
}
|
||||||
|
|
||||||
steps {
|
steps {
|
||||||
dir('src/github.com/mattermost/mattermost-server/build') {
|
dir('src/github.com/mattermost/mattermost-server/build') {
|
||||||
ansiColor('xterm') {
|
ansiColor('xterm') {
|
||||||
sh """
|
sh """
|
||||||
COMPOSE_PROJECT_NAME=${DCNAME}-${env.BUILD_NUMBER} docker-compose run --rm start_dependencies
|
docker-compose --no-ansi run --rm start_dependencies
|
||||||
COMPOSE_PROJECT_NAME=${DCNAME}-${env.BUILD_NUMBER} docker-compose up -d mysql postgres minio inbucket openldap elasticsearch redis
|
docker-compose --no-ansi ps
|
||||||
|
|
||||||
docker ps
|
docker-compose --no-ansi exec -T openldap bash -c 'echo -e "dn: ou=testusers,dc=mm,dc=test,dc=com\nobjectclass: organizationalunit" | ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest';
|
||||||
|
docker-compose --no-ansi exec -T openldap bash -c 'echo -e "dn: uid=test.one,ou=testusers,dc=mm,dc=test,dc=com\nobjectclass: iNetOrgPerson\nsn: User\ncn: Test1\nmail: success+testone@simulator.amazonses.com" | ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest';
|
||||||
docker exec -t openldap-${DCNAME}-${env.BUILD_NUMBER} bash -c 'echo -e "dn: ou=testusers,dc=mm,dc=test,dc=com\nobjectclass: organizationalunit" | ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest';
|
docker-compose --no-ansi exec -T openldap bash -c 'ldappasswd -s Password1 -D "cn=admin,dc=mm,dc=test,dc=com" -x "uid=test.one,ou=testusers,dc=mm,dc=test,dc=com" -w mostest';
|
||||||
docker exec -t openldap-${DCNAME}-${env.BUILD_NUMBER} bash -c 'echo -e "dn: uid=test.one,ou=testusers,dc=mm,dc=test,dc=com\nobjectclass: iNetOrgPerson\nsn: User\ncn: Test1\nmail: success+testone@simulator.amazonses.com" | ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest';
|
docker-compose --no-ansi exec -T openldap bash -c 'echo -e "dn: uid=test.two,ou=testusers,dc=mm,dc=test,dc=com\nobjectclass: iNetOrgPerson\nsn: User\ncn: Test2\nmail: success+testtwo@simulator.amazonses.com" | ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest';
|
||||||
docker exec -t openldap-${DCNAME}-${env.BUILD_NUMBER} bash -c 'ldappasswd -s Password1 -D "cn=admin,dc=mm,dc=test,dc=com" -x "uid=test.one,ou=testusers,dc=mm,dc=test,dc=com" -w mostest';
|
docker-compose --no-ansi exec -T openldap bash -c 'ldappasswd -s Password1 -D "cn=admin,dc=mm,dc=test,dc=com" -x "uid=test.two,ou=testusers,dc=mm,dc=test,dc=com" -w mostest';
|
||||||
docker exec -t openldap-${DCNAME}-${env.BUILD_NUMBER} bash -c 'echo -e "dn: uid=test.two,ou=testusers,dc=mm,dc=test,dc=com\nobjectclass: iNetOrgPerson\nsn: User\ncn: Test2\nmail: success+testtwo@simulator.amazonses.com" | ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest';
|
docker-compose --no-ansi exec -T openldap bash -c 'echo -e "dn: cn=tgroup,ou=testusers,dc=mm,dc=test,dc=com\nobjectclass: groupOfUniqueNames\nuniqueMember: uid=test.one,ou=testusers,dc=mm,dc=test,dc=com" | ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest';
|
||||||
docker exec -t openldap-${DCNAME}-${env.BUILD_NUMBER} bash -c 'ldappasswd -s Password1 -D "cn=admin,dc=mm,dc=test,dc=com" -x "uid=test.two,ou=testusers,dc=mm,dc=test,dc=com" -w mostest';
|
|
||||||
docker exec -t openldap-${DCNAME}-${env.BUILD_NUMBER} bash -c 'echo -e "dn: cn=tgroup,ou=testusers,dc=mm,dc=test,dc=com\nobjectclass: groupOfUniqueNames\nuniqueMember: uid=test.one,ou=testusers,dc=mm,dc=test,dc=com" | ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest';
|
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
withDockerContainer(args: "-u root --privileged --net ${DCNAME}-${BUILD_NUMBER}_mm-test -v ${WORKSPACE}/src:/go/src/", image: 'mattermost/mattermost-build-server:dec-7-2018') {
|
withDockerContainer(args: "-u root --privileged --net ${COMPOSE_PROJECT_NAME}_mm-test -v ${WORKSPACE}/src:/go/src/", image: 'mattermost/mattermost-build-server:dec-7-2018') {
|
||||||
ansiColor('xterm') {
|
ansiColor('xterm') {
|
||||||
sh """
|
sh """
|
||||||
cd /go/src/github.com/mattermost/mattermost-server
|
cd /go/src/github.com/mattermost/mattermost-server
|
||||||
|
|
||||||
sed -i'.bak' 's|mmuser:mostest@tcp(dockerhost:3306)/mattermost_test?charset=utf8mb4,utf8|mmuser:mostest@tcp(mysql:3306)/mattermost_test?charset=utf8mb4,utf8|g' config/config.json;
|
|
||||||
sed -i'.bak' 's|"SMTPServer": "dockerhost",|"SMTPServer": "inbucket",|g' config/config.json;
|
|
||||||
sed -i'.bak' 's|"SMTPPort": "2500",|"SMTPPort": "10025",|g' config/config.json;
|
|
||||||
sed -i'.bak' 's|"ConnectionUrl": "http://dockerhost:9200",|"ConnectionUrl": "http://elasticsearch:9200",|g' config/config.json;
|
|
||||||
mkdir -p client/plugins
|
mkdir -p client/plugins
|
||||||
|
|
||||||
cat config/config.json
|
cat config/config.json
|
||||||
|
|
||||||
make test-server BUILD_NUMBER='${BRANCH_NAME}-${BUILD_NUMBER}' TESTFLAGS= TESTFLAGSEE= || exit 1
|
make test-server BUILD_NUMBER='${BRANCH_NAME}-${BUILD_NUMBER}' TESTFLAGS= TESTFLAGSEE=
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -234,7 +231,7 @@ pipeline {
|
|||||||
dir('src/github.com/mattermost/mattermost-server/build') {
|
dir('src/github.com/mattermost/mattermost-server/build') {
|
||||||
ansiColor('xterm') {
|
ansiColor('xterm') {
|
||||||
sh """
|
sh """
|
||||||
COMPOSE_PROJECT_NAME=${DCNAME}-${env.BUILD_NUMBER} docker-compose down -v
|
docker-compose --no-ansi down -v
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ services:
|
|||||||
mysql:
|
mysql:
|
||||||
image: "mysql:5.7"
|
image: "mysql:5.7"
|
||||||
restart: always
|
restart: always
|
||||||
container_name: mysql-$DCNAME-$BUILD_NUMBER
|
|
||||||
networks:
|
networks:
|
||||||
- mm-test
|
- mm-test
|
||||||
environment:
|
environment:
|
||||||
@@ -12,20 +11,22 @@ services:
|
|||||||
MYSQL_PASSWORD: mostest
|
MYSQL_PASSWORD: mostest
|
||||||
MYSQL_USER: mmuser
|
MYSQL_USER: mmuser
|
||||||
MYSQL_DATABASE: mattermost_test
|
MYSQL_DATABASE: mattermost_test
|
||||||
|
tmpfs: /var/lib/mysql
|
||||||
|
volumes:
|
||||||
|
- "./docker/mysql.conf.d:/etc/mysql/conf.d"
|
||||||
postgres:
|
postgres:
|
||||||
image: "postgres:9.4"
|
image: "postgres:9.4"
|
||||||
restart: always
|
restart: always
|
||||||
container_name: postgres-$DCNAME-$BUILD_NUMBER
|
|
||||||
networks:
|
networks:
|
||||||
- mm-test
|
- mm-test
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_USER: mmuser
|
POSTGRES_USER: mmuser
|
||||||
POSTGRES_PASSWORD: mostest
|
POSTGRES_PASSWORD: mostest
|
||||||
POSTGRES_DB: mattermost_test
|
POSTGRES_DB: mattermost_test
|
||||||
|
tmpfs: /var/lib/postgresql/data
|
||||||
minio:
|
minio:
|
||||||
image: "minio/minio:RELEASE.2018-05-25T19-49-13Z"
|
image: "minio/minio:RELEASE.2018-05-25T19-49-13Z"
|
||||||
command: "server /data"
|
command: "server /data"
|
||||||
container_name: minio-$DCNAME-$BUILD_NUMBER
|
|
||||||
networks:
|
networks:
|
||||||
- mm-test
|
- mm-test
|
||||||
environment:
|
environment:
|
||||||
@@ -34,13 +35,11 @@ services:
|
|||||||
inbucket:
|
inbucket:
|
||||||
image: "jhillyerd/inbucket:release-1.2.0"
|
image: "jhillyerd/inbucket:release-1.2.0"
|
||||||
restart: always
|
restart: always
|
||||||
container_name: inbucket-$DCNAME-$BUILD_NUMBER
|
|
||||||
networks:
|
networks:
|
||||||
- mm-test
|
- mm-test
|
||||||
openldap:
|
openldap:
|
||||||
image: "osixia/openldap:1.1.6"
|
image: "osixia/openldap:1.1.6"
|
||||||
restart: always
|
restart: always
|
||||||
container_name: openldap-$DCNAME-$BUILD_NUMBER
|
|
||||||
networks:
|
networks:
|
||||||
- mm-test
|
- mm-test
|
||||||
environment:
|
environment:
|
||||||
@@ -50,7 +49,6 @@ services:
|
|||||||
LDAP_ADMIN_PASSWORD: "mostest"
|
LDAP_ADMIN_PASSWORD: "mostest"
|
||||||
elasticsearch:
|
elasticsearch:
|
||||||
image: "mattermost/mattermost-elasticsearch-docker:6.5.1"
|
image: "mattermost/mattermost-elasticsearch-docker:6.5.1"
|
||||||
container_name: elasticsearch-$DCNAME-$BUILD_NUMBER
|
|
||||||
networks:
|
networks:
|
||||||
- mm-test
|
- mm-test
|
||||||
environment:
|
environment:
|
||||||
@@ -61,7 +59,6 @@ services:
|
|||||||
image: redis
|
image: redis
|
||||||
networks:
|
networks:
|
||||||
- mm-test
|
- mm-test
|
||||||
container_name: redis-$DCNAME-$BUILD_NUMBER
|
|
||||||
|
|
||||||
start_dependencies:
|
start_dependencies:
|
||||||
image: mattermost/mattermost-wait-for-dep:latest
|
image: mattermost/mattermost-wait-for-dep:latest
|
||||||
|
|||||||
19
build/docker/mysql.conf.d/custom.cnf
Обычный файл
19
build/docker/mysql.conf.d/custom.cnf
Обычный файл
@@ -0,0 +1,19 @@
|
|||||||
|
[mysqld]
|
||||||
|
bind-address = 0.0.0.0
|
||||||
|
|
||||||
|
log-output = NONE
|
||||||
|
slow-query-log = 0
|
||||||
|
innodb_flush_log_at_trx_commit = 2
|
||||||
|
innodb_flush_method = nosync
|
||||||
|
innodb_lock_wait_timeout = 50
|
||||||
|
innodb_log_buffer_size = 3M
|
||||||
|
innodb_buffer_pool_size = 180M
|
||||||
|
|
||||||
|
max_connect_errors = 1000000
|
||||||
|
max_connections = 900
|
||||||
|
|
||||||
|
character-set-server = utf8
|
||||||
|
sql_mode = ""
|
||||||
|
innodb = FORCE
|
||||||
|
default-storage-engine = InnoDB
|
||||||
|
max_allowed_packet = 256M
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
export DCNAME=localdev
|
export COMPOSE_PROJECT_NAME=localdev
|
||||||
export BUILD_NUMBER=null
|
|
||||||
local_cmdname=${0##*/}
|
local_cmdname=${0##*/}
|
||||||
|
|
||||||
usage()
|
usage()
|
||||||
@@ -15,50 +14,41 @@ USAGE
|
|||||||
|
|
||||||
up()
|
up()
|
||||||
{
|
{
|
||||||
COMPOSE_PROJECT_NAME=$DCNAME-$BUILD_NUMBER docker-compose run --rm start_dependencies
|
docker-compose run --rm start_dependencies
|
||||||
COMPOSE_PROJECT_NAME=$DCNAME-$BUILD_NUMBER docker-compose up -d mysql postgres minio inbucket openldap elasticsearch redis
|
|
||||||
|
|
||||||
docker exec -t openldap-$DCNAME-$BUILD_NUMBER bash -c 'echo -e "dn: ou=testusers,dc=mm,dc=test,dc=com\nobjectclass: organizationalunit" | ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest'
|
docker-compose exec openldap bash -c 'echo -e "dn: ou=testusers,dc=mm,dc=test,dc=com\nobjectclass: organizationalunit" | ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest'
|
||||||
docker exec -t openldap-$DCNAME-$BUILD_NUMBER bash -c 'echo -e "dn: uid=test.one,ou=testusers,dc=mm,dc=test,dc=com\nobjectclass: iNetOrgPerson\nsn: User\ncn: Test1\nmail: success+testone@simulator.amazonses.com" | ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest'
|
docker-compose exec openldap bash -c 'echo -e "dn: uid=test.one,ou=testusers,dc=mm,dc=test,dc=com\nobjectclass: iNetOrgPerson\nsn: User\ncn: Test1\nmail: success+testone@simulator.amazonses.com" | ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest'
|
||||||
docker exec -t openldap-$DCNAME-$BUILD_NUMBER bash -c 'ldappasswd -s Password1 -D "cn=admin,dc=mm,dc=test,dc=com" -x "uid=test.one,ou=testusers,dc=mm,dc=test,dc=com" -w mostest'
|
docker-compose exec openldap bash -c 'ldappasswd -s Password1 -D "cn=admin,dc=mm,dc=test,dc=com" -x "uid=test.one,ou=testusers,dc=mm,dc=test,dc=com" -w mostest'
|
||||||
docker exec -t openldap-$DCNAME-$BUILD_NUMBER bash -c 'echo -e "dn: uid=test.two,ou=testusers,dc=mm,dc=test,dc=com\nobjectclass: iNetOrgPerson\nsn: User\ncn: Test2\nmail: success+testtwo@simulator.amazonses.com" | ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest'
|
docker-compose exec openldap bash -c 'echo -e "dn: uid=test.two,ou=testusers,dc=mm,dc=test,dc=com\nobjectclass: iNetOrgPerson\nsn: User\ncn: Test2\nmail: success+testtwo@simulator.amazonses.com" | ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest'
|
||||||
docker exec -t openldap-$DCNAME-$BUILD_NUMBER bash -c 'ldappasswd -s Password1 -D "cn=admin,dc=mm,dc=test,dc=com" -x "uid=test.two,ou=testusers,dc=mm,dc=test,dc=com" -w mostest'
|
docker-compose exec openldap bash -c 'ldappasswd -s Password1 -D "cn=admin,dc=mm,dc=test,dc=com" -x "uid=test.two,ou=testusers,dc=mm,dc=test,dc=com" -w mostest'
|
||||||
docker exec -t openldap-$DCNAME-$BUILD_NUMBER bash -c 'echo -e "dn: cn=tgroup,ou=testusers,dc=mm,dc=test,dc=com\nobjectclass: groupOfUniqueNames\nuniqueMember: uid=test.one,ou=testusers,dc=mm,dc=test,dc=com" | ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest'
|
docker-compose exec openldap bash -c 'echo -e "dn: cn=tgroup,ou=testusers,dc=mm,dc=test,dc=com\nobjectclass: groupOfUniqueNames\nuniqueMember: uid=test.one,ou=testusers,dc=mm,dc=test,dc=com" | ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest'
|
||||||
|
|
||||||
echo "Changing the config.json"
|
docker run -it -u root \
|
||||||
sed -i'.bak' 's|mmuser:mostest@tcp(dockerhost:3306)/mattermost_test?charset=utf8mb4,utf8|mmuser:mostest@tcp(mysql:3306)/mattermost_test?charset=utf8mb4,utf8|g' $GOPATH/src/github.com/mattermost/mattermost-server/config/config.json
|
--privileged \
|
||||||
sed -i'.bak' 's|"SMTPServer": "dockerhost",|"SMTPServer": "inbucket",|g' $GOPATH/src/github.com/mattermost/mattermost-server/config/config.json
|
-v $GOPATH:/go \
|
||||||
sed -i'.bak' 's|"SMTPPort": "2500",|"SMTPPort": "10025",|g' $GOPATH/src/github.com/mattermost/mattermost-server/config/config.json
|
-w /go/src/github.com/mattermost/mattermost-server/ \
|
||||||
sed -i'.bak' 's|"ConnectionUrl": "http://dockerhost:9200",|"ConnectionUrl": "http://elasticsearch:9200",|g' $GOPATH/src/github.com/mattermost/mattermost-server/config/config.json
|
--net ${COMPOSE_PROJECT_NAME}_mm-test \
|
||||||
|
-e GOPATH="/go" \
|
||||||
docker run -it -u root \
|
-e TEST_DATABASE_MYSQL_DSN="mmuser:mostest@tcp(mysql:3306)/mattermost_test?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s" \
|
||||||
--privileged \
|
-e TEST_DATABASE_POSTGRESQL_DSN="postgres://mmuser:mostest@postgres:5432/mattermost_test?sslmode=disable&connect_timeout=10" \
|
||||||
-v $GOPATH:/go \
|
-e TEST_DATABASE_MYSQL_ROOT_PASSWD="mostest" \
|
||||||
-w /go/src/github.com/mattermost/mattermost-server/ \
|
-e CI_INBUCKET_HOST="inbucket" \
|
||||||
--net $DCNAME-$BUILD_NUMBER\_mm-test \
|
-e CI_MINIO_HOST="minio" \
|
||||||
-e GOPATH="/go" \
|
-e CI_INBUCKET_PORT="10080" \
|
||||||
-e TEST_DATABASE_MYSQL_DSN="mmuser:mostest@tcp(mysql:3306)/mattermost_test?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s" \
|
-e CI_MINIO_PORT="9000" \
|
||||||
-e TEST_DATABASE_POSTGRESQL_DSN="postgres://mmuser:mostest@postgres:5432/mattermost_test?sslmode=disable&connect_timeout=10" \
|
-e CI_INBUCKET_SMTP_PORT="10025" \
|
||||||
-e TEST_DATABASE_MYSQL_ROOT_PASSWD="mostest" \
|
-e CI_LDAP_HOST="openldap" \
|
||||||
-e CI_INBUCKET_HOST="inbucket" \
|
-e IS_CI=true \
|
||||||
-e CI_MINIO_HOST="minio" \
|
-e MM_SQLSETTINGS_DATASOURCE="mmuser:mostest@tcp(mysql:3306)/mattermost_test?charset=utf8mb4,utf8" \
|
||||||
-e CI_INBUCKET_PORT="10080" \
|
-e MM_EMAILSETTINGS_SMTPSERVER="inbucket" \
|
||||||
-e CI_MINIO_PORT="9000" \
|
-e MM_EMAILSETTINGS_SMTPPORT="10025" \
|
||||||
-e CI_INBUCKET_SMTP_PORT="10025" \
|
-e MM_ELASTICSEARCHSETTINGS_CONNECTIONURL="http://elasticsearch:9200" \
|
||||||
-e CI_LDAP_HOST="openldap" \
|
mattermost/mattermost-build-server:dec-7-2018 /bin/bash
|
||||||
-e IS_CI=true \
|
|
||||||
mattermost/mattermost-build-server:dec-7-2018 /bin/bash
|
|
||||||
}
|
}
|
||||||
|
|
||||||
down()
|
down()
|
||||||
{
|
{
|
||||||
COMPOSE_PROJECT_NAME=$DCNAME-$BUILD_NUMBER docker-compose down
|
docker-compose down
|
||||||
|
|
||||||
echo "Reverting the changes in the config.json"
|
|
||||||
sed -i'.bak' 's|mmuser:mostest@tcp(mysql:3306)/mattermost_test?charset=utf8mb4,utf8|mmuser:mostest@tcp(dockerhost:3306)/mattermost_test?charset=utf8mb4,utf8|g' $GOPATH/src/github.com/mattermost/mattermost-server/config/config.json
|
|
||||||
sed -i'.bak' 's|"SMTPServer": "inbucket",|"SMTPServer": "dockerhost",|g' $GOPATH/src/github.com/mattermost/mattermost-server/config/config.json
|
|
||||||
sed -i'.bak' 's|"SMTPPort": "10025",|"SMTPPort": "2500",|g' $GOPATH/src/github.com/mattermost/mattermost-server/config/config.json
|
|
||||||
sed -i'.bak' 's|"ConnectionUrl": "http://elasticsearch:9200",|"ConnectionUrl": "http://dockerhost:9200",|g' $GOPATH/src/github.com/mattermost/mattermost-server/config/config.json
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# process arguments
|
# process arguments
|
||||||
@@ -70,16 +60,19 @@ do
|
|||||||
up
|
up
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
|
|
||||||
down)
|
down)
|
||||||
echo "Stopping Containers"
|
echo "Stopping Containers"
|
||||||
down
|
down
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
|
|
||||||
--help)
|
--help)
|
||||||
usage
|
usage
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
echoerr "Unknown argument: $1"
|
echo "Unknown argument: $1" >&2
|
||||||
usage
|
usage
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
@@ -132,28 +132,39 @@ func (h *testHelper) execArgs(t *testing.T, args []string) []string {
|
|||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
// CheckCommand invokes the test binary, returning the output modified for assertion testing.
|
func (h *testHelper) cmd(t *testing.T, args []string) *exec.Cmd {
|
||||||
func (h *testHelper) CheckCommand(t *testing.T, args ...string) string {
|
|
||||||
path, err := os.Executable()
|
path, err := os.Executable()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
output, err := exec.Command(path, h.execArgs(t, args)...).CombinedOutput()
|
cmd := exec.Command(path, h.execArgs(t, args)...)
|
||||||
|
|
||||||
|
cmd.Env = []string{}
|
||||||
|
for _, env := range os.Environ() {
|
||||||
|
// Ignore MM_SQLSETTINGS_DATASOURCE from the environment, since we override.
|
||||||
|
if strings.HasPrefix(env, "MM_SQLSETTINGS_DATASOURCE=") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd.Env = append(cmd.Env, env)
|
||||||
|
}
|
||||||
|
|
||||||
|
return cmd
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckCommand invokes the test binary, returning the output modified for assertion testing.
|
||||||
|
func (h *testHelper) CheckCommand(t *testing.T, args ...string) string {
|
||||||
|
output, err := h.cmd(t, args).CombinedOutput()
|
||||||
require.NoError(t, err, string(output))
|
require.NoError(t, err, string(output))
|
||||||
return strings.TrimSpace(strings.TrimSuffix(strings.TrimSpace(string(output)), "PASS"))
|
return strings.TrimSpace(strings.TrimSuffix(strings.TrimSpace(string(output)), "PASS"))
|
||||||
}
|
}
|
||||||
|
|
||||||
// RunCommand invokes the test binary, returning only any error.
|
// RunCommand invokes the test binary, returning only any error.
|
||||||
func (h *testHelper) RunCommand(t *testing.T, args ...string) error {
|
func (h *testHelper) RunCommand(t *testing.T, args ...string) error {
|
||||||
path, err := os.Executable()
|
return h.cmd(t, args).Run()
|
||||||
require.NoError(t, err)
|
|
||||||
return exec.Command(path, h.execArgs(t, args)...).Run()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// RunCommandWithOutput is a variant of RunCommand that returns the unmodified output and any error.
|
// RunCommandWithOutput is a variant of RunCommand that returns the unmodified output and any error.
|
||||||
func (h *testHelper) RunCommandWithOutput(t *testing.T, args ...string) (string, error) {
|
func (h *testHelper) RunCommandWithOutput(t *testing.T, args ...string) (string, error) {
|
||||||
path, err := os.Executable()
|
cmd := h.cmd(t, args)
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
cmd := exec.Command(path, h.execArgs(t, args)...)
|
|
||||||
|
|
||||||
var buf bytes.Buffer
|
var buf bytes.Buffer
|
||||||
reader, writer := io.Pipe()
|
reader, writer := io.Pipe()
|
||||||
@@ -166,7 +177,7 @@ func (h *testHelper) RunCommandWithOutput(t *testing.T, args ...string) (string,
|
|||||||
close(done)
|
close(done)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
err = cmd.Run()
|
err := cmd.Run()
|
||||||
writer.Close()
|
writer.Close()
|
||||||
<-done
|
<-done
|
||||||
|
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user