0
0
Fork 0
mirror of https://github.com/nextcloud/docker.git synced 2025-03-15 19:05:09 +01:00

Removed files from root to make it less noisy & Added all energy related files to energy-tests

This commit is contained in:
Arne Tarara 2023-07-17 13:28:28 +02:00
parent 77ff0c34bf
commit 3281e3e344
No known key found for this signature in database
GPG key ID: 2540198A4079785B
33 changed files with 1267 additions and 26 deletions

73
energy-tests/README.md Normal file
View file

@ -0,0 +1,73 @@
# Benchmarking Nextcloud
What is Nextcloud? A safe home for all your data. Access & share your files, calendars, contacts, mail & more from any device, on your terms.
Most of the Nextcloud is based of the code supplied in <https://github.com/nextcloud/docker> please refer to this documentation for everything Nextcloud dependent.
We evaluate the two browsers Chromium and Firefox. Also the three databases MariaDB, Postgres and SQLite.
There are two main ways to deploy Nextcloud with docker. One is via apache and one is using FPM.
## Scenarios
Currently there are three different usage scenarios of Nextcloud, orchestrated with different databases and browsers.
All scripts will start of with creating an admin account and installing the recommended apps,
then each case diverges from that point.
The cases are:
- Event:
+ Login as admin and create a calendar event and validate that it is visible.
- Docs:
+ Login as admin and create a second user.
+ Login as admin and create a text document and then share it with second user
+ Login as both users, open the text document and edit it, making sure the other user sees the text entered
- Talk:
+ Login as admin and create a group chat, allowing guests to join via link
+ Open the group conversation link in 5 browsers as guests
+ Each guest sends a 20KB random text message and validates the other members have received it
These scripts are implemented in Playwright Python
## Playwright files
- `nextcloud_install.py`: Installs Nextcloud and creates a admin user. Also installs all apps that are
available.
- `nextcloud_create_event.py`: This script logs into Nextcloud and then creates an event and checks if it then subsequently shows up in the calender view.
- `nextcloud_talk.py`: Login, create group conversation that is open to guests, then open the chat as 5 guests and send messages, validating each message is received by the other chat members.
- `nextcloud_create_user.py`: Logs into Nextcloud as an admin and creates a second user
- `nextcloud_create_doc_and_share.py`: Login as admin and create a text document, sharing it with the second user
- `nextcloud_docs_collaborate.py`: Login as both admin and 2nd user, open the doc and edit it together, validating the edits from the other user.
## Infrastructure
### apache
The compose file is copy pasted from <https://github.com/nextcloud/docker#base-version---apache>
We set a bogus password for `*_ROOT_PASSWORD` and `*_PASSWORD` as the GMT requires environment variables to be set.
### FPM
The compose file is copy pasted from <https://github.com/nextcloud/docker#base-version---fpm>
Again with bogus passwords as with apache.
## Running
You will need to supply the `--skip-unsafe` to the runner as there are ports defined in the `compose.yml`
## Debugging tips
Sometimes the playwright files will fail and it is unclear why. To easily debug this uncomment
```yml
# volumes:
# - /tmp/.X11-unix:/tmp/.X11-unix
# environment:
# DISPLAY: ":0"
```
in the `usage_scenario*.yml` file.
Then enable head full mode by `headless: false,` in the playwright file. Don't forget to `xhost +` on the host system.
If you have multiple displays you will also need to edit the `DISPLAY: ":0"`.
In cases where the script hangs because of a wrong locator, it might be helpful to run the usage scenario in debug mode and then attach a shell to the Playwright container.
Running `playwright codegen -o output.py` from the container and then following the actions of the script can help investigate what exactly is different.

View file

@ -0,0 +1,44 @@
version: '2'
volumes:
nextcloud:
db:
services:
db:
image: mariadb:11.0.2-jammy
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=TheGibson
- MYSQL_PASSWORD=TheGibson
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud:27.0.0-fpm
restart: always
links:
- db
volumes:
- nextcloud:/var/www/html
environment:
- MYSQL_PASSWORD=TheGibson
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
nc:
image: nginx:1.25.1-alpine3.17
restart: always
ports:
- 8080:80
links:
- app
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- nextcloud:/var/www/html:ro
depends_on:
- app

View file

@ -0,0 +1,33 @@
version: '2'
volumes:
nextcloud:
db:
services:
db:
image: mariadb:11.0.2-jammy
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=TheGibson
- MYSQL_PASSWORD=TheGibson
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
nc:
image: nextcloud:27.0.0-apache
restart: always
ports:
- 8080:80
links:
- db
volumes:
- nextcloud:/var/www/html
environment:
- MYSQL_PASSWORD=TheGibson
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db

View file

