diff --git a/docs/dev_tools/test.md b/docs/dev_tools/test.md index 5f9239d15f8813f5283d02caeb5f180558375c52..9300f6f7270ebdcc3fc837b4eb36d53816769886 100644 --- a/docs/dev_tools/test.md +++ b/docs/dev_tools/test.md @@ -3,6 +3,148 @@ title: Testing tags: - documentation - tools +- tests --- # Testing Drupal Code + +This section describes everything we have to test our code from static +code analysis to unit testing. + +You also have to set up your environment with the tool [l3d](../docker/l3d/index.md). + +## Static Code Analysis + +We have several tools to perform static code analysis. + +* PHP LOC +* Code Sniffer +* Mess Detection + +### PHP LOC + +PHP LOC prints several metrics about your code, like the average size of a class. + +To execute PHP LOC on the console: + +```l3d +a test phploc <file_ordirectory> +``` + +Whether it is a directory, it runs the analysis for everything under this directory +recursively. + +### PHP Code Sniffer + +PHP Code Sniffer performs a static code analysis with a specific Drupal profile. It detects +code smells like static calls. + +To execute PHP Code Sniffer on the console: + +```l3d +a test phpcs <file_ordirectory> +``` + +Whether it is a directory, it runs the analysis for everything under this directory +recursively. + +### PHP Mess Detection + +PHP Mess Detection is a more detailed analysis comparing to code sniffer. It +uses several profiles like: + +* cleancode +* design + +This analysis detects also code smells like the complexity (e.g. number of +dependencies) of classes. + +To execute PHP Code Sniffer on the console: + +```l3d +a test phpmd <file_ordirectory> json <profile> +``` + +Whether it is a directory, it runs the analysis for everything under this directory +recursively. + +## Unit/Kernel/Functional Testing + +To execute the tests, you can use a single command: + +```l3d +a test phpunit <file_ordirectory> +``` + +All kind of Drupal tests will be executed. +Whether it is a directory, it runs the analysis for everything under this directory +recursively. + +You also can execute the tests within your IDE. + +First got to the settings of your IDE and add a new PHP interpreter. Select Docker and +enter the form: + + + +Use the option Docker Compose: + + + +Fill the following form like: + + + +Use the server you created for [debugging](./debug.md). + +The next step is to create a settings for your test framework. Remove all configuration +and add a new one for remote interpreter: + + + + + + + +Set the autoloader and the configurations file. + +Now you are ready to go. Open a directory or a single test file (or method) and click on the green +arrow: + + + +You can also use the execution with the debugger. + +### Code Coverage + +First, activate the coverage option: + +```l3d +a debug coverage +``` + +Enter the projects to cover into your ```.lakedrops.yml``` file, like: + +```yml +lakedrops-dev: + coverage: + - ../web/modules/contrib/bpmn_io + - ../web/modules/contrib/camunda + - ../web/modules/contrib/eca + - ../web/modules/contrib/eca_entity_share + - ../web/modules/contrib/eca_state_machine + - ../web/modules/contrib/eca_tamper +``` + +This is just an example! + +You have to execute the following command to write a new config file for testing: + +```l3d +composer lakedrops:scaffold +``` + +Now you can execute every test including code coverage. To check, if it is +working properly, a new view for coverage should open in your IDE, like: + + diff --git a/docs/files/screenshots/settings_php_interpreter.png b/docs/files/screenshots/settings_php_interpreter.png new file mode 100644 index 0000000000000000000000000000000000000000..68087ebc868eef82979bcf87c3cc2e0f36cf3ca3 --- /dev/null +++ b/docs/files/screenshots/settings_php_interpreter.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e8cfdca2de5e33e393b1092f7dd4ef88225f04769470b8c018e0f280a5d51a1 +size 152483 diff --git a/docs/files/screenshots/settings_php_interpreter_docker.png b/docs/files/screenshots/settings_php_interpreter_docker.png new file mode 100644 index 0000000000000000000000000000000000000000..9e138fe75367a28a6f2d59ac4810b47f0e465751 --- /dev/null +++ b/docs/files/screenshots/settings_php_interpreter_docker.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9bf7ae29dfa28cb13fa62d2dd8b2d4e075ba6f4355178cfc032f0f3e086179dd +size 26615 diff --git a/docs/files/screenshots/settings_php_interpreter_new.png b/docs/files/screenshots/settings_php_interpreter_new.png new file mode 100644 index 0000000000000000000000000000000000000000..b8e7ebc6c93f0939a8ab5ea5807eb6d9574d243d --- /dev/null +++ b/docs/files/screenshots/settings_php_interpreter_new.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:206ac08b076663050c2f5f354d7f033ad34c3c8df46e5ae013f8b1a93b88699e +size 55794 diff --git a/docs/files/screenshots/settings_php_test_coverage_view.png b/docs/files/screenshots/settings_php_test_coverage_view.png new file mode 100644 index 0000000000000000000000000000000000000000..d5a66263a53ee8fdfc5153cca927a46f1b386d4a --- /dev/null +++ b/docs/files/screenshots/settings_php_test_coverage_view.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0504d8ae1bd888d8001ec37732b794289b8a04d6b86de389177f815b25b3583 +size 143450 diff --git a/docs/files/screenshots/settings_php_test_execution.png b/docs/files/screenshots/settings_php_test_execution.png new file mode 100644 index 0000000000000000000000000000000000000000..1b42e8f837d48f78a1a7dfea549399b440fae457 --- /dev/null +++ b/docs/files/screenshots/settings_php_test_execution.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0c9808b10b2602966a61414b85c0fed554f414b1f7d617ff76aec383c26ec45 +size 16529 diff --git a/docs/files/screenshots/settings_php_test_framework_new.png b/docs/files/screenshots/settings_php_test_framework_new.png new file mode 100644 index 0000000000000000000000000000000000000000..0ae69d6d2d194dc5b34f0dd8d415fe7d034f682b --- /dev/null +++ b/docs/files/screenshots/settings_php_test_framework_new.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e62ad03fa7d38e43ecdc36864e81c14f7ba6e4cb861fd6a54ae2ccfb12439642 +size 89753 diff --git a/docs/files/screenshots/settings_php_test_framework_new_config.png b/docs/files/screenshots/settings_php_test_framework_new_config.png new file mode 100644 index 0000000000000000000000000000000000000000..620d756acf8b13819bf5ee9a6b67968fe5d9e5e1 --- /dev/null +++ b/docs/files/screenshots/settings_php_test_framework_new_config.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8af0ae971bc0c8c452e09046ff020fb7b24c9499bd8170200a40cea69de06a5e +size 16237 diff --git a/docs/new-features.md b/docs/new-features.md index 14182c57d7d45ee10fe55c3e50ae2438ac4a2e0e..3a0392c6df103a11edc7e05ebe4e847a4ea329bb 100644 --- a/docs/new-features.md +++ b/docs/new-features.md @@ -1,6 +1,14 @@ -# New in version 2021.12.15: +# New in version 2022.4.22: -------- -- [](dev_tools/index.md) +- [Debugging](dev_tools/debug.html) - > __ + > How to debug within your IDE + +- [Host setup](dev_tools/host.html) + + > Host configuration + +- [Testing](dev_tools/test.html) + + > All testing tools including code coverage diff --git a/docs/versions.txt b/docs/versions.txt index 2d4f47cf03a4d75a0af713bbeb4d0dbb765aff97..21c84a486ed99811748b2afbc9614c6cf7f9e85d 100644 --- a/docs/versions.txt +++ b/docs/versions.txt @@ -14,4 +14,5 @@ {"version":"2021.3.4","pages":["index.md", "how-to-write-docs.md", "new-features.md", "overview.md", "ansible/index.md", "ansible/plugins/drush/index.md", "ansible/plugins/fluentd/index.md", "ansible/plugins/gitlab/index.md", "ansible/plugins/jiffybox/index.md", "ansible/plugins/serverdensity/index.md", "ansible/plugins/uptime/index.md", "ansible/roles/alerta/index.md", "ansible/roles/almond/index.md", "ansible/roles/apache/index.md", "ansible/roles/aptproxy/index.md", "ansible/roles/artifactory/index.md", "ansible/roles/auditbeat/index.md", "ansible/roles/borgbackup/index.md", "ansible/roles/camunda/index.md", "ansible/roles/cloud/index.md", "ansible/roles/common/index.md", "ansible/roles/commonauth/index.md", "ansible/roles/commonconnect/index.md", "ansible/roles/commonkeys/index.md", "ansible/roles/compass/index.md", "ansible/roles/composer/index.md", "ansible/roles/discourse/index.md", "ansible/roles/docker/index.md", "ansible/roles/drupal/index.md", "ansible/roles/drupal-cli/index.md", "ansible/roles/drupalconsole/index.md", "ansible/roles/drush/index.md", "ansible/roles/elastalert/index.md", "ansible/roles/elasticsearch/index.md", "ansible/roles/fail2ban/index.md", "ansible/roles/fluentd/index.md", "ansible/roles/fluentd-client/index.md", "ansible/roles/gcloud/index.md", "ansible/roles/gitlab/index.md", "ansible/roles/gitlab-client/index.md", "ansible/roles/gitlab-runner/index.md", "ansible/roles/golang/index.md", "ansible/roles/haproxy/index.md", "ansible/roles/heartbeat/index.md", "ansible/roles/home-assistant/index.md", "ansible/roles/jailkit/index.md", "ansible/roles/java/index.md", "ansible/roles/keycloak/index.md", "ansible/roles/kibana/index.md", "ansible/roles/letsencrypt/index.md", "ansible/roles/mailhog/index.md", "ansible/roles/matomo/index.md", "ansible/roles/matterbridge/index.md", "ansible/roles/memcache/index.md", "ansible/roles/mongodb/index.md", "ansible/roles/mysql/index.md", "ansible/roles/mysql-client/index.md", "ansible/roles/netdata/index.md", "ansible/roles/nextcloud/index.md", "ansible/roles/nginx/index.md", "ansible/roles/nodejs/index.md", "ansible/roles/openphoto/index.md", "ansible/roles/oracle/index.md", "ansible/roles/owncloud/index.md", "ansible/roles/packetbeat/index.md", "ansible/roles/photoprism/index.md", "ansible/roles/php/index.md", "ansible/roles/plantuml/index.md", "ansible/roles/radis/index.md", "ansible/roles/s3/index.md", "ansible/roles/satis/index.md", "ansible/roles/serverdensity/index.md", "ansible/roles/sftp/index.md", "ansible/roles/spideroak/index.md", "ansible/roles/suitecrm/index.md", "ansible/roles/svnserver/index.md", "ansible/roles/tomcat/index.md", "ansible/roles/uptime/index.md", "ansible/roles/user-management/index.md", "ansible/roles/varnish/index.md", "ansible/roles/virtualbox/index.md", "ansible/roles/vpn/index.md", "ansible/roles/wkhtmltopdf/index.md", "ansible/roles/youtrack/index.md", "ansible/roles/zabbix_agent/index.md", "ansible/roles/zammad/index.md", "ansible/wiki/index.md", "ansible/wiki/attacks.md", "ansible/wiki/configure-crontabs.md", "ansible/wiki/desaster-recovery.md", "ansible/wiki/drupal-apache-update.md", "ansible/wiki/drupal-deployment.md", "ansible/wiki/drush-fetch-aliases.md", "ansible/wiki/firewall.md", "ansible/wiki/gitlab-ci-configuration.md", "ansible/wiki/gitlab-ci-introduction.md", "ansible/wiki/gitlab-ci-prerequisites.md", "ansible/wiki/haproxy-custom-blacklists.md", "ansible/wiki/haproxy-quick-update.md", "ansible/wiki/letsencrypt.md", "ansible/wiki/resources.md", "ansible/wiki/swapfile.md", "ansible/wiki/user-add-new.md", "ansible/wiki/user-set-password.md", "ansible/wiki/varnish-quick-update.md", "ansible/wiki/backup/backup-google.md", "ansible/wiki/backup/backup-spideroak.md", "ansible/wiki/backup/backup.md", "ansible/wiki/backup/introduction.md", "ansible/wiki/backup/restore-google.md", "ansible/wiki/backup/restore-spideroak.md", "ansible/wiki/backup/restore.md", "ansible/wiki/elk/fluentd.md", "ansible/wiki/elk/introduction.md", "ansible/wiki/elk/kibana.md", "ansible/wiki/elk/re-indexing.md", "ansible/wiki/hosts/add.md", "ansible/wiki/hosts/jiffybox.md", "ansible/wiki/hosts/prevent-reboot.md", "ansible/wiki/inventory/add.md", "ansible/wiki/inventory/chatops.md", "ansible/wiki/inventory/pipelines.md", "ansible/wiki/monitoring/alerts-elk.md", "ansible/wiki/monitoring/alerts-netdata.md", "ansible/wiki/monitoring/alerts-uptime.md", "ansible/wiki/monitoring/alerts.md", "ansible/wiki/monitoring/introduction.md", "ansible/wiki/monitoring/monitoring.md", "ansible/wiki/openssl/csr.md", "ansible/wiki/tips/signed-git-commits.md", "composer/index.md", "composer/library/composer-json-utils/index.md", "composer/library/traefik/index.md", "composer/plugin/ahoy/index.md", "composer/plugin/b4d/index.md", "composer/plugin/d4d/index.md", "composer/plugin/d8-sass-theme/index.md", "composer/plugin/d8-scaffold/index.md", "composer/plugin/d9-scaffold/index.md", "composer/plugin/dorgflow/index.md", "composer/plugin/drupal-dev-environment/index.md", "composer/plugin/drupal-environment/index.md", "composer/project/d8/index.md", "composer/project/d8-commerce/index.md", "composer/project/d8-commerce-demo/index.md", "composer/project/d9/index.md", "devops/alm/alm.md", "devops/alm/hosting_maintain.md", "devops/alm/tools.md", "docker/index.md", "docker/ansible/index.md", "docker/gitlab-drupal-ci/index.md", "docker/gitlab-drupal-ci/changelog.md", "docker/l3d/index.md", "docker/l3d/changelog.md", "docker/l3d/drupal.md", "docker/maven-build/index.md", "docker/node/index.md", "docker/node/gulp-sass.md", "gitlab/index.md", "gitlab/ansible/index.md", "gitlab/composer/index.md", "gitlab/drupal/index.md"]} {"version":"2021.3.4","pages":["index.md", "how-to-write-docs.md", "new-features.md", "overview.md", "ansible/index.md", "ansible/plugins/drush/index.md", "ansible/plugins/fluentd/index.md", "ansible/plugins/gitlab/index.md", "ansible/plugins/jiffybox/index.md", "ansible/plugins/serverdensity/index.md", "ansible/plugins/uptime/index.md", "ansible/roles/alerta/index.md", "ansible/roles/almond/index.md", "ansible/roles/apache/index.md", "ansible/roles/aptproxy/index.md", "ansible/roles/artifactory/index.md", "ansible/roles/auditbeat/index.md", "ansible/roles/borgbackup/index.md", "ansible/roles/camunda/index.md", "ansible/roles/cloud/index.md", "ansible/roles/common/index.md", "ansible/roles/commonauth/index.md", "ansible/roles/commonconnect/index.md", "ansible/roles/commonkeys/index.md", "ansible/roles/compass/index.md", "ansible/roles/composer/index.md", "ansible/roles/discourse/index.md", "ansible/roles/docker/index.md", "ansible/roles/drupal/index.md", "ansible/roles/drupal-cli/index.md", "ansible/roles/drupalconsole/index.md", "ansible/roles/drush/index.md", "ansible/roles/elastalert/index.md", "ansible/roles/elasticsearch/index.md", "ansible/roles/fail2ban/index.md", "ansible/roles/fluentd/index.md", "ansible/roles/fluentd-client/index.md", "ansible/roles/gcloud/index.md", "ansible/roles/gitlab/index.md", "ansible/roles/gitlab-client/index.md", "ansible/roles/gitlab-runner/index.md", "ansible/roles/golang/index.md", "ansible/roles/haproxy/index.md", "ansible/roles/heartbeat/index.md", "ansible/roles/home-assistant/index.md", "ansible/roles/jailkit/index.md", "ansible/roles/java/index.md", "ansible/roles/keycloak/index.md", "ansible/roles/kibana/index.md", "ansible/roles/letsencrypt/index.md", "ansible/roles/mailhog/index.md", "ansible/roles/matomo/index.md", "ansible/roles/matterbridge/index.md", "ansible/roles/memcache/index.md", "ansible/roles/mongodb/index.md", "ansible/roles/mysql/index.md", "ansible/roles/mysql-client/index.md", "ansible/roles/netdata/index.md", "ansible/roles/nextcloud/index.md", "ansible/roles/nginx/index.md", "ansible/roles/nodejs/index.md", "ansible/roles/openphoto/index.md", "ansible/roles/oracle/index.md", "ansible/roles/owncloud/index.md", "ansible/roles/packetbeat/index.md", "ansible/roles/photoprism/index.md", "ansible/roles/php/index.md", "ansible/roles/plantuml/index.md", "ansible/roles/radis/index.md", "ansible/roles/s3/index.md", "ansible/roles/satis/index.md", "ansible/roles/serverdensity/index.md", "ansible/roles/sftp/index.md", "ansible/roles/spideroak/index.md", "ansible/roles/suitecrm/index.md", "ansible/roles/svnserver/index.md", "ansible/roles/tomcat/index.md", "ansible/roles/uptime/index.md", "ansible/roles/user-management/index.md", "ansible/roles/varnish/index.md", "ansible/roles/virtualbox/index.md", "ansible/roles/vpn/index.md", "ansible/roles/wkhtmltopdf/index.md", "ansible/roles/youtrack/index.md", "ansible/roles/zabbix_agent/index.md", "ansible/roles/zammad/index.md", "ansible/wiki/index.md", "ansible/wiki/attacks.md", "ansible/wiki/configure-crontabs.md", "ansible/wiki/desaster-recovery.md", "ansible/wiki/drupal-apache-update.md", "ansible/wiki/drupal-deployment.md", "ansible/wiki/drush-fetch-aliases.md", "ansible/wiki/firewall.md", "ansible/wiki/gitlab-ci-configuration.md", "ansible/wiki/gitlab-ci-introduction.md", "ansible/wiki/gitlab-ci-prerequisites.md", "ansible/wiki/haproxy-custom-blacklists.md", "ansible/wiki/haproxy-quick-update.md", "ansible/wiki/letsencrypt.md", "ansible/wiki/resources.md", "ansible/wiki/swapfile.md", "ansible/wiki/user-add-new.md", "ansible/wiki/user-set-password.md", "ansible/wiki/varnish-quick-update.md", "ansible/wiki/backup/backup-google.md", "ansible/wiki/backup/backup-spideroak.md", "ansible/wiki/backup/backup.md", "ansible/wiki/backup/introduction.md", "ansible/wiki/backup/restore-google.md", "ansible/wiki/backup/restore-spideroak.md", "ansible/wiki/backup/restore.md", "ansible/wiki/elk/fluentd.md", "ansible/wiki/elk/introduction.md", "ansible/wiki/elk/kibana.md", "ansible/wiki/elk/re-indexing.md", "ansible/wiki/hosts/add.md", "ansible/wiki/hosts/jiffybox.md", "ansible/wiki/hosts/prevent-reboot.md", "ansible/wiki/inventory/add.md", "ansible/wiki/inventory/chatops.md", "ansible/wiki/inventory/pipelines.md", "ansible/wiki/monitoring/alerts-elk.md", "ansible/wiki/monitoring/alerts-netdata.md", "ansible/wiki/monitoring/alerts-uptime.md", "ansible/wiki/monitoring/alerts.md", "ansible/wiki/monitoring/introduction.md", "ansible/wiki/monitoring/monitoring.md", "ansible/wiki/openssl/csr.md", "ansible/wiki/tips/signed-git-commits.md", "composer/index.md", "composer/library/composer-json-utils/index.md", "composer/library/traefik/index.md", "composer/plugin/ahoy/index.md", "composer/plugin/b4d/index.md", "composer/plugin/d4d/index.md", "composer/plugin/d8-sass-theme/index.md", "composer/plugin/d8-scaffold/index.md", "composer/plugin/d9-scaffold/index.md", "composer/plugin/dorgflow/index.md", "composer/plugin/drupal-dev-environment/index.md", "composer/plugin/drupal-environment/index.md", "composer/project/d8/index.md", "composer/project/d8-commerce/index.md", "composer/project/d8-commerce-demo/index.md", "composer/project/d9/index.md", "devops/alm/alm.md", "devops/alm/hosting_maintain.md", "devops/alm/tools.md", "docker/index.md", "docker/ansible/index.md", "docker/gitlab-drupal-ci/index.md", "docker/gitlab-drupal-ci/changelog.md", "docker/l3d/index.md", "docker/l3d/changelog.md", "docker/l3d/drupal.md", "docker/maven-build/index.md", "docker/node/index.md", "docker/node/gulp-sass.md", "gitlab/index.md", "gitlab/ansible/index.md", "gitlab/composer/index.md", "gitlab/drupal/index.md"]} -{"version":"2021.12.15","pages":["index.md", "how-to-write-docs.md", "new-features.md", "overview.md", "ansible/index.md", "ansible/plugins/drush/index.md", "ansible/plugins/fluentd/index.md", "ansible/plugins/gitlab/index.md", "ansible/plugins/jiffybox/index.md", "ansible/plugins/serverdensity/index.md", "ansible/plugins/uptime/index.md", "ansible/roles/alerta/index.md", "ansible/roles/almond/index.md", "ansible/roles/apache/index.md", "ansible/roles/aptproxy/index.md", "ansible/roles/artifactory/index.md", "ansible/roles/auditbeat/index.md", "ansible/roles/borgbackup/index.md", "ansible/roles/camunda/index.md", "ansible/roles/cloud/index.md", "ansible/roles/common/index.md", "ansible/roles/commonauth/index.md", "ansible/roles/commonconnect/index.md", "ansible/roles/commonkeys/index.md", "ansible/roles/compass/index.md", "ansible/roles/composer/index.md", "ansible/roles/discourse/index.md", "ansible/roles/docker/index.md", "ansible/roles/drupal/index.md", "ansible/roles/drupal-cli/index.md", "ansible/roles/drupalconsole/index.md", "ansible/roles/drush/index.md", "ansible/roles/elastalert/index.md", "ansible/roles/elasticsearch/index.md", "ansible/roles/fail2ban/index.md", "ansible/roles/fluentd/index.md", "ansible/roles/fluentd-client/index.md", "ansible/roles/gcloud/index.md", "ansible/roles/gitlab/index.md", "ansible/roles/gitlab-client/index.md", "ansible/roles/gitlab-runner/index.md", "ansible/roles/golang/index.md", "ansible/roles/haproxy/index.md", "ansible/roles/heartbeat/index.md", "ansible/roles/home-assistant/index.md", "ansible/roles/jailkit/index.md", "ansible/roles/java/index.md", "ansible/roles/keycloak/index.md", "ansible/roles/kibana/index.md", "ansible/roles/letsencrypt/index.md", "ansible/roles/mailhog/index.md", "ansible/roles/matomo/index.md", "ansible/roles/matterbridge/index.md", "ansible/roles/memcache/index.md", "ansible/roles/mongodb/index.md", "ansible/roles/mysql/index.md", "ansible/roles/mysql-client/index.md", "ansible/roles/netdata/index.md", "ansible/roles/nextcloud/index.md", "ansible/roles/nginx/index.md", "ansible/roles/nodejs/index.md", "ansible/roles/openphoto/index.md", "ansible/roles/oracle/index.md", "ansible/roles/owncloud/index.md", "ansible/roles/packetbeat/index.md", "ansible/roles/photoprism/index.md", "ansible/roles/php/index.md", "ansible/roles/plantuml/index.md", "ansible/roles/radis/index.md", "ansible/roles/s3/index.md", "ansible/roles/satis/index.md", "ansible/roles/serverdensity/index.md", "ansible/roles/sftp/index.md", "ansible/roles/spideroak/index.md", "ansible/roles/suitecrm/index.md", "ansible/roles/svnserver/index.md", "ansible/roles/tomcat/index.md", "ansible/roles/uptime/index.md", "ansible/roles/user-management/index.md", "ansible/roles/varnish/index.md", "ansible/roles/virtualbox/index.md", "ansible/roles/vpn/index.md", "ansible/roles/wkhtmltopdf/index.md", "ansible/roles/youtrack/index.md", "ansible/roles/zabbix_agent/index.md", "ansible/roles/zammad/index.md", "ansible/wiki/index.md", "ansible/wiki/attacks.md", "ansible/wiki/configure-crontabs.md", "ansible/wiki/desaster-recovery.md", "ansible/wiki/drupal-apache-update.md", "ansible/wiki/drupal-deployment.md", "ansible/wiki/drush-fetch-aliases.md", "ansible/wiki/firewall.md", "ansible/wiki/gitlab-ci-configuration.md", "ansible/wiki/gitlab-ci-introduction.md", "ansible/wiki/gitlab-ci-prerequisites.md", "ansible/wiki/haproxy-custom-blacklists.md", "ansible/wiki/haproxy-quick-update.md", "ansible/wiki/letsencrypt.md", "ansible/wiki/resources.md", "ansible/wiki/swapfile.md", "ansible/wiki/user-add-new.md", "ansible/wiki/user-set-password.md", "ansible/wiki/varnish-quick-update.md", "ansible/wiki/backup/backup-google.md", "ansible/wiki/backup/backup-spideroak.md", "ansible/wiki/backup/backup.md", "ansible/wiki/backup/introduction.md", "ansible/wiki/backup/restore-google.md", "ansible/wiki/backup/restore-spideroak.md", "ansible/wiki/backup/restore.md", "ansible/wiki/elk/fluentd.md", "ansible/wiki/elk/introduction.md", "ansible/wiki/elk/kibana.md", "ansible/wiki/elk/re-indexing.md", "ansible/wiki/hosts/add.md", "ansible/wiki/hosts/jiffybox.md", "ansible/wiki/hosts/prevent-reboot.md", "ansible/wiki/inventory/add.md", "ansible/wiki/inventory/chatops.md", "ansible/wiki/inventory/pipelines.md", "ansible/wiki/monitoring/alerts-elk.md", "ansible/wiki/monitoring/alerts-netdata.md", "ansible/wiki/monitoring/alerts-uptime.md", "ansible/wiki/monitoring/alerts.md", "ansible/wiki/monitoring/introduction.md", "ansible/wiki/monitoring/monitoring.md", "ansible/wiki/openssl/csr.md", "ansible/wiki/tips/signed-git-commits.md", "composer/index.md", "composer/library/composer-json-utils/index.md", "composer/library/traefik/index.md", "composer/plugin/ahoy/index.md", "composer/plugin/b4d/index.md", "composer/plugin/d4d/index.md", "composer/plugin/d8-sass-theme/index.md", "composer/plugin/d8-scaffold/index.md", "composer/plugin/d9-scaffold/index.md", "composer/plugin/dorgflow/index.md", "composer/plugin/drupal-dev-environment/index.md", "composer/plugin/drupal-environment/index.md", "composer/project/d8/index.md", "composer/project/d8-commerce/index.md", "composer/project/d8-commerce-demo/index.md", "composer/project/d9/index.md", "dev_tools/index.md", "devops/alm/alm.md", "devops/alm/hosting_maintain.md", "devops/alm/tools.md", "docker/index.md", "docker/ansible/index.md", "docker/gitlab-drupal-ci/index.md", "docker/gitlab-drupal-ci/changelog.md", "docker/l3d/index.md", "docker/l3d/changelog.md", "docker/l3d/drupal.md", "docker/maven-build/index.md", "docker/node/index.md", "docker/node/gulp-sass.md", "gitlab/index.md", "gitlab/ansible/index.md", "gitlab/composer/index.md", "gitlab/drupal/index.md"]} \ No newline at end of file +{"version":"2021.12.15","pages":["index.md", "how-to-write-docs.md", "new-features.md", "overview.md", "ansible/index.md", "ansible/plugins/drush/index.md", "ansible/plugins/fluentd/index.md", "ansible/plugins/gitlab/index.md", "ansible/plugins/jiffybox/index.md", "ansible/plugins/serverdensity/index.md", "ansible/plugins/uptime/index.md", "ansible/roles/alerta/index.md", "ansible/roles/almond/index.md", "ansible/roles/apache/index.md", "ansible/roles/aptproxy/index.md", "ansible/roles/artifactory/index.md", "ansible/roles/auditbeat/index.md", "ansible/roles/borgbackup/index.md", "ansible/roles/camunda/index.md", "ansible/roles/cloud/index.md", "ansible/roles/common/index.md", "ansible/roles/commonauth/index.md", "ansible/roles/commonconnect/index.md", "ansible/roles/commonkeys/index.md", "ansible/roles/compass/index.md", "ansible/roles/composer/index.md", "ansible/roles/discourse/index.md", "ansible/roles/docker/index.md", "ansible/roles/drupal/index.md", "ansible/roles/drupal-cli/index.md", "ansible/roles/drupalconsole/index.md", "ansible/roles/drush/index.md", "ansible/roles/elastalert/index.md", "ansible/roles/elasticsearch/index.md", "ansible/roles/fail2ban/index.md", "ansible/roles/fluentd/index.md", "ansible/roles/fluentd-client/index.md", "ansible/roles/gcloud/index.md", "ansible/roles/gitlab/index.md", "ansible/roles/gitlab-client/index.md", "ansible/roles/gitlab-runner/index.md", "ansible/roles/golang/index.md", "ansible/roles/haproxy/index.md", "ansible/roles/heartbeat/index.md", "ansible/roles/home-assistant/index.md", "ansible/roles/jailkit/index.md", "ansible/roles/java/index.md", "ansible/roles/keycloak/index.md", "ansible/roles/kibana/index.md", "ansible/roles/letsencrypt/index.md", "ansible/roles/mailhog/index.md", "ansible/roles/matomo/index.md", "ansible/roles/matterbridge/index.md", "ansible/roles/memcache/index.md", "ansible/roles/mongodb/index.md", "ansible/roles/mysql/index.md", "ansible/roles/mysql-client/index.md", "ansible/roles/netdata/index.md", "ansible/roles/nextcloud/index.md", "ansible/roles/nginx/index.md", "ansible/roles/nodejs/index.md", "ansible/roles/openphoto/index.md", "ansible/roles/oracle/index.md", "ansible/roles/owncloud/index.md", "ansible/roles/packetbeat/index.md", "ansible/roles/photoprism/index.md", "ansible/roles/php/index.md", "ansible/roles/plantuml/index.md", "ansible/roles/radis/index.md", "ansible/roles/s3/index.md", "ansible/roles/satis/index.md", "ansible/roles/serverdensity/index.md", "ansible/roles/sftp/index.md", "ansible/roles/spideroak/index.md", "ansible/roles/suitecrm/index.md", "ansible/roles/svnserver/index.md", "ansible/roles/tomcat/index.md", "ansible/roles/uptime/index.md", "ansible/roles/user-management/index.md", "ansible/roles/varnish/index.md", "ansible/roles/virtualbox/index.md", "ansible/roles/vpn/index.md", "ansible/roles/wkhtmltopdf/index.md", "ansible/roles/youtrack/index.md", "ansible/roles/zabbix_agent/index.md", "ansible/roles/zammad/index.md", "ansible/wiki/index.md", "ansible/wiki/attacks.md", "ansible/wiki/configure-crontabs.md", "ansible/wiki/desaster-recovery.md", "ansible/wiki/drupal-apache-update.md", "ansible/wiki/drupal-deployment.md", "ansible/wiki/drush-fetch-aliases.md", "ansible/wiki/firewall.md", "ansible/wiki/gitlab-ci-configuration.md", "ansible/wiki/gitlab-ci-introduction.md", "ansible/wiki/gitlab-ci-prerequisites.md", "ansible/wiki/haproxy-custom-blacklists.md", "ansible/wiki/haproxy-quick-update.md", "ansible/wiki/letsencrypt.md", "ansible/wiki/resources.md", "ansible/wiki/swapfile.md", "ansible/wiki/user-add-new.md", "ansible/wiki/user-set-password.md", "ansible/wiki/varnish-quick-update.md", "ansible/wiki/backup/backup-google.md", "ansible/wiki/backup/backup-spideroak.md", "ansible/wiki/backup/backup.md", "ansible/wiki/backup/introduction.md", "ansible/wiki/backup/restore-google.md", "ansible/wiki/backup/restore-spideroak.md", "ansible/wiki/backup/restore.md", "ansible/wiki/elk/fluentd.md", "ansible/wiki/elk/introduction.md", "ansible/wiki/elk/kibana.md", "ansible/wiki/elk/re-indexing.md", "ansible/wiki/hosts/add.md", "ansible/wiki/hosts/jiffybox.md", "ansible/wiki/hosts/prevent-reboot.md", "ansible/wiki/inventory/add.md", "ansible/wiki/inventory/chatops.md", "ansible/wiki/inventory/pipelines.md", "ansible/wiki/monitoring/alerts-elk.md", "ansible/wiki/monitoring/alerts-netdata.md", "ansible/wiki/monitoring/alerts-uptime.md", "ansible/wiki/monitoring/alerts.md", "ansible/wiki/monitoring/introduction.md", "ansible/wiki/monitoring/monitoring.md", "ansible/wiki/openssl/csr.md", "ansible/wiki/tips/signed-git-commits.md", "composer/index.md", "composer/library/composer-json-utils/index.md", "composer/library/traefik/index.md", "composer/plugin/ahoy/index.md", "composer/plugin/b4d/index.md", "composer/plugin/d4d/index.md", "composer/plugin/d8-sass-theme/index.md", "composer/plugin/d8-scaffold/index.md", "composer/plugin/d9-scaffold/index.md", "composer/plugin/dorgflow/index.md", "composer/plugin/drupal-dev-environment/index.md", "composer/plugin/drupal-environment/index.md", "composer/project/d8/index.md", "composer/project/d8-commerce/index.md", "composer/project/d8-commerce-demo/index.md", "composer/project/d9/index.md", "dev_tools/index.md", "devops/alm/alm.md", "devops/alm/hosting_maintain.md", "devops/alm/tools.md", "docker/index.md", "docker/ansible/index.md", "docker/gitlab-drupal-ci/index.md", "docker/gitlab-drupal-ci/changelog.md", "docker/l3d/index.md", "docker/l3d/changelog.md", "docker/l3d/drupal.md", "docker/maven-build/index.md", "docker/node/index.md", "docker/node/gulp-sass.md", "gitlab/index.md", "gitlab/ansible/index.md", "gitlab/composer/index.md", "gitlab/drupal/index.md"]} +{"version":"2022.4.22","pages":["index.md", "how-to-write-docs.md", "new-features.md", "overview.md", "ansible/index.md", "ansible/plugins/drush/index.md", "ansible/plugins/fluentd/index.md", "ansible/plugins/gitlab/index.md", "ansible/plugins/jiffybox/index.md", "ansible/plugins/serverdensity/index.md", "ansible/plugins/uptime/index.md", "ansible/roles/alerta/index.md", "ansible/roles/almond/index.md", "ansible/roles/apache/index.md", "ansible/roles/aptproxy/index.md", "ansible/roles/artifactory/index.md", "ansible/roles/auditbeat/index.md", "ansible/roles/borgbackup/index.md", "ansible/roles/camunda/index.md", "ansible/roles/cloud/index.md", "ansible/roles/common/index.md", "ansible/roles/commonauth/index.md", "ansible/roles/commonconnect/index.md", "ansible/roles/commonkeys/index.md", "ansible/roles/compass/index.md", "ansible/roles/composer/index.md", "ansible/roles/discourse/index.md", "ansible/roles/docker/index.md", "ansible/roles/drupal/index.md", "ansible/roles/drupal-cli/index.md", "ansible/roles/drupalconsole/index.md", "ansible/roles/drush/index.md", "ansible/roles/elastalert/index.md", "ansible/roles/elasticsearch/index.md", "ansible/roles/fail2ban/index.md", "ansible/roles/fluentd/index.md", "ansible/roles/fluentd-client/index.md", "ansible/roles/gcloud/index.md", "ansible/roles/gitlab/index.md", "ansible/roles/gitlab-client/index.md", "ansible/roles/gitlab-runner/index.md", "ansible/roles/golang/index.md", "ansible/roles/haproxy/index.md", "ansible/roles/heartbeat/index.md", "ansible/roles/home-assistant/index.md", "ansible/roles/jailkit/index.md", "ansible/roles/java/index.md", "ansible/roles/keycloak/index.md", "ansible/roles/kibana/index.md", "ansible/roles/letsencrypt/index.md", "ansible/roles/mailhog/index.md", "ansible/roles/matomo/index.md", "ansible/roles/matterbridge/index.md", "ansible/roles/memcache/index.md", "ansible/roles/mongodb/index.md", "ansible/roles/mysql/index.md", "ansible/roles/mysql-client/index.md", "ansible/roles/netdata/index.md", "ansible/roles/nextcloud/index.md", "ansible/roles/nginx/index.md", "ansible/roles/nodejs/index.md", "ansible/roles/openphoto/index.md", "ansible/roles/oracle/index.md", "ansible/roles/owncloud/index.md", "ansible/roles/packetbeat/index.md", "ansible/roles/photoprism/index.md", "ansible/roles/php/index.md", "ansible/roles/plantuml/index.md", "ansible/roles/radis/index.md", "ansible/roles/s3/index.md", "ansible/roles/satis/index.md", "ansible/roles/serverdensity/index.md", "ansible/roles/sftp/index.md", "ansible/roles/spideroak/index.md", "ansible/roles/suitecrm/index.md", "ansible/roles/svnserver/index.md", "ansible/roles/tomcat/index.md", "ansible/roles/uptime/index.md", "ansible/roles/user-management/index.md", "ansible/roles/varnish/index.md", "ansible/roles/virtualbox/index.md", "ansible/roles/vpn/index.md", "ansible/roles/wkhtmltopdf/index.md", "ansible/roles/youtrack/index.md", "ansible/roles/zabbix_agent/index.md", "ansible/roles/zammad/index.md", "ansible/wiki/index.md", "ansible/wiki/attacks.md", "ansible/wiki/configure-crontabs.md", "ansible/wiki/desaster-recovery.md", "ansible/wiki/drupal-apache-update.md", "ansible/wiki/drupal-deployment.md", "ansible/wiki/drush-fetch-aliases.md", "ansible/wiki/firewall.md", "ansible/wiki/gitlab-ci-configuration.md", "ansible/wiki/gitlab-ci-introduction.md", "ansible/wiki/gitlab-ci-prerequisites.md", "ansible/wiki/haproxy-custom-blacklists.md", "ansible/wiki/haproxy-quick-update.md", "ansible/wiki/letsencrypt.md", "ansible/wiki/resources.md", "ansible/wiki/swapfile.md", "ansible/wiki/user-add-new.md", "ansible/wiki/user-set-password.md", "ansible/wiki/varnish-quick-update.md", "ansible/wiki/backup/backup-google.md", "ansible/wiki/backup/backup-spideroak.md", "ansible/wiki/backup/backup.md", "ansible/wiki/backup/introduction.md", "ansible/wiki/backup/restore-google.md", "ansible/wiki/backup/restore-spideroak.md", "ansible/wiki/backup/restore.md", "ansible/wiki/elk/fluentd.md", "ansible/wiki/elk/introduction.md", "ansible/wiki/elk/kibana.md", "ansible/wiki/elk/re-indexing.md", "ansible/wiki/hosts/add.md", "ansible/wiki/hosts/jiffybox.md", "ansible/wiki/hosts/prevent-reboot.md", "ansible/wiki/inventory/add.md", "ansible/wiki/inventory/chatops.md", "ansible/wiki/inventory/pipelines.md", "ansible/wiki/monitoring/alerts-elk.md", "ansible/wiki/monitoring/alerts-netdata.md", "ansible/wiki/monitoring/alerts-uptime.md", "ansible/wiki/monitoring/alerts.md", "ansible/wiki/monitoring/introduction.md", "ansible/wiki/monitoring/monitoring.md", "ansible/wiki/openssl/csr.md", "ansible/wiki/tips/signed-git-commits.md", "composer/index.md", "composer/library/composer-json-utils/index.md", "composer/library/traefik/index.md", "composer/plugin/ahoy/index.md", "composer/plugin/b4d/index.md", "composer/plugin/d4d/index.md", "composer/plugin/d8-sass-theme/index.md", "composer/plugin/d8-scaffold/index.md", "composer/plugin/d9-scaffold/index.md", "composer/plugin/dorgflow/index.md", "composer/plugin/drupal-dev-environment/index.md", "composer/plugin/drupal-environment/index.md", "composer/project/d8/index.md", "composer/project/d8-commerce/index.md", "composer/project/d8-commerce-demo/index.md", "composer/project/d9/index.md", "dev_tools/index.md", "dev_tools/debug.md", "dev_tools/host.md", "dev_tools/test.md", "devops/alm/alm.md", "devops/alm/hosting_maintain.md", "devops/alm/tools.md", "docker/index.md", "docker/ansible/index.md", "docker/gitlab-drupal-ci/index.md", "docker/gitlab-drupal-ci/changelog.md", "docker/l3d/index.md", "docker/l3d/changelog.md", "docker/l3d/drupal.md", "docker/maven-build/index.md", "docker/node/index.md", "docker/node/gulp-sass.md", "gitlab/index.md", "gitlab/ansible/index.md", "gitlab/composer/index.md", "gitlab/drupal/index.md"]} \ No newline at end of file