Merge pull request #491 from cytopia/repository-upgrade

Release preparation
This commit is contained in:
cytopia 2019-02-05 17:25:43 +01:00 committed by GitHub
commit ddf1bbb3b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 1075 additions and 848 deletions

File diff suppressed because one or more lines are too long

View File

@ -394,7 +394,7 @@ HTML;
$el['path'] = (version_compare(loadClass('Php')->getVersion(), '5.2', '<')) ? '/vendor/phpmyadmin-4.0/' : '/vendor/phppgadmin-5.6.0/'; $el['path'] = (version_compare(loadClass('Php')->getVersion(), '5.2', '<')) ? '/vendor/phpmyadmin-4.0/' : '/vendor/phppgadmin-5.6.0/';
} }
if ($el['path'] == '__ADMINER__') { if ($el['path'] == '__ADMINER__') {
$el['path'] = (version_compare(loadClass('Php')->getVersion(), '5.4', '<')) ? '/vendor/adminer-4.6.3-en.php' : '/vendor/adminer-4.7.0-en.php'; $el['path'] = (version_compare(loadClass('Php')->getVersion(), '5.4', '<')) ? '/vendor/adminer-4.6.3-en.php' : '/vendor/adminer-4.7.1-en.php';
} }
$target = isset($el['target']) ? 'target="'.$el['target'].'"' : ''; $target = isset($el['target']) ? 'target="'.$el['target'].'"' : '';

View File

@ -1,8 +1,12 @@
<!-- Add a name to your PR below --> <!-- Add a name to your PR below -->
# FEATURE_NAME # FEATURE_NAME
### Goal
<!-- What is the goal of this Pull request -->
<!-- What do you want to achieve? -->
#### DESCRIPTION
### DESCRIPTION
<!-- Enter a short description here --> <!-- Enter a short description here -->
<!-- Link to issues in case it fixes an issue --> <!-- Link to issues in case it fixes an issue -->

View File

@ -10,6 +10,33 @@ set -o pipefail
# https://stackoverflow.com/questions/16703647/why-curl-return-and-error-23-failed-writing-body # https://stackoverflow.com/questions/16703647/why-curl-return-and-error-23-failed-writing-body
# #
###
### Get current PHP version
###
printf "[TEST] Get PHP version"
# 1st Try
if ! PHP_VERSION="$( curl -sS localhost/index.php | tac | tac | grep -Eo 'PHP.*?\([.0-9]+' | grep -Eo '\([.0-9]+' | grep -Eo '[0-9]+\.[0-9]+' )"; then
# 2nd Try
sleep 1
if ! PHP_VERSION="$( curl -sS localhost/index.php | tac | tac | grep -Eo 'PHP.*?\([.0-9]+' | grep -Eo '\([.0-9]+' | grep -Eo '[0-9]+\.[0-9]+' )"; then
# 3rd Try
sleep 1
if ! PHP_VERSION="$( curl -sS localhost/index.php | tac | tac | grep -Eo 'PHP.*?\([.0-9]+' | grep -Eo '\([.0-9]+' | grep -Eo '[0-9]+\.[0-9]+' )"; then
printf "\r[FAIL] Get PHP version\n"
curl -sS localhost/index.php | tac | tac | grep -Eo 'PHP.*?\([.0-9]+' || true
exit 1
else
printf "\r[OK] Get PHP version (3 rounds): %s\n" "${PHP_VERSION}"
fi
else
printf "\r[OK] Get PHP version (2 rounds): %s\n" "${PHP_VERSION}"
fi
else
printf "\r[OK] Get PHP version (1 round): %s\n" "${PHP_VERSION}"
fi
### ###
### Retrieve URL for current Adminer version. ### Retrieve URL for current Adminer version.
@ -72,16 +99,16 @@ fi
printf "[TEST] Adminer MySQL login" printf "[TEST] Adminer MySQL login"
# 1st Try # 1st Try
if ! curl -sS "localhost${URL}?server=127.0.0.1&username=root" | tac | tac | grep -Eiq "Database.+Collation.+Tables"; then if ! curl -sS "localhost${URL}?server=mysql&username=root" | tac | tac | grep -Eiq "Database.+Collation.+Tables"; then
# 2nd Try # 2nd Try
sleep 1 sleep 1
if ! curl -sS "localhost${URL}?server=127.0.0.1&username=root" | tac | tac | grep -Eiq "Database.+Collation.+Tables"; then if ! curl -sS "localhost${URL}?server=mysql&username=root" | tac | tac | grep -Eiq "Database.+Collation.+Tables"; then
# 3rd Try # 3rd Try
sleep 1 sleep 1
if ! curl -sS "localhost${URL}?server=127.0.0.1&username=root" | tac | tac | grep -Eiq "Database.+Collation.+Tables"; then if ! curl -sS "localhost${URL}?server=mysql&username=root" | tac | tac | grep -Eiq "Database.+Collation.+Tables"; then
printf "\r[FAIL] Adminer MySQL login\n" printf "\r[FAIL] Adminer MySQL login\n"
curl -sS "localhost${URL}?server=127.0.0.1&username=root" || true curl -sS "localhost${URL}?server=mysql&username=root" || true
curl -sSI "localhost${URL}?server=127.0.0.1&username=root" || true curl -sSI "localhost${URL}?server=mysql&username=root" || true
exit 1 exit 1
else else
printf "\r[OK] Adminer MySQL login (3 rounds)\n" printf "\r[OK] Adminer MySQL login (3 rounds)\n"
@ -100,16 +127,16 @@ fi
printf "[TEST] Adminer PgSQL login" printf "[TEST] Adminer PgSQL login"
# 1st Try # 1st Try
if ! curl -sS "localhost${URL}?pgsql=127.0.0.1&username=postgres" | tac | tac | grep -Eiq "Database.+Collation.+Tables"; then if ! curl -sS "localhost${URL}?pgsql=pgsql&username=postgres" | tac | tac | grep -Eiq "Database.+Collation.+Tables"; then
# 2nd Try # 2nd Try
sleep 1 sleep 1
if ! curl -sS "localhost${URL}?pgsql=127.0.0.1&username=postgres" | tac | tac | grep -Eiq "Database.+Collation.+Tables"; then if ! curl -sS "localhost${URL}?pgsql=pgsql&username=postgres" | tac | tac | grep -Eiq "Database.+Collation.+Tables"; then
# 3rd Try # 3rd Try
sleep 1 sleep 1
if ! curl -sS "localhost${URL}?pgsql=127.0.0.1&username=postgres" | tac | tac | grep -Eiq "Database.+Collation.+Tables"; then if ! curl -sS "localhost${URL}?pgsql=pgsql&username=postgres" | tac | tac | grep -Eiq "Database.+Collation.+Tables"; then
printf "\r[FAIL] Adminer PgSQL login\n" printf "\r[FAIL] Adminer PgSQL login\n"
curl -sS "localhost${URL}?pgsql=127.0.0.1&username=postgres" || true curl -sS "localhost${URL}?pgsql=pgsql&username=postgres" || true
curl -sSI "localhost${URL}?pgsql=127.0.0.1&username=postgres" || true curl -sSI "localhost${URL}?pgsql=pgsql&username=postgres" || true
exit 1 exit 1
else else
printf "\r[OK] Adminer PgSQL login (3 rounds)\n" printf "\r[OK] Adminer PgSQL login (3 rounds)\n"
@ -125,19 +152,24 @@ fi
### ###
### Test Adminer MongoDB login ### Test Adminer MongoDB login
### ###
DISABLED_VERSIONS=("7.3")
if [[ ${DISABLED_VERSIONS[*]} =~ ${PHP_VERSION} ]]; then
echo "Skipping Adminer Mongo login test for PHP 7.3"
exit 0
fi
printf "[TEST] Adminer Mongo login" printf "[TEST] Adminer Mongo login"
# 1st Try # 1st Try
if ! curl -sS "localhost${URL}?mongo=127.0.0.1&username=" | tac | tac | grep -Eiq "Database.+Collation.+Tables"; then if ! curl -sS "localhost${URL}?mongo=mongo&username=" | tac | tac | grep -Eiq "Database.+Collation.+Tables"; then
# 2nd Try # 2nd Try
sleep 1 sleep 1
if ! curl -sS "localhost${URL}?mongo=127.0.0.1&username=" | tac | tac | grep -Eiq "Database.+Collation.+Tables"; then if ! curl -sS "localhost${URL}?mongo=mongo&username=" | tac | tac | grep -Eiq "Database.+Collation.+Tables"; then
# 3rd Try # 3rd Try
sleep 1 sleep 1
if ! curl -sS "localhost${URL}?mongo=127.0.0.1&username=" | tac | tac | grep -Eiq "Database.+Collation.+Tables"; then if ! curl -sS "localhost${URL}?mongo=mongo&username=" | tac | tac | grep -Eiq "Database.+Collation.+Tables"; then
printf "\r[FAIL] Adminer Mongo login\n" printf "\r[FAIL] Adminer Mongo login\n"
curl -sS "localhost${URL}?mongo=127.0.0.1&username=" || true curl -sS "localhost${URL}?mongo=mongo&username=" || true
curl -sSI "localhost${URL}?mongo=127.0.0.1&username=" || true curl -sSI "localhost${URL}?mongo=mongo&username=" || true
exit 1 exit 1
else else
printf "\r[OK] Adminer Mongo login (3 rounds)\n" printf "\r[OK] Adminer Mongo login (3 rounds)\n"