@ -0,0 +1,31 @@
version: '2'
volumes:
nextcloud:
db:
services:
db:
image: postgres:15.3-alpine3.18
restart: always
volumes:
- db:/var/lib/postgresql/data:Z
environment:
- POSTGRES_PASSWORD=TheGibson
- POSTGRES_DB=nextcloud
- POSTGRES_USER=nextcloud
nc:
image: nextcloud:27.0.0-apache
restart: always
ports:
- 8080:80
links:
- db
volumes:
- nextcloud:/var/www/html
environment:
- POSTGRES_PASSWORD=TheGibson
- POSTGRES_DB=nextcloud
- POSTGRES_USER=nextcloud
- POSTGRES_HOST=db

View file

@ -0,0 +1,10 @@
version: '2'
services:
nc:
image: nextcloud:27.0.0-apache
restart: always
ports:
- 8080:80
volumes:
- nextcloud:/var/www/html

View file

@ -29,8 +29,8 @@ def run(playwright: Playwright, browser_name: str) -> None:
page.get_by_role("link", name="Files").click() page.get_by_role("link", name="Files").click()
page.get_by_role("link", name="New file/folder menu").click() page.get_by_role("link", name="New file/folder menu").click()
page.get_by_role("link", name="New text file").click() page.get_by_role("link", name="New text file").click()
page.locator("#view9-input-file").fill("colab_meeting.md") page.locator("#view7-input-file").fill("colab_meeting.md")
page.locator("#view9-input-file").press("Enter") page.locator("#view7-input-file").press("Enter")
page.get_by_role("button", name="Create a new file with the selected template").click() page.get_by_role("button", name="Create a new file with the selected template").click()
sleep(5) sleep(5)
with contextlib.suppress(Exception): with contextlib.suppress(Exception):

View file

@ -29,7 +29,7 @@ def create_user(playwright: Playwright, browser_name: str, username: str, passwo
page.get_by_role("button", name="Close modal").click(timeout=15_000) page.get_by_role("button", name="Close modal").click(timeout=15_000)
log_note("Create user") log_note("Create user")
page.get_by_role("link", name="Open settings menu").click() page.get_by_role("link", name="Open settings menu").click()
page.get_by_role("link", name="Users").click() page.get_by_role("link", name="Users").first.click()
page.get_by_role("button", name="New user").click() page.get_by_role("button", name="New user").click()
page.get_by_placeholder("Username").click() page.get_by_placeholder("Username").click()
page.get_by_placeholder("Username").fill(username) page.get_by_placeholder("Username").fill(username)

View file

@ -19,7 +19,7 @@ def main(browser_name: str = "chromium"):
page = context.new_page() page = context.new_page()
try: try:
page.goto('http://nc/') page.goto('http://nc/')
page.set_default_timeout(180_000) page.set_default_timeout(240_000)
# 1. Create User # 1. Create User
log_note("Create admin user") log_note("Create admin user")

View file

@ -65,8 +65,9 @@ def create_conversation(playwright: Playwright, browser_name: str) -> str:
log_note("Create conversation") log_note("Create conversation")
page.get_by_role("button", name="Create a new group conversation").click() page.get_by_role("button", name="Create a new group conversation").click()
page.get_by_placeholder("Conversation name").fill("Random talk") # Different placeholder names and capitalization on apache vs FPM
page.locator("label").filter(has_text="Allow guests to join via link").locator("svg").click() page.get_by_placeholder("name").fill("Random talk")
page.get_by_text("Allow guests to join via link").click()
page.get_by_role("button", name="Create conversation").click() page.get_by_role("button", name="Create conversation").click()
page.get_by_role("button", name="Copy conversation link").click() page.get_by_role("button", name="Copy conversation link").click()
log_note("Close browser") log_note("Close browser")

173
energy-tests/nginx.conf Normal file
View file

@ -0,0 +1,173 @@
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
# Prevent nginx HTTP Server Detection
server_tokens off;
keepalive_timeout 65;
#gzip on;
upstream php-handler {
server app:9000;
}
server {
listen 80;
# HSTS settings
# WARNING: Only add the preload option once you read about
# the consequences in https://hstspreload.org/. This option
# will add the domain to a hardcoded list that is shipped
# in all major browsers and getting removed from this list
# could take several months.
#add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
# set max upload size
client_max_body_size 512M;
fastcgi_buffers 64 4K;
# Enable gzip but do not remove ETag headers
gzip on;
gzip_vary on;
gzip_comp_level 4;
gzip_min_length 256;
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
# Pagespeed is not supported by Nextcloud, so if your server is built
# with the `ngx_pagespeed` module, uncomment this line to disable it.
#pagespeed off;
# HTTP response headers borrowed from Nextcloud `.htaccess`
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Download-Options "noopen" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "none" always;
add_header X-XSS-Protection "1; mode=block" always;
# Remove X-Powered-By, which is an information leak
fastcgi_hide_header X-Powered-By;
# Path to the root of your installation
root /var/www/html;
# Specify how to handle directories -- specifying `/index.php$request_uri`
# here as the fallback means that Nginx always exhibits the desired behaviour
# when a client requests a path that corresponds to a directory that exists
# on the server. In particular, if that directory contains an index.php file,
# that file is correctly served; if it doesn't, then the request is passed to
# the front-end controller. This consistent behaviour means that we don't need
# to specify custom rules for certain paths (e.g. images and other assets,
# `/updater`, `/ocm-provider`, `/ocs-provider`), and thus
# `try_files $uri $uri/ /index.php$request_uri`
# always provides the desired behaviour.
index index.php index.html /index.php$request_uri;
# Rule borrowed from `.htaccess` to handle Microsoft DAV clients
location = / {
if ( $http_user_agent ~ ^DavClnt ) {
return 302 /remote.php/webdav/$is_args$args;
}
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# Make a regex exception for `/.well-known` so that clients can still
# access it despite the existence of the regex rule
# `location ~ /(\.|autotest|...)` which would otherwise handle requests
# for `/.well-known`.
location ^~ /.well-known {
# The rules in this block are an adaptation of the rules
# in `.htaccess` that concern `/.well-known`.
location = /.well-known/carddav { return 301 /remote.php/dav/; }
location = /.well-known/caldav { return 301 /remote.php/dav/; }
location /.well-known/acme-challenge { try_files $uri $uri/ =404; }
location /.well-known/pki-validation { try_files $uri $uri/ =404; }
# Let Nextcloud's API for `/.well-known` URIs handle all other
# requests by passing them to the front-end controller.
return 301 /index.php$request_uri;
}
# Rules borrowed from `.htaccess` to hide certain paths from clients
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; }
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; }
# Ensure this block, which passes PHP files to the PHP process, is above the blocks
# which handle static assets (as seen below). If this block is not declared first,
# then Nginx will encounter an infinite rewriting loop when it prepends `/index.php`
# to the URI, resulting in a HTTP 500 error response.
location ~ \.php(?:$|/) {
# Required for legacy support
rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+|.+\/richdocumentscode\/proxy) /index.php$request_uri;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
set $path_info $fastcgi_path_info;
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $path_info;
#fastcgi_param HTTPS on;
fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice
fastcgi_param front_controller_active true; # Enable pretty urls
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}
location ~ \.(?:css|js|svg|gif)$ {
try_files $uri /index.php$request_uri;
expires 6M; # Cache-Control policy borrowed from `.htaccess`
access_log off; # Optional: Don't log access to assets
}
location ~ \.woff2?$ {
try_files $uri /index.php$request_uri;
expires 7d; # Cache-Control policy borrowed from `.htaccess`
access_log off; # Optional: Don't log access to assets
}
# Rule borrowed from `.htaccess`
location /remote {
return 301 /remote.php$request_uri;
}
location / {
try_files $uri $uri/ /index.php$request_uri;
}
}
}

View file

@ -0,0 +1,57 @@
---
name: Nextcloud - FPM - MariaDB - Event - Chromium
author: Danilo Jesic <danilo@green-coding.berlin>
description: Installs the official Nextcloud FPM image with a MariaDB and creates a calendar event. Uses a playwright script running Chromium to create an admin account, install the recommended apps and then create an event.
compose-file: !include compose-fpm-mariadb.yml
services:
gcb-playwright:
image: greencoding/gcb_playwright
setup-commands:
- cp /tmp/repo/nextcloud_install.py /tmp/nextcloud_install.py
- cp /tmp/repo/nextcloud_create_event.py /tmp/nextcloud_create_event.py
networks:
- nextcloud-setup-network
# volumes:
# - /tmp/.X11-unix:/tmp/.X11-unix
# environment:
# DISPLAY: ":0"
# We don't need the volumes are we don't want to persist any data
db:
volumes: []
networks:
- nextcloud-setup-network
app:
volumes: []
networks:
- nextcloud-setup-network
nc:
networks:
- nextcloud-setup-network
networks:
nextcloud-setup-network:
flow:
- name: Install Nextcloud
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_install.py
note: Installing Nextcloud
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Login and create event
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_create_event.py
note: Creating event
read-notes-stdout: true
log-stdout: true
log-stderr: true

View file

@ -0,0 +1,57 @@
---
name: Nextcloud - FPM - MariaDB - Talk - Chromium
author: Danilo Jesic <danilo@green-coding.berlin>
description: Installs the official Nextcloud FPM image with a MariaDB and starts a Talk conversation. Uses a playwright script running Chromium to create an admin account, install the recommended apps and then create a Talk conversation where guest users will send each other random text.
compose-file: !include compose-fpm-mariadb.yml
services:
gcb-playwright:
image: greencoding/gcb_playwright
setup-commands:
- cp /tmp/repo/nextcloud_install.py /tmp/nextcloud_install.py
- cp /tmp/repo/nextcloud_talk.py /tmp/nextcloud_talk.py
networks:
- nextcloud-setup-network
# volumes:
# - /tmp/.X11-unix:/tmp/.X11-unix
# environment:
# DISPLAY: ":0"
# We don't need the volumes are we don't want to persist any data
db:
volumes: []
networks:
- nextcloud-setup-network
app:
volumes: []
networks:
- nextcloud-setup-network
nc:
networks:
- nextcloud-setup-network
networks:
nextcloud-setup-network:
flow:
- name: Install Nextcloud
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_install.py
note: Installing Nextcloud
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Talk conversation
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_talk.py
note: Starting conversation
read-notes-stdout: true
log-stdout: true
log-stderr: true

View file

@ -1,9 +1,8 @@
--- ---
name: Nextcloud - Docs name: Nextcloud - MariaDB - Docs - Chromium
author: Danilo Jesic <danilo@green-coding.berlin> author: Danilo Jesic <danilo@green-coding.berlin>
version: 1 description: Installs the official Nextcloud image with a MariaDB and collaborates on a document. Uses a playwright script running Chromium to create an admin account, install the recommended apps. Then creates a new user, creates a document and shares it. Finally, works on the document adding text from two browsers.
description: Installs the official Nextcloud image and collaborates on a document. Uses a playwright script running Chromium to create an admin account, install the recommended apps. Then creates a new user, creates a document and shares it. Finally, works on the document adding text from two browsers. compose-file: !include compose-mariadb.yml
compose-file: !include compose.yml
services: services:
gcb-playwright: gcb-playwright:

View file

@ -0,0 +1,73 @@
---
name: Nextcloud - MariaDB - Docs - Firefox
author: Danilo Jesic <danilo@green-coding.berlin>
description: Installs the official Nextcloud image with a MariaDB and collaborates on a document. Uses a playwright script running Firefox to create an admin account, install the recommended apps. Then creates a new user, creates a document and shares it. Finally, works on the document adding text from two browsers.
compose-file: !include compose-mariadb.yml
services:
gcb-playwright:
image: greencoding/gcb_playwright
setup-commands:
- cp /tmp/repo/nextcloud_install.py /tmp/nextcloud_install.py
- cp /tmp/repo/nextcloud_create_user.py /tmp/nextcloud_create_user.py
- cp /tmp/repo/nextcloud_create_doc_and_share.py /tmp/nextcloud_create_doc_and_share.py
- cp /tmp/repo/nextcloud_docs_collaboration.py /tmp/nextcloud_docs_collaboration.py
networks:
- nextcloud-setup-network
# volumes:
# - /tmp/.X11-unix:/tmp/.X11-unix
# environment:
# DISPLAY: ":0"
# We don't need the volumes are we don't want to persist any data
db:
volumes: []
networks:
- nextcloud-setup-network
nc:
volumes: []
networks:
- nextcloud-setup-network
networks:
nextcloud-setup-network:
flow:
- name: Install Nextcloud
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_install.py firefox
note: Installing Nextcloud
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Create User
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_create_user.py firefox
note: Create user
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Create doc and share
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_create_doc_and_share.py firefox
note: Create document and share
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Collaborate
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_docs_collaboration.py firefox
note: dev
read-notes-stdout: true
log-stdout: true
log-stderr: true

View file

@ -1,9 +1,8 @@
--- ---
name: Nextcloud - Create event name: Nextcloud - MariaDB - Event - Chromium
author: Danilo Jesic <danilo@green-coding.berlin> author: Danilo Jesic <danilo@green-coding.berlin>
version: 1 description: Installs the official Nextcloud image with a MariaDB and creates a calendar event. Uses a playwright script running Chromium to create an admin account, install the recommended apps and then create an event.
description: Installs the official Nextcloud image and creates a calendar event. Uses a playwright script running Chromium to create an admin account, install the recommended apps and then create an event. compose-file: !include compose-mariadb.yml
compose-file: !include compose.yml
services: services:
gcb-playwright: gcb-playwright:

View file

@ -1,9 +1,8 @@
--- ---
name: Nextcloud - Create event name: Nextcloud - MariaDB - Event - Firefox
author: Danilo Jesic <danilo@green-coding.berlin> author: Danilo Jesic <danilo@green-coding.berlin>
version: 1 description: Installs the official Nextcloud image with a MariaDB and creates a calendar event. Uses a playwright script running Firefox to create an admin account, install the recommended apps and then create an event.
description: Installs the official Nextcloud image and creates a calendar event. Uses a playwright script running Firefox to create an admin account, install the recommended apps and then create an event. compose-file: !include compose-mariadb.yml
compose-file: !include compose.yml
services: services:
gcb-playwright: gcb-playwright:

View file

@ -1,9 +1,8 @@
--- ---
name: Nextcloud - Talk name: Nextcloud - MariaDB - Talk - Chromium
author: Danilo Jesic <danilo@green-coding.berlin> author: Danilo Jesic <danilo@green-coding.berlin>
version: 1 description: Installs the official Nextcloud image with a MariaDB and starts a Talk conversation. Uses a playwright script running Chromium to create an admin account, install the recommended apps and then create a Talk conversation where guest users will send each other random text.
description: Installs the official Nextcloud image and starts a Talk conversation. Uses a playwright script running Chromium to create an admin account, install the recommended apps and then create a Talk conversation where guest users will send each other random text. compose-file: !include compose-mariadb.yml
compose-file: !include compose.yml
services: services:
gcb-playwright: gcb-playwright:

View file

@ -1,9 +1,8 @@
--- ---
name: Nextcloud - Talk name: Nextcloud - MariaDB - Talk - Firefox
author: Danilo Jesic <danilo@green-coding.berlin> author: Danilo Jesic <danilo@green-coding.berlin>
version: 1 description: Installs the official Nextcloud image with a MariaDB and starts a Talk conversation. Uses a playwright script running Firefox to create an admin account, install the recommended apps and then create a Talk conversation where guest users will send each other random text.
description: Installs the official Nextcloud image and starts a Talk conversation. Uses a playwright script running Chromium to create an admin account, install the recommended apps and then create a Talk conversation where guest users will send each other random text. compose-file: !include compose-mariadb.yml
compose-file: !include compose.yml
services: services:
gcb-playwright: gcb-playwright:

View file

@ -0,0 +1,73 @@
---
name: Nextcloud - Postgres - Docs - Chromium
author: Danilo Jesic <danilo@green-coding.berlin>
description: Installs the official Nextcloud image with a Postgres and collaborates on a document. Uses a playwright script running Chromium to create an admin account, install the recommended apps. Then creates a new user, creates a document and shares it. Finally, works on the document adding text from two browsers.
compose-file: !include compose-postgres.yml
services:
gcb-playwright:
image: greencoding/gcb_playwright
setup-commands:
- cp /tmp/repo/nextcloud_install.py /tmp/nextcloud_install.py
- cp /tmp/repo/nextcloud_create_user.py /tmp/nextcloud_create_user.py
- cp /tmp/repo/nextcloud_create_doc_and_share.py /tmp/nextcloud_create_doc_and_share.py
- cp /tmp/repo/nextcloud_docs_collaboration.py /tmp/nextcloud_docs_collaboration.py
networks:
- nextcloud-setup-network
# volumes:
# - /tmp/.X11-unix:/tmp/.X11-unix
# environment:
# DISPLAY: ":0"
# We don't need the volumes are we don't want to persist any data
db:
volumes: []
networks:
- nextcloud-setup-network
nc:
volumes: []
networks:
- nextcloud-setup-network
networks:
nextcloud-setup-network:
flow:
- name: Install Nextcloud
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_install.py
note: Installing Nextcloud
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Create User
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_create_user.py
note: Create user
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Create doc and share
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_create_doc_and_share.py
note: Create document and share
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Collaborate
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_docs_collaboration.py
note: dev
read-notes-stdout: true
log-stdout: true
log-stderr: true

View file

@ -0,0 +1,73 @@
---
name: Nextcloud - Postgres - Docs - Firefox
author: Danilo Jesic <danilo@green-coding.berlin>
description: Installs the official Nextcloud image with a Postgres and collaborates on a document. Uses a playwright script running Firefox to create an admin account, install the recommended apps. Then creates a new user, creates a document and shares it. Finally, works on the document adding text from two browsers.
compose-file: !include compose-postgres.yml
services:
gcb-playwright:
image: greencoding/gcb_playwright
setup-commands:
- cp /tmp/repo/nextcloud_install.py /tmp/nextcloud_install.py
- cp /tmp/repo/nextcloud_create_user.py /tmp/nextcloud_create_user.py
- cp /tmp/repo/nextcloud_create_doc_and_share.py /tmp/nextcloud_create_doc_and_share.py
- cp /tmp/repo/nextcloud_docs_collaboration.py /tmp/nextcloud_docs_collaboration.py
networks:
- nextcloud-setup-network
# volumes:
# - /tmp/.X11-unix:/tmp/.X11-unix
# environment:
# DISPLAY: ":0"
# We don't need the volumes are we don't want to persist any data
db:
volumes: []
networks:
- nextcloud-setup-network
nc:
volumes: []
networks:
- nextcloud-setup-network
networks:
nextcloud-setup-network:
flow:
- name: Install Nextcloud
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_install.py firefox
note: Installing Nextcloud
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Create User
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_create_user.py firefox
note: Create user
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Create doc and share
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_create_doc_and_share.py firefox
note: Create document and share
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Collaborate
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_docs_collaboration.py firefox
note: dev
read-notes-stdout: true
log-stdout: true
log-stderr: true

