* Configurable dev environment

* Add a bit of documentation

* fixing gofmt

* A bit more doc

* Using  variable

* Adding license header

* Moving LDAP_DATA variable to the default-config.mk file

* Adding another docker-compose for the makefile to not brake anybody workflow

* Moving dejavu to the config

* Fixing docker-compose.makefile.yaml for dejavu

* Adding keycloak support to the dev environment

* Address PR review comments

* Removing minio from default docker images

* Changing the default version of mysql to the oldest supported (5.6)

* Change the restart option to no for the dev environment

* Fixing restart option

* Reverting unneded changes

* Restoring 5.7 to check if test passes

* Going back to 5.6 mysql image

* Fixing tests on mysql 5.6

* Skipping flaky test

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
Jesús Espino
2020-07-13 22:29:39 +02:00
коммит произвёл GitHub
родитель 6ad5ef2b43
Коммит e980dd7bd3
13 изменённых файлов: 2246 добавлений и 17 удалений

60
build/docker-compose-generator/main.go Обычный файл
Просмотреть файл

@@ -0,0 +1,60 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
package main
import (
"fmt"
"os"
"strings"
"gopkg.in/yaml.v2"
)
type DockerCompose struct {
Version string `yaml:"version"`
Services map[string]*Container `yaml:"services"`
}
type Container struct {
Command string `yaml:"command,omitempty"`
Image string `yaml:"image,omitempty"`
Network []string `yaml:"networks,omitempty"`
DependsOn []string `yaml:"depends_on,omitempty"`
}
func main() {
validServices := map[string]int{
"mysql": 3306,
"postgres": 5432,
"minio": 9000,
"inbucket": 10080,
"openldap": 389,
"elasticsearch": 9200,
"dejavu": 1358,
"keycloak": 8080,
}
command := []string{}
for _, arg := range os.Args[1:] {
port, ok := validServices[arg]
if !ok {
panic(fmt.Sprintf("Unknown service %s", arg))
}
command = append(command, fmt.Sprintf("%s:%d", arg, port))
}
var dockerCompose DockerCompose
dockerCompose.Version = "2.4"
dockerCompose.Services = map[string]*Container{}
dockerCompose.Services["start_dependencies"] = &Container{
Image: "mattermost/mattermost-wait-for-dep:latest",
Network: []string{"mm-test"},
DependsOn: os.Args[1:],
Command: strings.Join(command, " "),
}
resultData, err := yaml.Marshal(dockerCompose)
if err != nil {
panic(fmt.Sprintf("Unable to serialize the docker-compose file: %s.", err.Error()))
}
fmt.Println(string(resultData))
}

Просмотреть файл

@@ -1,7 +1,7 @@
version: '2.4'
services:
mysql:
image: "mysql:5.7"
image: "mysql:5.6"
restart: always
networks:
- mm-test
@@ -60,3 +60,19 @@ services:
http.cors.allow-credentials: "true"
transport.host: "127.0.0.1"
ES_JAVA_OPTS: "-Xms512m -Xmx512m"
dejavu:
image: "appbaseio/dejavu:3.4.2"
networks:
- mm-test
keycloak:
image: "jboss/keycloak:10.0.2"
restart: always
environment:
KEYCLOAK_USER: mmuser
KEYCLOAK_PASSWORD: mostest
DB_VENDOR: h2
KEYCLOAK_IMPORT: /setup/realm.json
networks:
- mm-test
volumes:
- "./docker/keycloak:/setup"

Просмотреть файл

@@ -1,6 +0,0 @@
version: '2.4'
services:
dejavu:
image: "appbaseio/dejavu:3.4.2"
networks:
- mm-test

Просмотреть файл

@@ -28,6 +28,14 @@ services:
extends:
file: docker-compose.common.yml
service: elasticsearch
dejavu:
extends:
file: docker-compose.common.yml
service: dejavu
keycloak:
extends:
file: docker-compose.common.yml
service: keycloak
start_dependencies:
image: mattermost/mattermost-wait-for-dep:latest

58
build/docker/keycloak/README.md Обычный файл
Просмотреть файл

