Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F117973493
D3680.1775512952.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
14 KB
Referenced Files
None
Subscribers
None
D3680.1775512952.diff
View Options
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
Details
Attached
Mime Type
text/plain
Expires
Mon, Apr 6, 10:02 PM (12 h, 12 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18839452
Default Alt Text
D3680.1775512952.diff (14 KB)
Attached To
Mode
D3680: Run kolab tests in CI
Attached
Detach File
Event Timeline