View File

@ -7,7 +7,7 @@ set -o pipefail
# There's currently an Issue with PHP 7.3, Xdebug and phpMyAdmin. It just segfaults, # There's currently an Issue with PHP 7.3, Xdebug and phpMyAdmin. It just segfaults,
# so I will remove it from the checks. # so I will remove it from the checks.
DISABLED_VERSIONS=("7.3") DISABLED_VERSIONS=("")
# #
# NOTE: Parsing curl to tac to circumnvent "failed writing body" # NOTE: Parsing curl to tac to circumnvent "failed writing body"

94
CHANGELOG.md Normal file
View File

@ -0,0 +1,94 @@
# Changelog
Make sure to have a look at [UPDATING](Updating.md) to see any required steps for updating
major versions.
## [unreleasd]
#### Changed
- Split Bind container into internal DNS and autoDNS: #248
- This fixes various issues with Docker Toolbox and DNS resolution: #119
## v1.0.0-alpha1 [unreleased]
#### Changed
- Use Docker volumes instead of directory mounts for stateful data (MySQL, PgSQL and MongoDB)
- This fixes various mount issues on Windows: #175 #382
- This improves general performance
## v0.15.0 [unreleased]
#### Added
- [CHANGELOG](CHANGELOG.md) by the standard of: https://keepachangelog.com
- [UPDATING](UPDATING.md) provides information how to update between major versions
- HTTP/2 support
- Reverse Proxy support
- Autostart scripts
- Allow to enable/disable PHP modules
- Intranet vendors
- PHPRedMin
- Mount options for volumes
- Docker Compose images:
- PHP 5.2
- PHP 5.3
- PHP 7.4
- Alpine images where possible
- Docker Compose overwrite images:
- Blackfire
- MailHog
- RabbitMQ
- Solr
- New binaries
- `blackfire`
- `dep` (Deployer)
- `drush6`
- `drush7`
- `drush8`
- `php-cs-fixer`
- `rsync`
- `unzip`
- `wkhtmltopdf`
- `zip`
- `zsh`
- New PHP modules
- `blackfire`
- `ffi`
- `ioncube`
- `oci8`
- `phalcon`
- `pdo_oci`
- `pdo_sqlsrv`
- `rdkafka`
- `sqlsrv`
- Framework documentation:
- Shopware CMS
- Presta Shop
- Photon CMS
- Codeignitor
- Typo3
- Craft CMS
- NodeJS Reverse proxy
- Sphinx documentation Reverse proxy
- GitHub Issue templates
- Discourse forum link: https://devilbox.discourse.group
#### Changed
- Use semantic versioning
- This allows for faster releases
- This allows for better visibility of breaking changes (note that breaking changes might still occur before release v1.0.0)
- Autologin for phpMyAdmin
- Autologin for phpPgAdmin
- Intranet to show vhost and vhost-gen overwrite config per vhost
- Allow to specify Redis startup arguments (e.g.: password)
- Fixed hostnames for all Docker container
- PHP-FPM workers changed from `dynamic` to `ondemand`
- Allow Apache to server underscore domains
#### Fixed
- break on errors in wrong vhost-gen overwrite
- XSS vulnerability in email display
- Various fixes in Documentation
- vhost-gen fixes

View File

