Skip to content

Commit

Permalink
Merge branch 'master' into snyk-fix-04b1848dc381d72a85193c9415b6bf60
Browse files Browse the repository at this point in the history
  • Loading branch information
mmattel authored Feb 18, 2020
2 parents f124450 + 4725f59 commit a38d7ee
Show file tree
Hide file tree
Showing 4 changed files with 151 additions and 796 deletions.
128 changes: 90 additions & 38 deletions .drone.starlark → .drone.star
Original file line number Diff line number Diff line change
Expand Up @@ -698,6 +698,8 @@ def acceptance():
'ldapNeeded': False,
'cephS3': False,
'scalityS3': False,
'ssl': False,
'xForwardedFor': False,
'extraSetup': [],
'extraServices': [],
'extraEnvironment': {},
Expand Down Expand Up @@ -826,6 +828,7 @@ def acceptance():
environment['S3_TYPE'] = 'ceph'
if (params['scalityS3'] != False):
environment['S3_TYPE'] = 'scality'
federationDbSuffix = '-federated'

result = {
'kind': 'pipeline',
Expand All @@ -838,32 +841,7 @@ def acceptance():
'steps':
installCore(server, db, params['useBundledApp']) +
installTestrunner(phpVersion, params['useBundledApp']) +
([
{
'name': 'install-federation',
'image': 'owncloudci/core',
'pull': 'always',
'settings': {
'version': server,
'core_path': '/var/www/owncloud/federated'
}
},
{
'name': 'configure-federation',
'image': 'owncloudci/php:%s' % phpVersion,
'pull': 'always',
'commands': [
'echo "export TEST_SERVER_FED_URL=http://federated" > /var/www/owncloud/saved-settings.sh',
'cd /var/www/owncloud/federated',
'php occ a:l',
'php occ a:e testing',
'php occ a:l',
'php occ config:system:set trusted_domains 1 --value=federated',
'php occ log:manage --level %s' % params['logLevel'],
'php occ config:list'
]
}
] + owncloudLog('federated') if params['federatedServerNeeded'] else []) +
(installFederated(server, phpVersion, params['logLevel'], db, federationDbSuffix) + owncloudLog('federated') if params['federatedServerNeeded'] else []) +
installApp(phpVersion) +
installExtraApps(phpVersion, params['extraApps']) +
setupServerAndApp(phpVersion, params['logLevel']) +
Expand Down Expand Up @@ -893,8 +871,11 @@ def acceptance():
cephService(params['cephS3']) +
scalityService(params['scalityS3']) +
params['extraServices'] +
owncloudService(server, phpVersion, 'server', '/var/www/owncloud/server', False) +
(owncloudService(server, phpVersion, 'federated', '/var/www/owncloud/federated', False) if params['federatedServerNeeded'] else []),
owncloudService(server, phpVersion, 'server', '/var/www/owncloud/server', params['ssl'], params['xForwardedFor']) +
((
owncloudService(server, phpVersion, 'federated', '/var/www/owncloud/federated', params['ssl'], params['xForwardedFor']) +
databaseServiceForFederation(db, federationDbSuffix)
) if params['federatedServerNeeded'] else [] ),
'depends_on': [],
'trigger': {}
}
Expand Down Expand Up @@ -984,7 +965,7 @@ def databaseService(db):
if dbName == 'oracle':
return [{
'name': dbName,
'image': 'deepdiver/docker-oracle-xe-11g:latest',
'image': 'owncloudci/oracle-xe:latest',
'pull': 'always',
'environment': {
'ORACLE_USER': getDbUsername(db),
Expand Down Expand Up @@ -1091,7 +1072,7 @@ def cephService(serviceParams):
'environment': serviceEnvironment
}]

def owncloudService(version, phpVersion, name = 'server', path = '/var/www/owncloud/server', ssl = True):
def owncloudService(version, phpVersion, name = 'server', path = '/var/www/owncloud/server', ssl = True, xForwardedFor = False):
if ssl:
environment = {
'APACHE_WEBROOT': path,
Expand All @@ -1110,12 +1091,16 @@ def owncloudService(version, phpVersion, name = 'server', path = '/var/www/owncl
'image': 'owncloudci/php:%s' % phpVersion,
'pull': 'always',
'environment': environment,
'command': [
'/usr/local/bin/apachectl',
'-e',
'debug',
'-D',
'FOREGROUND'
'commands': ([
'a2enmod remoteip',
'cd /etc/apache2',
'echo "RemoteIPHeader X-Forwarded-For" >> apache2.conf',
# This replaces the first occurrence of "%h with "%a in apache2.conf file telling Apache to log the client
# IP as recorded by mod_remoteip (%a) rather than hostname (%h). For more info check this out:
# https://www.digitalocean.com/community/questions/get-client-public-ip-on-apache-server-used-behind-load-balancer
'sed -i \'0,/"%h/s//"%a/\' apache2.conf',
] if xForwardedFor else []) + [
'/usr/local/bin/apachectl -e debug -D FOREGROUND',
]
}]

Expand Down Expand Up @@ -1314,9 +1299,11 @@ def fixPermissions(phpVersion, federatedServerNeeded):
'image': 'owncloudci/php:%s' % phpVersion,
'pull': 'always',
'commands': [
'chown -R www-data /var/www/owncloud/server'
'chown -R www-data /var/www/owncloud/server',
'wait-for-it -t 600 server:80'
] + ([
'chown -R www-data /var/www/owncloud/federated'
'chown -R www-data /var/www/owncloud/federated',
'wait-for-it -t 600 federated:80'
] if federatedServerNeeded else [])
}]

Expand All @@ -1335,3 +1322,68 @@ def dependsOn(earlierStages, nextStages):
for earlierStage in earlierStages:
for nextStage in nextStages:
nextStage['depends_on'].append(earlierStage['name'])

def installFederated(federatedServerVersion, phpVersion, logLevel, db, dbSuffix = '-federated'):
host = getDbName(db)
dbType = host

username = getDbUsername(db)
password = getDbPassword(db)
database = getDbDatabase(db) + dbSuffix

if host == 'mariadb':
dbType = 'mysql'
elif host == 'postgres':
dbType = 'pgsql'
elif host == 'oracle':
dbType = 'oci'
return [
{
'name': 'install-federated',
'image': 'owncloudci/core',
'pull': 'always',
'settings': {
'version': federatedServerVersion,
'core_path': '/var/www/owncloud/federated',
'db_type': 'mysql',
'db_name': database,
'db_host': host + dbSuffix,
'db_username': username,
'db_password': password
},
},
{
'name': 'configure-federation',
'image': 'owncloudci/php:%s' % phpVersion,
'pull': 'always',
'commands': [
'echo "export TEST_SERVER_FED_URL=http://federated" > /var/www/owncloud/saved-settings.sh',
'cd /var/www/owncloud/federated',
'php occ a:l',
'php occ a:e testing',
'php occ a:l',
'php occ config:system:set trusted_domains 1 --value=federated',
'php occ log:manage --level %s' % logLevel,
'php occ config:list'
]
}
]

def databaseServiceForFederation(db, suffix):
dbName = getDbName(db)

if dbName not in ['mariadb', 'mysql']:
print('Not implemented federated database for ', dbName)
return []

return [{
'name': dbName + suffix,
'image': db,
'pull': 'always',
'environment': {
'MYSQL_USER': getDbUsername(db),
'MYSQL_PASSWORD': getDbPassword(db),
'MYSQL_DATABASE': getDbDatabase(db) + suffix,
'MYSQL_ROOT_PASSWORD': getDbRootPassword()
}
}]
Loading

0 comments on commit a38d7ee

Please sign in to comment.