View file

@ -0,0 +1,54 @@
---
name: Nextcloud - Postgres - Event - Chromium
author: Danilo Jesic <danilo@green-coding.berlin>
version: 1
description: Installs the official Nextcloud image with a Postgres DB and creates a calendar event. Uses a playwright script running Chromium to create an admin account, install the recommended apps and then create a calendar event.
compose-file: !include compose-postgres.yml
services:
gcb-playwright:
image: greencoding/gcb_playwright
setup-commands:
- cp /tmp/repo/nextcloud_install.py /tmp/nextcloud_install.py
- cp /tmp/repo/nextcloud_create_event.py /tmp/nextcloud_create_event.py
networks:
- nextcloud-setup-network
# volumes:
# - /tmp/.X11-unix:/tmp/.X11-unix
# environment:
# DISPLAY: ":0"
# We don't need the volumes are we don't want to persist any data
db:
volumes: []
networks:
- nextcloud-setup-network
nc:
volumes: []
networks:
- nextcloud-setup-network
networks:
nextcloud-setup-network:
flow:
- name: Install Nextcloud
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_install.py
note: Installing Nextcloud
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Login and create event
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_create_event.py
note: Creating event
read-notes-stdout: true
log-stdout: true
log-stderr: true

View file

@ -0,0 +1,54 @@
---
name: Nextcloud - Postgres - Event - Firefox
author: Danilo Jesic <danilo@green-coding.berlin>
version: 1
description: Installs the official Nextcloud image with a Postgres DB and creates a calendar event. Uses a playwright script running Firefox to create an admin account, install the recommended apps and then create a calendar event.
compose-file: !include compose-postgres.yml
services:
gcb-playwright:
image: greencoding/gcb_playwright
setup-commands:
- cp /tmp/repo/nextcloud_install.py /tmp/nextcloud_install.py
- cp /tmp/repo/nextcloud_create_event.py /tmp/nextcloud_create_event.py
networks:
- nextcloud-setup-network
# volumes:
# - /tmp/.X11-unix:/tmp/.X11-unix
# environment:
# DISPLAY: ":0"
# We don't need the volumes are we don't want to persist any data
db:
volumes: []
networks:
- nextcloud-setup-network
nc:
volumes: []
networks:
- nextcloud-setup-network
networks:
nextcloud-setup-network:
flow:
- name: Install Nextcloud
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_install.py firefox
note: Installing Nextcloud
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Login and create event
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_create_event.py firefox
note: Creating event
read-notes-stdout: true
log-stdout: true
log-stderr: true

View file

@ -0,0 +1,53 @@
---
name: Nextcloud - Postgres - Talk - Chromium
author: Danilo Jesic <danilo@green-coding.berlin>
description: Installs the official Nextcloud image with a Postgres and starts a Talk conversation. Uses a playwright script running Chromium to create an admin account, install the recommended apps and then create a Talk conversation where guest users will send each other random text.
compose-file: !include compose-postgres.yml
services:
gcb-playwright:
image: greencoding/gcb_playwright
setup-commands:
- cp /tmp/repo/nextcloud_install.py /tmp/nextcloud_install.py
- cp /tmp/repo/nextcloud_talk.py /tmp/nextcloud_talk.py
networks:
- nextcloud-setup-network
# volumes:
# - /tmp/.X11-unix:/tmp/.X11-unix
# environment:
# DISPLAY: ":0"
# We don't need the volumes are we don't want to persist any data
db:
volumes: []
networks:
- nextcloud-setup-network
nc:
volumes: []
networks:
- nextcloud-setup-network
networks:
nextcloud-setup-network:
flow:
- name: Install Nextcloud
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_install.py
note: Installing Nextcloud
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Talk conversation
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_talk.py
note: Starting conversation
read-notes-stdout: true
log-stdout: true
log-stderr: true

View file