@@ -0,0 +1,58 @@
To use this keycloak image, we suggest you to use this configuration settings:
- Enable Login With SAML 2.0: `true`
- Enable Synchronizing SAML Accounts With AD/LDAP: `true`
- Override SAML bind data with AD/LDAP information: `false`
- Identity Provider Metadata URL: empty string
- SAML SSO URL: `http://localhost:8484/auth/realms/mattermost/protocol/saml`
- Identity Provider Issuer URL: h`ttp://localhost:8065/login/sso/SAML`
- Identity Provider Public Certificate: The file `keycloak_cert.pem` in this same directory
- Verify Signature: `true`
- Service Provider Login URL: `http://localhost:8065/login/sso/saml`
- Enable Encryption: `false`
- Sign Request: `false`
- Email Attribute: `email`
- Username Attribute: `username`
- Id Attribute: `id`
- First Name Attribute: `firstName`
- Last Name Attribute: `lastName`
or overwrite your SamleSettings section with this settings in your config.json file (if you are not using
database configuration) and restart the server:
```json
"SamlSettings": {
"Enable": true,
"EnableSyncWithLdap": true,
"EnableSyncWithLdapIncludeAuth": false,
"Verify": true,
"Encrypt": false,
"SignRequest": false,
"IdpUrl": "http://localhost:8484/auth/realms/mattermost/protocol/saml",
"IdpDescriptorUrl": "http://localhost:8065/login/sso/saml",
"IdpMetadataUrl": "",
"AssertionConsumerServiceURL": "http://localhost:8065/login/sso/saml",
"SignatureAlgorithm": "RSAwithSHA1",
"CanonicalAlgorithm": "Canonical1.0",
"ScopingIDPProviderId": "",
"ScopingIDPName": "",
"IdpCertificateFile": "saml-idp.crt",
"PublicCertificateFile": "",
"PrivateKeyFile": "",
"IdAttribute": "id",
"GuestAttribute": "",
"EnableAdminAttribute": false,
"AdminAttribute": "",
"FirstNameAttribute": "firstName",
"LastNameAttribute": "lastName",
"EmailAttribute": "email",
"UsernameAttribute": "username",
"NicknameAttribute": "",
"LocaleAttribute": "",
"PositionAttribute": "",
"LoginButtonText": "SAML",
"LoginButtonColor": "#34a28b",
"LoginButtonBorderColor": "#2389D7",
"LoginButtonTextColor": "#ffffff"
},
```

3
build/docker/keycloak/keycloak_cert.pem Обычный файл
Просмотреть файл

@@ -0,0 +1,3 @@
-----BEGIN CERTIFICATE-----
MIICmzCCAYMCBgFlZqKaDTANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZtYXN0ZXIwHhcNMTgwODIzMTE1MjM2WhcNMjgwODIzMTE1NDE2WjARMQ8wDQYDVQQDDAZtYXN0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDWfMf7KfTiwF1cyBLDJXegQFgi9HqwKZaTA4GFhSBTcwQyNrv8hkv8q7h8Z6ZoVavhMqKnbcXHln8s3CEQ0/z1UrLL3dEfTH0UMkkAEjPxei0iw0CTakawjkxmbbTXiglnFWv63nrV+PE5srXmm8yymfL4gJMtL7SlfPpJ+YHUNdwhlovxUUmGvBk4M82T1Ht2Hy3DPYF21a2JN2PF7hKRa/vhcAWSNaRnSrj1vGJml7YsNdmh/MIdGaxT6Rdx7zkO+4VcooT4CuQ12aLyV5eKOD/558BANth2eWIsXWhh/VFB1Zq1+dYyKLyjvo5fs/itdw31M66s/H/WkRIrTn/TAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAJRpSNuBBmIELqIf7jF5I01mGiPMEkiqxENK1JH6iy8VOVljdM9tC1I1Dv6skx/0wCSX8cT32Dza0zJZN6Rvzt23DTh4yUWBosIOfmmL2uE7aeVVMm+jVzmynUVBTKfye3ki/ivBGJB8vsM1JuN/N4KE8WoH7iKMovETUb3cM44NfmMyhYyMWVrv02j3Pl6D4GadafawBPDQZGttotPo9kzYPpsQP6qYqtoZgSnX1BqOacPU+vKr8OIZM579hDkpDw0PvnCFvQeVlPseRTRv9ZwvbAksw6DwstJWp4eNd9nol8Apog+k0uzj+CGYXfWNWbz3LZ4/9BXhbwGxuYo4jUk=
-----END CERTIFICATE-----

1966
build/docker/keycloak/realm.json Обычный файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу