Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP]try to run nextcloud in https #429

Draft
wants to merge 13 commits into
base: master
Choose a base branch
from
528 changes: 306 additions & 222 deletions .github/workflows/ci.yml

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ vendor/
.php-cs-fixer.cache
tests/pact/
docker-compose.override.yml
.env

# VSCode
.vscode
Expand Down
12 changes: 12 additions & 0 deletions ci/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
COMPOSE_PROJECT_NAME=master
DOMAIN_SUFFIX=.local
REPO_PATH_SERVER=/home/runner/work/integration_openproject/integration_openproject/server
STABLE_ROOT_PATH=/home/runner/work/integration_openproject/integration_openproject/server
NEXTCLOUD_AUTOINSTALL_APPS="viewer"
DOCKER_SUBNET=192.168.21.0/24
PORTBASE=821
XDEBUG_MODE=develop
# SQL variant to use, possible values: sqlite, mysql, pgsql
SQL=mysql
DB_SERVICE=database-mysql
# other values: "database-postgres"
Empty file added ci/data/ssl/.gitkeep
Empty file.
127 changes: 127 additions & 0 deletions ci/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
version: '3'

services:

# Proxy for ssl termination and easier hostname access
# SSL certificates with the virtual host name need to be added to ./data/ssl
proxy:
image: ghcr.io/juliushaertl/nextcloud-dev-nginx:latest
ports:
- "${PROXY_PORT_HTTP:-80}:80"
- "${PROXY_PORT_HTTPS:-443}:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- /home/runner/work/integration_openproject/integration_openproject/server/apps/integration_openproject/ci/data/ssl:/etc/nginx/certs
environment:
DHPARAM_BITS: 2048
DHPARAM_GENERATION: "false"
HTTPS_METHOD: "noredirect"
HSTS: "off"
cap_add:
- SYS_ADMIN
networks:
default:
aliases:
- nextcloud.local

nextcloud:
image: ghcr.io/juliushaertl/nextcloud-dev-php${PHP_VERSION:-81}:latest
environment:
SQL: ${SQL:-mysql}
NEXTCLOUD_AUTOINSTALL: "YES"
NEXTCLOUD_AUTOINSTALL_APPS:
WITH_REDIS: "YES"
VIRTUAL_HOST: "nextcloud.local"
ADDITIONAL_APPS_PATH:
NEXTCLOUD_TRUSTED_DOMAINS:
PRIMARY: ${PRIMARY}
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
volumes:
- '${STABLE_ROOT_PATH}:/var/www/html'
- '${STABLE_ROOT_PATH}/apps-extra:/var/www/html/apps-extra'
- /var/www/html/data
- /var/www/html/config
- /var/www/html/apps-writable
depends_on:
- ${DB_SERVICE:-database-mysql}
- redis
- proxy
extra_hosts:
- host.docker.internal:host-gateway
healthcheck:
test: curl -f http://nextcloud.local/status.php || exit 1
interval: 30s
timeout: 30s
retries: 5

database-mysql:
image: mariadb:10.6
environment:
MYSQL_ROOT_PASSWORD: 'nextcloud'
MYSQL_PASSWORD: 'nextcloud'
MYSQL_USER: 'nextcloud'
MYSQL_DATABASE: 'nextcloud'
ports:
- "${PORTBASE:-800}2:3306"
volumes:
- mysql:/var/lib/mysql

database-postgres:
image: postgres:latest
environment:
POSTGRES_DB: nextcloud
POSTGRES_PASSWORD: postgres
ports:
- 5432:5432
expose:
- 5432
volumes:
- postgres:/var/lib/postgresql

redis:
image: redis:7

openproject:
image: openproject/community:13
environment:
OPENPROJECT_SECRET_KEY_BASE: "secret"
OPENPROJECT_HOST__NAME: "host.docker.internal:3000"
OPENPROJECT_DEV_EXTRA_HOSTS: "host.docker.internal"
OPENPROJECT_HTTPS: false
OPENPROJECT_PASSWORD__MIN__LENGTH: 0
OPENPROJECT_ONBOARDING__ENABLED: false
OPENPROJECT_AUTHENTICATION_GLOBAL__BASIC__AUTH_USER: "apiadmin"
OPENPROJECT_AUTHENTICATION_GLOBAL__BASIC__AUTH_PASSWORD: "apiadmin"
CI: true
ports:
- "3000:80"
extra_hosts:
- host.docker.internal:host-gateway
volumes:
- /home/runner/work/integration_openproject/integration_openproject/server/apps/integration_openproject/ci/data/ssl:/usr/local/share/ca-certificates
healthcheck:
test: curl -f http://host.docker.internal:3000/status.php || exit 1
interval: 30s
timeout: 30s
retries: 5
# command: ["sh", "-c", "sudo update-ca-certificates && exec ./docker/prod/supervisord"]

# start_dependencies:
# image: dadarek/wait-for-dependencies
# depends_on:
# - proxy
# - openproject
# command: proxy:443 proxy:80 openproject:80

volumes:
data:
config:
mysql:
postgres:

networks:
default:
ipam:
driver: default
config:
- subnet: ${DOCKER_SUBNET:-192.168.21.0/24}
44 changes: 44 additions & 0 deletions cucumber.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
const { Before, BeforeAll, AfterAll, After, setDefaultTimeout } = require('@cucumber/cucumber')
const { chromium } = require('playwright')
const { config } = require('./tests/e2e/config')
const {apiHelper} = require('./tests/e2e/helpers/apiHelper')
const { OpenprojectAdminPage } = require('./tests/e2e/pageObjects/OpenprojectAdminPage')

setDefaultTimeout(120000)

BeforeAll(async function() {
// await apiHelper.createAdmin()
global.browserNC = await chromium.launch({
headless: false,
})
global.browserOP = await chromium.launch({
headless: false,
})
})

AfterAll(async function() {
await global.browserNC.close()
await global.browserOP.close()
})

Before(async function() {
global.contextNC = await global.browserNC.newContext()
await contextNC.grantPermissions(['clipboard-read', 'clipboard-write'])
await contextNC.tracing.start({ screenshots: true, snapshots: true })
global.pageNC = await global.contextNC.newPage()
global.contextOP = await global.browserOP.newContext()
await contextOP.grantPermissions(['clipboard-read', 'clipboard-write'])
await contextOP.tracing.start({ screenshots: true, snapshots: true })
global.pageOP = await global.contextOP.newPage()
})

After(async function() {
await apiHelper.resetNextcloudOauthSettings()
await apiHelper.deleteStorage()
await global.pageNC.close()
await contextNC.tracing.stop({ path: 'tests/e2e/report/traceNC.zip' })
await global.contextNC.close()
await global.pageOP.close()
await contextOP.tracing.stop({ path: 'tests/e2e/report/traceOP.zip' })
await global.contextOP.close()
})
2 changes: 2 additions & 0 deletions lib/Controller/ConfigController.php
Original file line number Diff line number Diff line change
Expand Up @@ -354,6 +354,8 @@ private function setIntegrationConfig(array $values): array {
/**
* set admin config values
*
* @NoCSRFRequired
*
* @param array<string, string|null|bool> $values
*
* @return DataResponse
Expand Down
Loading