@ -0,0 +1,53 @@
---
name: Nextcloud - Postgres - Talk - Firefox
author: Danilo Jesic <danilo@green-coding.berlin>
description: Installs the official Nextcloud image with a Postgres and starts a Talk conversation. Uses a playwright script running Firefox to create an admin account, install the recommended apps and then create a Talk conversation where guest users will send each other random text.
compose-file: !include compose-postgres.yml
services:
gcb-playwright:
image: greencoding/gcb_playwright
setup-commands:
- cp /tmp/repo/nextcloud_install.py /tmp/nextcloud_install.py
- cp /tmp/repo/nextcloud_talk.py /tmp/nextcloud_talk.py
networks:
- nextcloud-setup-network
# volumes:
# - /tmp/.X11-unix:/tmp/.X11-unix
# environment:
# DISPLAY: ":0"
# We don't need the volumes are we don't want to persist any data
db:
volumes: []
networks:
- nextcloud-setup-network
nc:
volumes: []
networks:
- nextcloud-setup-network
networks:
nextcloud-setup-network:
flow:
- name: Install Nextcloud
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_install.py firefox
note: Installing Nextcloud
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Talk conversation
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_talk.py firefox
note: Starting conversation
read-notes-stdout: true
log-stdout: true
log-stderr: true

View file

@ -0,0 +1,69 @@
---
name: Nextcloud - SQLite - Docs - Chromium
author: Danilo Jesic <danilo@green-coding.berlin>
description: Installs the official Nextcloud image with a SQLite and collaborates on a document. Uses a playwright script running Chromium to create an admin account, install the recommended apps. Then creates a new user, creates a document and shares it. Finally, works on the document adding text from two browsers.
compose-file: !include compose-sqlite.yml
services:
gcb-playwright:
image: greencoding/gcb_playwright
setup-commands:
- cp /tmp/repo/nextcloud_install.py /tmp/nextcloud_install.py
- cp /tmp/repo/nextcloud_create_user.py /tmp/nextcloud_create_user.py
- cp /tmp/repo/nextcloud_create_doc_and_share.py /tmp/nextcloud_create_doc_and_share.py
- cp /tmp/repo/nextcloud_docs_collaboration.py /tmp/nextcloud_docs_collaboration.py
networks:
- nextcloud-setup-network
# volumes:
# - /tmp/.X11-unix:/tmp/.X11-unix
# environment:
# DISPLAY: ":0"
# We don't need the volumes are we don't want to persist any data
nc:
volumes: []
networks:
- nextcloud-setup-network
networks:
nextcloud-setup-network:
flow:
- name: Install Nextcloud
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_install.py
note: Installing Nextcloud
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Create User
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_create_user.py
note: Create user
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Create doc and share
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_create_doc_and_share.py
note: Create document and share
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Collaborate
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_docs_collaboration.py
note: dev
read-notes-stdout: true
log-stdout: true
log-stderr: true

View file

@ -0,0 +1,69 @@
---
name: Nextcloud - SQLite - Docs - Firefox
author: Danilo Jesic <danilo@green-coding.berlin>
description: Installs the official Nextcloud image with a SQLite and collaborates on a document. Uses a playwright script running Firefox to create an admin account, install the recommended apps. Then creates a new user, creates a document and shares it. Finally, works on the document adding text from two browsers.
compose-file: !include compose-sqlite.yml
services:
gcb-playwright:
image: greencoding/gcb_playwright
setup-commands:
- cp /tmp/repo/nextcloud_install.py /tmp/nextcloud_install.py
- cp /tmp/repo/nextcloud_create_user.py /tmp/nextcloud_create_user.py
- cp /tmp/repo/nextcloud_create_doc_and_share.py /tmp/nextcloud_create_doc_and_share.py
- cp /tmp/repo/nextcloud_docs_collaboration.py /tmp/nextcloud_docs_collaboration.py
networks:
- nextcloud-setup-network
# volumes:
# - /tmp/.X11-unix:/tmp/.X11-unix
# environment:
# DISPLAY: ":0"
# We don't need the volumes are we don't want to persist any data
nc:
volumes: []
networks:
- nextcloud-setup-network
networks:
nextcloud-setup-network:
flow:
- name: Install Nextcloud
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_install.py firefox
note: Installing Nextcloud
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Create User
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_create_user.py firefox
note: Create user
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Create doc and share
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_create_doc_and_share.py firefox
note: Create document and share
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Collaborate
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_docs_collaboration.py firefox
note: dev
read-notes-stdout: true
log-stdout: true
log-stderr: true

View file

