Page MenuHomePhorge

No OneTemporary

Size
6 KB
Referenced Files
None
Subscribers
None
diff --git a/ci/Makefile b/ci/Makefile
new file mode 100644
index 00000000..9a021d8f
--- /dev/null
+++ b/ci/Makefile
@@ -0,0 +1,28 @@
+HOSTNAME=ci.local
+PUBLIC_IP=127.0.0.1
+OPENEXCHANGERATES_API_KEY=dummy
+FIREBASE_API_KEY=dummy
+PWD=$(shell pwd)
+
+configure:
+ cd .. ; \
+ cp ci/env.local src/env.local ; \
+ sed -i 's/{{ host }}/${HOSTNAME}/g' src/env.local ; \
+ sed -i 's/{{ public_ip }}/${PUBLIC_IP}/g' src/env.local ; \
+ sed -i 's/{{ openexchangerates_api_key }}/${OPENEXCHANGERATES_API_KEY}/g' src/env.local ; \
+ sed -i 's/{{ firebase_api_key }}/${FIREBASE_API_KEY}/g' src/env.local ;
+
+setup:
+ cd .. && bin/quickstart.sh --nodev
+
+build:
+ cd .. && docker compose build swoole tests && cd ci
+
+lint:
+ docker run -v ${PWD}/../:/src/kolab.orig -t kolab-tests /lint.sh
+
+test:
+ docker run --network=host -v ${PWD}/../src:/src/kolabsrc.orig -t kolab-tests /init.sh
+
+all: configure setup build lint test
+
diff --git a/ci/env.local b/ci/env.local
new file mode 100644
index 00000000..5b322dd7
--- /dev/null
+++ b/ci/env.local
@@ -0,0 +1,46 @@
+MFA_DSN=mysql://root:Welcome2KolabSystems@127.0.0.1/roundcube
+APP_DOMAIN={{ host }}
+APP_WEBSITE_DOMAIN={{ host }}
+APP_KEY=base64:FG6ECzyAMSmyX+eYwO/FW3bwnarbKkBhqtO65vlMb1E=
+APP_PUBLIC_URL=https://{{ host }}
+COTURN_STATIC_SECRET=uzYguvIl9tpZFMuQOE78DpOi6Jc7VFSD0UAnvgMsg5n4e74MgIf6vQvbc6LWzZjz
+COTURN_PUBLIC_IP='{{ public_ip }}'
+MEET_TURN_SERVER='turn:{{ public_ip }}:3478'
+MEET_WEBRTC_LISTEN_IP='{{ public_ip }}'
+MEET_PUBLIC_DOMAIN={{ host }}
+MEET_SERVER_URLS=https://{{ host }}/meetmedia/api/
+WEBMAIL_URL=/roundcubemail
+APP_URL=https://{{ host }}
+ASSET_URL=https://{{ host }}
+
+MOLLIE_KEY=
+STRIPE_KEY=
+STRIPE_PUBLIC_KEY=
+STRIPE_WEBHOOK_SECRET=
+
+OCTANE_HTTP_HOST={{ host }}
+OPENEXCHANGERATES_API_KEY={{ openexchangerates_api_key }}
+FIREBASE_API_KEY={{ firebase_api_key }}
+
+#Generated by php artisan passport:client --password, but can be left hardcoded (the seeder will pick it up)
+PASSPORT_PROXY_OAUTH_CLIENT_ID=942edef5-3dbd-4a14-8e3e-d5d59b727bee
+PASSPORT_PROXY_OAUTH_CLIENT_SECRET=L6L0n56ecvjjK0cJMjeeV1pPAeffUBO0YSSH63wf
+
+#Generated by php artisan passport:client --password, but can be left hardcoded (the seeder will pick it up)
+PASSPORT_COMPANIONAPP_OAUTH_CLIENT_ID=9566e018-f05d-425c-9915-420cdb9258bb
+PASSPORT_COMPANIONAPP_OAUTH_CLIENT_SECRET=XjgV6SU9shO0QFKaU6pQPRC5rJpyRezDJTSoGLgz
+
+APP_TENANT_ID=42
+APP_PASSPHRASE=simple123
+
+MAIL_DRIVER=log
+
+KOLAB_SSL_CERTIFICATE=/etc/pki/tls/certs/kolab.hosted.com.cert
+KOLAB_SSL_CERTIFICATE_FULLCHAIN=/etc/pki/tls/certs/kolab.hosted.com.chain.pem
+KOLAB_SSL_CERTIFICATE_KEY=/etc/pki/tls/certs/kolab.hosted.com.key
+
+PROXY_SSL_CERTIFICATE=/etc/pki/tls/certs/imap.hosted.com.cert
+PROXY_SSL_CERTIFICATE_KEY=/etc/pki/tls/certs/imap.hosted.com.key
+
+NGINX_SSL_CERTIFICATE=/etc/pki/tls/certs/imap.hosted.com.cert
+NGINX_SSL_CERTIFICATE_KEY=/etc/pki/tls/certs/imap.hosted.com.key
diff --git a/docker/tests/Dockerfile b/docker/tests/Dockerfile
index c7edc167..b7d54d63 100644
--- a/docker/tests/Dockerfile
+++ b/docker/tests/Dockerfile
@@ -1,12 +1,21 @@
FROM apheleia/swoole:4.8.x
MAINTAINER Jeroen van Meeuwen <vanmeeuwen@apheleia-it.ch>
USER root
RUN dnf -y install findutils php-phpunit-PHPUnit chromium php-xdebug
+RUN mkdir /src/ && chown 1001:100 /src/
+
+RUN usermod -G wheel default
+RUN echo '%wheel ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
+RUN chmod 777 /opt/app-root/src
+
+USER default
+
EXPOSE 8000
COPY init.sh /init.sh
+COPY lint.sh /lint.sh
CMD [ "/init.sh" ]
diff --git a/docker/tests/init.sh b/docker/tests/init.sh
index 30df50e1..76e09f85 100755
--- a/docker/tests/init.sh
+++ b/docker/tests/init.sh
@@ -1,74 +1,76 @@
#!/bin/bash
-set -e
-cp -a /src/kolabsrc.orig /src/kolabsrc
+#set -e
+sudo cp -a /src/kolabsrc.orig /src/kolabsrc
+sudo chmod 777 -R /src/kolabsrc
cd /src/kolabsrc
-rm -rf vendor/ composer.lock
+sudo rm -rf vendor/ composer.lock
php -dmemory_limit=-1 $(command -v composer) install
+sudo rm -rf node_modules
+mkdir node_modules
npm install
find bootstrap/cache/ -type f ! -name ".gitignore" -delete
./artisan key:generate
./artisan clear-compiled
./artisan cache:clear
./artisan horizon:install
if [ ! -f storage/oauth-public.key -o ! -f storage/oauth-private.key ]; then
./artisan passport:keys --force
fi
cat >> .env << EOF
PASSPORT_PRIVATE_KEY="$(cat storage/oauth-private.key)"
PASSPORT_PUBLIC_KEY="$(cat storage/oauth-public.key)"
EOF
if rpm -qv chromium 2>/dev/null; then
chver=$(rpmquery --queryformat="%{VERSION}" chromium | awk -F'.' '{print $1}')
./artisan dusk:chrome-driver ${chver}
fi
if [ ! -f 'resources/countries.php' ]; then
./artisan data:countries
fi
npm run dev
-
-
-
-# Tests\Feature\Controller\PaymentsMollieEuroTest
# /usr/bin/chromium-browser --no-sandbox --headless --disable-gpu --remote-debugging-port=9222 http://localhost &
rm -rf database/database.sqlite
./artisan db:ping --wait
php -dmemory_limit=512M ./artisan migrate:refresh --seed
./artisan data:import || :
+./artisan queue:work --stop-when-empty
# nohup ./artisan horizon >/dev/null 2>&1 &
./artisan octane:start --host=$(grep OCTANE_HTTP_HOST .env | tail -n1 | sed "s/OCTANE_HTTP_HOST=//") >/dev/null 2>&1 &
-# phpunit --verbose tests/Feature/Controller/PaymentsMollieEuroTest.php
php \
-dmemory_limit=-1 \
vendor/bin/phpunit \
+ --exclude flaky \
--verbose \
--stop-on-defect \
--stop-on-error \
--stop-on-failure \
--testsuite Unit
php \
-dmemory_limit=-1 \
vendor/bin/phpunit \
+ --exclude flaky \
--verbose \
--stop-on-defect \
--stop-on-error \
--stop-on-failure \
--testsuite Functional
php \
-dmemory_limit=-1 \
vendor/bin/phpunit \
+ --exclude flaky \
--verbose \
--stop-on-defect \
--stop-on-error \
--stop-on-failure \
--testsuite Feature
diff --git a/docker/tests/lint.sh b/docker/tests/lint.sh
new file mode 100755
index 00000000..cf509b4e
--- /dev/null
+++ b/docker/tests/lint.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+set -e
+sudo cp -a /src/kolab.orig /src/kolab
+sudo chmod 777 -R /src/kolab
+cd /src/kolab/src
+
+sudo rm -rf vendor/ composer.lock
+php -dmemory_limit=-1 $(command -v composer) install
+sudo rm -rf node_modules
+mkdir node_modules
+npm install
+
+php -dmemory_limit=500M \
+ vendor/bin/phpcs \
+ -s
+
+php -dmemory_limit=500M \
+ vendor/bin/phpstan \
+ analyse
+
+npm run lint

File Metadata

Mime Type
text/x-diff
Expires
Fri, Mar 20, 1:13 AM (1 d, 14 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
458832
Default Alt Text
(6 KB)

Event Timeline