@ -1,39 +1,82 @@
# Contributing # Contributing
There is quite a lot todo and planned. If you like to contribute, pick any of the below topics or contact me directly.
Contributors will be credited within the intranet and on the github page. **Abstract**
The Devilbox is currently being developed in my spare time and mostly reflects the features that I
am using for all the web projcets I have to handle. In order to better present it to the majority
of other software developers I do require support to cope with all the feature requests.
## Roadmap So first of all, If the Devilbox makes your life easier, **star it on GitHub**!
Please see [ROADMAP](https://github.com/cytopia/devilbox/issues/23) for what is planned. **Table of Contents**
1. [How to contribute](#how-to-contribute)
1. [Documentation](#documentation)
2. [Docker Container](#docker-container)
3. [New Features](#new-features)
4. [Intranet](#intranet)
5. [Tests](#tests)
2. [Joining the Devilbox GitHub Organization](#joining-the-devilbox-github-organization)
3. [Important](#important)
## Documentation ## 1. How to contribute
* [ ] Improve documentation There are various areas that need support. If you are willing to help, pick a topic below and start
* [ ] Remove all typos / wrong grammar contributing. If you are unclear about anything, let me know and I will clarify.
## Intranet See the general [ROADMAP](https://github.com/cytopia/devilbox/issues/23) for what is planned.
* [X] View emails sent/received within PHP dockers ### Documentation
* [ ] Better layout
* [ ] Better logos **Required knowledge:** [Sphinx](http://www.sphinx-doc.org/en/stable/)
* General improvement of the documentation (typos, grammar, etc)
* Better documentation for setting up Xdebug
* More how to's on how to setup a specific framework or CMS
* General how to's and blog posts
### Docker Container
**Required knowledge:** Docker, [Ansible](https://www.ansible.com/), Apache, Nginx, MySQL, PHP-FPM
* Consolidate MySQL, PerconaDB and MariaDB into one repository for easier change management
* Consolidate Nginx and Apache into one repository for easier change management
* Performance improvements on Apache/Nginx and PHP-FPM
* Add new container to the stack
### New Features
**Required knowledge:** Various
Have a look at the GitHub issues and see if you can implement any features requested
### Intranet
**Required knowledge:** PHP, HTML, CSS and Javascript
* [ ] Fix email view: https://github.com/cytopia/devilbox/issues/337
* [ ] Better and more modern layout
* [ ] Try to remove as much vendor dependencies as possible * [ ] Try to remove as much vendor dependencies as possible
## Updating Vendors ### Tests
#### phpMyAdmin **Required knowledge:** [Travis-CI](https://docs.travis-ci.com/)
The following settings must be applied to `config.inc.php`: * Shorten CI test time for faster releases
```php * Rewrite current tests, write new tests
<?php
$cfg['TempDir'] = '/tmp';
$cfg['CheckConfigurationPermissions'] = false;
$cfg['blowfish_secret'] = 'add whatever value here';
$cfg['Servers'][$i]['host'] = 'mysql'; ## Joining the Devilbox GitHub Organization
$cfg['Servers'][$i]['AllowNoPassword'] = true;
``` If you want to contribute on a regular base and take care about major feature development you can
be invited to the GitHub organization.
This however requires some prerequisites:
1. Willing to dedicate a regular amount of time to invest in this project
2. Already spent a decent amount of time in improving the Devilbox
3. A good understanding about the Devilbox
4. A good understanding about the PHP-FPM container (and how it is built with Ansible)

View File

@ -18,9 +18,12 @@
[![Build Status](https://travis-ci.org/cytopia/devilbox.svg?branch=master)](https://travis-ci.org/cytopia/devilbox) [![Build Status](https://travis-ci.org/cytopia/devilbox.svg?branch=master)](https://travis-ci.org/cytopia/devilbox)
[![Documentation Status](https://readthedocs.org/projects/devilbox/badge/?version=latest)](https://devilbox.readthedocs.io) [![Documentation Status](https://readthedocs.org/projects/devilbox/badge/?version=latest)](https://devilbox.readthedocs.io)
![Tag](https://img.shields.io/github/tag/cytopia/devilbox.svg) [![Release](https://img.shields.io/github/release/cytopia/devilbox.svg?colorB=orange)](https://github.com/cytopia/devilbox/releases)
[![type](https://img.shields.io/badge/type-Docker-red.svg)](https://www.docker.com/) [![PreRelease](https://img.shields.io/github/release/cytopia/devilbox.svg?colorB=red&label=prelease&style=flat)](https://github.com/cytopia/devilbox/releases)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT) [![Gitter](https://badges.gitter.im/devilbox/Lobby.svg)](https://gitter.im/devilbox/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Discourse](https://img.shields.io/discourse/https/devilbox.discourse.group/status.svg?colorB=%234CB697)](https://devilbox.discourse.group)
[![type](https://img.shields.io/badge/type-Docker-blue.svg)](https://www.docker.com/)
[![License](https://img.shields.io/badge/license-MIT-%233DA639.svg)](https://opensource.org/licenses/MIT)
<img width="200" style="width:200px;" src="docs/_includes/figures/https/https-ssl-address-bar.png" /><br/> <img width="200" style="width:200px;" src="docs/_includes/figures/https/https-ssl-address-bar.png" /><br/>
<small><sub>Support for <a href="https://devilbox.readthedocs.io/en/latest/intermediate/setup-valid-https.html">valid https</a> out of the box.</sub></small> <small><sub>Support for <a href="https://devilbox.readthedocs.io/en/latest/intermediate/setup-valid-https.html">valid https</a> out of the box.</sub></small>
@ -45,6 +48,14 @@ Furthermore, the Devilbox provides an **identical** and **reproducible developme
* [Docker Engine 1.12.0+](https://docs.docker.com/compose/compose-file/compose-versioning/#version-21) * [Docker Engine 1.12.0+](https://docs.docker.com/compose/compose-file/compose-versioning/#version-21)
* [Docker Compose 1.9.0+](https://docs.docker.com/compose/compose-file/compose-versioning/#version-21) * [Docker Compose 1.9.0+](https://docs.docker.com/compose/compose-file/compose-versioning/#version-21)
**Important**
Before updating the Devilbox ensure to always check for breaking changes until the stable release is out:
1. [Forum: Announcements](https://devilbox.discourse.group/c/announcements)
2. [Changelog](CHANGELOG.md)
3. [Updating](UPDATING.md)
## Available Container ## Available Container
The Devilbox ships the following pre-configured Docker container in any available version. The Devilbox ships the following pre-configured Docker container in any available version.
@ -827,6 +838,15 @@ A few examples of how the built-in intranet looks like.
The Devilbox is still a young project with a long roadmap of features to come. Features are The Devilbox is still a young project with a long roadmap of features to come. Features are
decided by you - **the community**, so any kind of contribution is welcome. decided by you - **the community**, so any kind of contribution is welcome.
[![](https://sourcerer.io/fame/cytopia/cytopia/devilbox/images/0)](https://sourcerer.io/fame/cytopia/cytopia/devilbox/links/0)
[![](https://sourcerer.io/fame/cytopia/cytopia/devilbox/images/1)](https://sourcerer.io/fame/cytopia/cytopia/devilbox/links/1)
[![](https://sourcerer.io/fame/cytopia/cytopia/devilbox/images/2)](https://sourcerer.io/fame/cytopia/cytopia/devilbox/links/2)
[![](https://sourcerer.io/fame/cytopia/cytopia/devilbox/images/3)](https://sourcerer.io/fame/cytopia/cytopia/devilbox/links/3)
[![](https://sourcerer.io/fame/cytopia/cytopia/devilbox/images/4)](https://sourcerer.io/fame/cytopia/cytopia/devilbox/links/4)
[![](https://sourcerer.io/fame/cytopia/cytopia/devilbox/images/5)](https://sourcerer.io/fame/cytopia/cytopia/devilbox/links/5)
[![](https://sourcerer.io/fame/cytopia/cytopia/devilbox/images/6)](https://sourcerer.io/fame/cytopia/cytopia/devilbox/links/6)
[![](https://sourcerer.io/fame/cytopia/cytopia/devilbox/images/7)](https://sourcerer.io/fame/cytopia/cytopia/devilbox/links/7)
To increase visibility and bug-free operation: To increase visibility and bug-free operation:
* Star this project * Star this project
@ -844,6 +864,6 @@ Logos and banners can be found at **[devilbox/artwork](https://github.com/devilb
## License ## License
[MIT License](LICENSE.md) **[MIT License](LICENSE.md)**
Copyright (c) 2016 [cytopia](https://github.com/cytopia) Copyright (c) 2016 **[cytopia](https://github.com/cytopia)**

30
UPDATING.md Normal file
View File

@ -0,0 +1,30 @@
# Updating
This document will hold all information on how to update between major versions.
## Update from `v0.x.y` to `v1.x.y`
#### Docker Volumes
**PR:** https://github.com/cytopia/devilbox/pull/383
This feature will move all data directories (MySQL, PostgreSQL, MongoDB and others) to Docker
volumes for best-practice and compatibility reasons on different operating systems.
Before updating to this release, you will need to manually trigger a backup of MySQL,
PostgreSQL and MongoDB to ensure that you have a copy of your data. By switching to this release
you will be unable to access your current data:
**Steps to update:**
1. Backup your data
2. Switch to the new release
3. Import your data
**Documentation:**
* [Backup Mysql](https://devilbox.readthedocs.io/en/latest/maintenance/backup-and-restore-mysql.html)
* [Backup PostgreSQL](https://devilbox.readthedocs.io/en/latest/maintenance/backup-and-restore-pgsql.html)
* [Backup MongoDB](https://devilbox.readthedocs.io/en/latest/maintenance/backup-and-restore-mongo.html)

View File

@ -95,7 +95,7 @@ services:
# PHP # PHP
# ------------------------------------------------------------ # ------------------------------------------------------------
php: php:
image: devilbox/php-fpm:${PHP_SERVER}-work-0.72 image: devilbox/php-fpm:${PHP_SERVER}-work-0.73
hostname: php hostname: php
## ##