@ -0,0 +1,49 @@
---
name: Nextcloud - SQLite - Event - Chromium
author: Danilo Jesic <danilo@green-coding.berlin>
description: Installs the official Nextcloud image with a SQLite and creates a calendar event. Uses a playwright script running Chromium to create an admin account, install the recommended apps and then create an event.
compose-file: !include compose-sqlite.yml
services:
gcb-playwright:
image: greencoding/gcb_playwright
setup-commands:
- cp /tmp/repo/nextcloud_install.py /tmp/nextcloud_install.py
- cp /tmp/repo/nextcloud_create_event.py /tmp/nextcloud_create_event.py
networks:
- nextcloud-setup-network
# volumes:
# - /tmp/.X11-unix:/tmp/.X11-unix
# environment:
# DISPLAY: ":0"
# We don't need the volumes are we don't want to persist any data
nc:
volumes: []
networks:
- nextcloud-setup-network
networks:
nextcloud-setup-network:
flow:
- name: Install Nextcloud
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_install.py
note: Installing Nextcloud
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Login and create event
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_create_event.py
note: Creating event
read-notes-stdout: true
log-stdout: true
log-stderr: true

View file

@ -0,0 +1,49 @@
---
name: Nextcloud - SQLite - Event - Firefox
author: Danilo Jesic <danilo@green-coding.berlin>
description: Installs the official Nextcloud image with a SQLite and creates a calendar event. Uses a playwright script running Firefox to create an admin account, install the recommended apps and then create an event.
compose-file: !include compose-sqlite.yml
services:
gcb-playwright:
image: greencoding/gcb_playwright
setup-commands:
- cp /tmp/repo/nextcloud_install.py /tmp/nextcloud_install.py
- cp /tmp/repo/nextcloud_create_event.py /tmp/nextcloud_create_event.py
networks:
- nextcloud-setup-network
# volumes:
# - /tmp/.X11-unix:/tmp/.X11-unix
# environment:
# DISPLAY: ":0"
# We don't need the volumes are we don't want to persist any data
nc:
volumes: []
networks:
- nextcloud-setup-network
networks:
nextcloud-setup-network:
flow:
- name: Install Nextcloud
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_install.py firefox
note: Installing Nextcloud
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Login and create event
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_create_event.py firefox
note: Creating event
read-notes-stdout: true
log-stdout: true
log-stderr: true

View file

@ -0,0 +1,49 @@
---
name: Nextcloud - SQLite - Talk - Chromium
author: Danilo Jesic <danilo@green-coding.berlin>
description: Installs the official Nextcloud image with a SQLite and starts a Talk conversation. Uses a playwright script running Chromium to create an admin account, install the recommended apps and then create a Talk conversation where guest users will send each other random text.
compose-file: !include compose-mariadb.yml
services:
gcb-playwright:
image: greencoding/gcb_playwright
setup-commands:
- cp /tmp/repo/nextcloud_install.py /tmp/nextcloud_install.py
- cp /tmp/repo/nextcloud_talk.py /tmp/nextcloud_talk.py
networks:
- nextcloud-setup-network
# volumes:
# - /tmp/.X11-unix:/tmp/.X11-unix
# environment:
# DISPLAY: ":0"
# We don't need the volumes are we don't want to persist any data
nc:
volumes: []
networks:
- nextcloud-setup-network
networks:
nextcloud-setup-network:
flow:
- name: Install Nextcloud
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_install.py
note: Installing Nextcloud
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Talk conversation
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_talk.py
note: Starting conversation
read-notes-stdout: true
log-stdout: true
log-stderr: true

View file

@ -0,0 +1,49 @@
---
name: Nextcloud - SQLite - Talk - Firefox
author: Danilo Jesic <danilo@green-coding.berlin>
description: Installs the official Nextcloud image with a SQLite and starts a Talk conversation. Uses a playwright script running Firefox to create an admin account, install the recommended apps and then create a Talk conversation where guest users will send each other random text.
compose-file: !include compose-mariadb.yml
services:
gcb-playwright:
image: greencoding/gcb_playwright
setup-commands:
- cp /tmp/repo/nextcloud_install.py /tmp/nextcloud_install.py
- cp /tmp/repo/nextcloud_talk.py /tmp/nextcloud_talk.py
networks:
- nextcloud-setup-network
# volumes:
# - /tmp/.X11-unix:/tmp/.X11-unix
# environment:
# DISPLAY: ":0"
# We don't need the volumes are we don't want to persist any data
nc:
volumes: []
networks:
- nextcloud-setup-network
networks:
nextcloud-setup-network:
flow:
- name: Install Nextcloud
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_install.py firefox
note: Installing Nextcloud
read-notes-stdout: true
log-stdout: true
log-stderr: true
- name: Talk conversation
container: gcb-playwright
commands:
- type: console
command: python3 /tmp/nextcloud_talk.py firefox
note: Starting conversation
read-notes-stdout: true
log-stdout: true
log-stderr: true