Page MenuHomePhorge

D3680.1775507919.diff
No OneTemporary

Authored By
Unknown
Size
14 KB
Referenced Files
None
Subscribers
None

D3680.1775507919.diff

diff --git a/ansible/env.local b/ansible/env.local
--- a/ansible/env.local
+++ b/ansible/env.local
@@ -34,3 +34,14 @@
APP_PASSPHRASE=simple123
MAIL_DRIVER=log
+
+KOLAB_SSL_CERTIFICATE=/etc/letsencrypt/live/{{ host }}/cert.pem
+KOLAB_SSL_CERTIFICATE_FULLCHAIN=/etc/letsencrypt/live/{{ host }}/fullchain.pem
+KOLAB_SSL_CERTIFICATE_KEY=/etc/letsencrypt/live/{{ host }}/privkey.pem
+
+PROXY_SSL_CERTIFICATE=/etc/letsencrypt/live/{{ host }}/fullchain.pem
+PROXY_SSL_CERTIFICATE_KEY=/etc/letsencrypt/live/{{ host }}/privkey.pem
+
+NGINX_SSL_CERTIFICATE=/etc/letsencrypt/live/{{ host }}/fullchain.pem
+NGINX_SSL_CERTIFICATE_KEY=/etc/letsencrypt/live/{{ host }}/privkey.pem
+
diff --git a/bin/deploy.sh b/bin/deploy.sh
--- a/bin/deploy.sh
+++ b/bin/deploy.sh
@@ -1,5 +1,4 @@
#!/bin/bash
bin/quickstart.sh --nodev
-docker exec -w /src/kolabsrc/ kolab-webapp ./artisan user:assign john@kolab.org meet
docker exec -w /src/kolabsrc/ kolab-webapp ./artisan user:assign john@kolab.org beta
diff --git a/bin/quickstart.sh b/bin/quickstart.sh
--- a/bin/quickstart.sh
+++ b/bin/quickstart.sh
@@ -7,9 +7,6 @@
exit 1
}
-rpm -qv docker-compose >/dev/null 2>&1 || \
- test ! -z "$(which docker-compose 2>/dev/null)" || \
- die "Is docker-compose installed?"
test ! -z "$(grep 'systemd.unified_cgroup_hierarchy=0' /proc/cmdline)" || \
die "systemd containers only work with cgroupv1 (use 'grubby --update-kernel=ALL --args=\"systemd.unified_cgroup_hierarchy=0\"' and a reboot to fix)"
@@ -25,17 +22,19 @@
cat src/env.local >> src/.env
fi
+export DOCKER_BUILDKIT=0
+
docker pull docker.io/kolab/centos7:latest
-docker-compose down --remove-orphans
+docker compose down --remove-orphans
src/artisan octane:stop >/dev/null 2>&1 || :
src/artisan horizon:terminate >/dev/null 2>&1 || :
-docker-compose build coturn kolab mariadb meet pdns-sql proxy redis nginx
+docker compose build coturn kolab mariadb meet pdns-sql proxy redis nginx
bin/regen-certs
-docker-compose up -d coturn kolab mariadb meet pdns-sql proxy redis
+docker compose up -d coturn kolab mariadb meet pdns-sql proxy redis
# Workaround until we have docker-compose --wait (https://github.com/docker/compose/pull/8777)
function wait_for_container {
@@ -65,8 +64,9 @@
if [ "$1" == "--nodev" ]; then
echo "starting everything in containers"
- docker-compose build swoole webapp
- docker-compose up -d webapp nginx
+ docker compose build swoole
+ docker compose build webapp
+ docker compose up -d webapp nginx
wait_for_container 'kolab-webapp'
exit 0
fi
@@ -128,7 +128,7 @@
npm run dev
popd
-docker-compose up -d nginx
+docker compose up -d nginx
pushd ${base_dir}/src/
rm -rf database/database.sqlite
diff --git a/ci/Makefile b/ci/Makefile
new file mode 100644
--- /dev/null
+++ b/ci/Makefile
@@ -0,0 +1,29 @@
+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_BUILDKIT=0 docker compose build swoole && DOCKER_BUILDKIT=0 docker compose build 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/ansible/env.local b/ci/env.local
copy from ansible/env.local
copy to ci/env.local
--- a/ansible/env.local
+++ b/ci/env.local
@@ -34,3 +34,13 @@
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-compose.yml b/docker-compose.yml
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -38,9 +38,9 @@
- DB_KOLAB_PASSWORD=Welcome2KolabSystems
- DB_RC_USERNAME=roundcube
- DB_RC_PASSWORD=Welcome2KolabSystems
- - SSL_CERTIFICATE=/etc/letsencrypt/live/${APP_WEBSITE_DOMAIN:?err}/cert.pem
- - SSL_CERTIFICATE_FULLCHAIN=/etc/letsencrypt/live/${APP_WEBSITE_DOMAIN:?err}/fullchain.pem
- - SSL_CERTIFICATE_KEY=/etc/letsencrypt/live/${APP_WEBSITE_DOMAIN:?err}/privkey.pem
+ - SSL_CERTIFICATE=${KOLAB_SSL_CERTIFICATE:?err}
+ - SSL_CERTIFICATE_FULLCHAIN=${KOLAB_SSL_CERTIFICATE_FULLCHAIN:?err}
+ - SSL_CERTIFICATE_KEY=${KOLAB_SSL_CERTIFICATE_KEY:?err}
- IMAP_HOST=127.0.0.1
- IMAP_PORT=11993
- MAIL_HOST=127.0.0.1
@@ -88,8 +88,8 @@
context: ./docker/nginx/
args:
APP_WEBSITE_DOMAIN: ${APP_WEBSITE_DOMAIN:?err}
- SSL_CERTIFICATE: /etc/letsencrypt/live/${APP_WEBSITE_DOMAIN:?err}/fullchain.pem
- SSL_CERTIFICATE_KEY: /etc/letsencrypt/live/${APP_WEBSITE_DOMAIN:?err}/privkey.pem
+ SSL_CERTIFICATE: ${NGINX_SSL_CERTIFICATE:?err}
+ SSL_CERTIFICATE_KEY: ${NGINX_SSL_CERTIFICATE_KEY:?err}
depends_on:
kolab:
condition: service_healthy
@@ -135,8 +135,8 @@
context: ./docker/proxy/
args:
APP_WEBSITE_DOMAIN: ${APP_WEBSITE_DOMAIN:?err}
- SSL_CERTIFICATE: /etc/letsencrypt/live/${APP_WEBSITE_DOMAIN:?err}/fullchain.pem
- SSL_CERTIFICATE_KEY: /etc/letsencrypt/live/${APP_WEBSITE_DOMAIN:?err}/privkey.pem
+ SSL_CERTIFICATE: ${PROXY_SSL_CERTIFICATE:?err}
+ SSL_CERTIFICATE_KEY: ${PROXY_SSL_CERTIFICATE_KEY:?err}
healthcheck:
interval: 10s
test: "kill -0 $$(cat /run/nginx.pid)"
@@ -245,6 +245,5 @@
image: kolab-meet
volumes:
- ./meet/server:/src/meet/:ro
- - ./docker/meet/build/node_modules:/root/node_modules
- ./docker/certs/meet.${APP_WEBSITE_DOMAIN}.cert:/etc/pki/tls/certs/meet.${APP_WEBSITE_DOMAIN}.cert
- ./docker/certs/meet.${APP_WEBSITE_DOMAIN}.key:/etc/pki/tls/private/meet.${APP_WEBSITE_DOMAIN}.key
diff --git a/docker/kolab/Dockerfile b/docker/kolab/Dockerfile
--- a/docker/kolab/Dockerfile
+++ b/docker/kolab/Dockerfile
@@ -40,10 +40,10 @@
# Add the EPEL key.
RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
-RUN rpm --import https://mirror.kolabenterprise.com/maipo.asc
+RUN rpm --import https://mirror.apheleia-it.ch/repos/Kolab:/16/key.asc
-RUN yum -y install https://mirror.kolabenterprise.com/kolab-16-for-el7.rpm && \
- yum -y install kolab-16-release-development patch && \
+RUN yum -y install https://mirror.apheleia-it.ch/repos/Kolab:/16/kolab-16-for-el7.rpm && \
+ yum -y install kolab-16-release patch && \
yum clean all
RUN yum -y --setopt tsflags= install kolab roundcubemail-plugin-enigma
diff --git a/docker/tests/Dockerfile b/docker/tests/Dockerfile
--- a/docker/tests/Dockerfile
+++ b/docker/tests/Dockerfile
@@ -6,7 +6,16 @@
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
--- a/docker/tests/init.sh
+++ b/docker/tests/init.sh
@@ -1,10 +1,13 @@
#!/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
@@ -32,10 +35,6 @@
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
@@ -45,10 +44,10 @@
# 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-group skipci \
--verbose \
--stop-on-defect \
--stop-on-error \
@@ -58,6 +57,7 @@
php \
-dmemory_limit=-1 \
vendor/bin/phpunit \
+ --exclude-group skipci \
--verbose \
--stop-on-defect \
--stop-on-error \
@@ -67,6 +67,7 @@
php \
-dmemory_limit=-1 \
vendor/bin/phpunit \
+ --exclude-group skipci,coinbase,mollie,stripe,meet,dns \
--verbose \
--stop-on-defect \
--stop-on-error \
diff --git a/docker/tests/lint.sh b/docker/tests/lint.sh
new file mode 100755
--- /dev/null
+++ b/docker/tests/lint.sh
@@ -0,0 +1,16 @@
+#!/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
+
+php -dmemory_limit=500M \
+ vendor/bin/phpcs \
+ -s
+
+php -dmemory_limit=500M \
+ vendor/bin/phpstan \
+ analyse
diff --git a/src/.env.example b/src/.env.example
--- a/src/.env.example
+++ b/src/.env.example
@@ -174,3 +174,13 @@
KB_ACCOUNT_DELETE=
KB_ACCOUNT_SUSPENDED=
KB_PAYMENT_SYSTEM=
+
+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/src/tests/Browser/Admin/DashboardTest.php b/src/tests/Browser/Admin/DashboardTest.php
--- a/src/tests/Browser/Admin/DashboardTest.php
+++ b/src/tests/Browser/Admin/DashboardTest.php
@@ -42,6 +42,7 @@
/**
* Test user search
+ * @group skipci
*/
public function testSearch(): void
{
@@ -110,6 +111,7 @@
/**
* Test user search deleted user/domain
+ * @group skipci
*/
public function testSearchDeleted(): void
{
diff --git a/src/tests/Browser/DomainTest.php b/src/tests/Browser/DomainTest.php
--- a/src/tests/Browser/DomainTest.php
+++ b/src/tests/Browser/DomainTest.php
@@ -59,6 +59,7 @@
/**
* Test domain info page (non-existing domain id)
+ * @group skipci
*/
public function testDomainInfo404(): void
{
@@ -78,6 +79,7 @@
* Test domain info page (existing domain)
*
* @depends testDomainInfo404
+ * @group skipci
*/
public function testDomainInfo(): void
{
@@ -135,6 +137,7 @@
/**
* Test domain settings
+ * @group skipci
*/
public function testDomainSettings(): void
{
@@ -178,6 +181,7 @@
* Test domains list page
*
* @depends testDomainListUnauth
+ * @group skipci
*/
public function testDomainList(): void
{
@@ -237,6 +241,7 @@
/**
* Test domain creation page
+ * @group skipci
*/
public function testDomainCreate(): void
{
@@ -297,6 +302,7 @@
/**
* Test domain deletion
+ * @group skipci
*/
public function testDomainDelete(): void
{
diff --git a/src/tests/Browser/ErrorTest.php b/src/tests/Browser/ErrorTest.php
--- a/src/tests/Browser/ErrorTest.php
+++ b/src/tests/Browser/ErrorTest.php
@@ -21,7 +21,7 @@
->assertVisible('#app > #footer-menu');
$this->assertSame('404', $browser->text('#error-page .code'));
- $this->assertSame('Not found', $browser->text('#error-page .message'));
+ $this->assertSame('Not Found', $browser->text('#error-page .message'));
});
$this->browse(function (Browser $browser) {
@@ -31,7 +31,7 @@
->assertVisible('#app > #footer-menu');
$this->assertSame('404', $browser->text('#error-page .code'));
- $this->assertSame('Not found', $browser->text('#error-page .message'));
+ $this->assertSame('Not Found', $browser->text('#error-page .message'));
});
}
}
diff --git a/src/tests/Feature/Backends/IMAPTest.php b/src/tests/Feature/Backends/IMAPTest.php
--- a/src/tests/Feature/Backends/IMAPTest.php
+++ b/src/tests/Feature/Backends/IMAPTest.php
@@ -11,6 +11,7 @@
* Test verifying IMAP account existence (existing account)
*
* @group imap
+ * @group skipci
*/
public function testVerifyAccountExisting(): void
{
@@ -27,6 +28,7 @@
* Test verifying IMAP shared folder existence
*
* @group imap
+ * @group skipci
*/
public function testVerifySharedFolder(): void
{
diff --git a/src/tests/Feature/Console/User/StatusTest.php b/src/tests/Feature/Console/User/StatusTest.php
--- a/src/tests/Feature/Console/User/StatusTest.php
+++ b/src/tests/Feature/Console/User/StatusTest.php
@@ -29,6 +29,8 @@
/**
* Test command runs
+ * FIXME Status is only active at the end
+ * @group flaky
*/
public function testHandle(): void
{
diff --git a/src/tests/Feature/Controller/DomainsTest.php b/src/tests/Feature/Controller/DomainsTest.php
--- a/src/tests/Feature/Controller/DomainsTest.php
+++ b/src/tests/Feature/Controller/DomainsTest.php
@@ -44,6 +44,7 @@
/**
* Test domain confirm request
+ * @group skipci
*/
public function testConfirm(): void
{
diff --git a/src/tests/Feature/Jobs/WalletCheckTest.php b/src/tests/Feature/Jobs/WalletCheckTest.php
--- a/src/tests/Feature/Jobs/WalletCheckTest.php
+++ b/src/tests/Feature/Jobs/WalletCheckTest.php
@@ -17,6 +17,7 @@
public function setUp(): void
{
parent::setUp();
+ Carbon::setTestNow(Carbon::createFromDate(2022, 02, 02));
$this->deleteTestUser('wallet-check@kolabnow.com');
}

File Metadata

Mime Type
text/plain
Expires
Mon, Apr 6, 8:38 PM (11 h, 20 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18839452
Default Alt Text
D3680.1775507919.diff (14 KB)

Event Timeline