Today we want to give you an insight into our JoomISP Development.
This article show the tools of the development process such as Project Management, Versioning, Development Environment, Continuous Integration & Deployment.
In the associated Medialekt Blog we go to the base, the local Joomla! Development Installations & Server Technology with Docker Container.
Since the beginning of the JoomISP development in 2016, we are using various tools in order to carry out the development process for you in a timely manner, as fast as possible and to the highest possible quality.
Our latest updates also show that we have taken a very good direction.
Versioning with Subversion & Gitlab
As from our main project JooWI Online known, Subversion was the tool of choice when we continued the development of JoomISP in early 2016.
We used Subversion rather "spartan", mainly in the trunk. It represents only a common data center for all developers. For larger releases, a tag was created, which was not used elsewhere.
Over the past few weeks, we have been working intensively with Docker Container and Gitlab as possibly new versioning system. It is now an integral part and every single plugin, module and language is designed as an independent project.
We plan to use the feature branch workflow. That means, every single ticket, no matter if bug or feature request gets its own branch and is developed there. If another, perhaps more urgent, ticket arrives at the same time, a separate branch will be created from the master branch and developed independently of the previous branch.
Branches that are finished and considered to be working by the developer are pushed to the central Git repository, where a merge request to the master branch takes place.
This merge request is released after a code review, only then does the change find its way into the master branch and to the final releases.
This will then generate a new version.
Project- & Bugtracking with Mantis / Redmine
In the first weeks of work on JoomISP we used Mantis as bugtracker. Basically everything worked, but we were not really happy.
From our former partner Matthias we got the tip with Redmine, which we closed very quickly into heart. Since then Redmine has been our project center with all feature, bug tickets, tasks and even an internal wiki.
Using a help desk plugin, we automatically read an inbox via IMAP and get tickets to the system, where they are reviewed and edited by a developer.
IDE & Development environment
Netbeans has also been used as our IDE for a long time, now in version 10. It is directly linked to the Git repositories and the Redmine projects.
Each individual ticket can be reloaded at any time via the revision and assignment in order to research any overlooked errors.
The Netbeans projects are stored with FTP or SSH keys, each code or branch change leads to an immediate synchronization of the data to the development server.
The development server is currently a virtual machine for any developer, in which also the PHP version can be changed quickly. But this will soon also be exchanged as Docker containers.
Continuous Integration & Deployment
The final touchstone for agile development is the automated testing and publishing. The commit or merge to the master branch initiates a series of scripts, all of which must be passed in before the data is automatically generated into a ZIP file and uploaded to the Homepage Server, where they will be downloaded by you or displayed by your Joomla installations as a new available version.
- Phase 1 - Checking the code changes
- check the code quality with CodeSniffer and own sniffs
- check the general file- & folder structur
- unit tests of single functions
- Phase 2 - Checking the overall functionality of the changes
- integration test installing and updating the extensions
- integration test calling the admin panel
- integration test executing a test order in frontend
- integration test checking test order data in backend
- and many other tests ...
- Phase 3 - Publishing of the changes
- creation of the ZIP file
- upload & deployment on target website server
In the background or above of course much more processes are done, so first of all, some Docker Containers for the different PHP versions from 5.6, a MySQL database and the current Joomla installation are performed. Only then can the file be reviewed, checked for function and quality.
Joomla 3.9.2 Security & Bug Fix
Before few days also a new Joomla! Version 3.9.2 was released. It´s running also with PHP 7.3 in our Demo-JoomISP Homepage.
Some low-priority XSS issues and a few bugs was fixed.
Read all changes and information on joomla.org!