Decentral Digital Blog

News, facts, techniques, opinion and more.

Information about our development setup

Details Published: 06 July 2017

We would like to share some changes we will be make soon to our development setup.

Master Branch

Our current master branch is more or less a copy of the staging branch, but can be some commits behind. We are using a Jenkins server which runs tests on the last changes of the staging branch and integrates them into the master branch.

Although it sounds like a good idea it causes a lot of problems. This is because the master branch is protected from changes and it only integrates the changes when all PRs (Pull Request) are successfully tested. In a perfect world this would work. In reality some tests on a PR are not in the right state because of circumstances that are not related to the PR. Some of the tests on the jenkins server are running on older environments and when tests are failing it is because of the environment, not necessarily any coding errors. This leads to the tests taking a very long time to complete.

The upshot of all this is that the Jenkins server which tries to keep the master branch in sync with the staging branch is less than optimal and creates a lot of problems. So we plan to switch off the master/staging branch sync very soon, ideally this Sunday, 9th July.

If you use the master branch for whatever reason you need to switch to the staging branch to be up to date with the Joomla! Codebase.

We will delete the master branch 7 days after switching off the sync. We checked if we can rename the staging branch to master, but GitHub does not allow renaming. We would need to move all PRs (more than 400) to master manually and delete the staging Branch. This is a lot of work and will cause more problems, so we decided not to rename it.

Testing setup

Some weeks ago we ran a Testing Infrastructure Code Sprint. The problem with our current setup is that we are using too many different tools to test our codebase. Jenkins, Drone, Docker, Travis, AppVeyor, and Selenium being just the main ones . Each of these tools requires knowledge of their setup and usage from our team members. This requirement is a heavy burden on the teams. The goal for the sprint was to reduce our tool set and create a setup that fulfils our needs for testing. We decided to use Jenkins in combination with Docker as the basic tool. All went well and we are now running Jenkins in parallel to our current setup. Our NEW Jenkins Server (it is not the same as the one mentioned in the Master Branch part of this document) will then replace Drone and Travis as a first step. If we get a Windows Server we can also replace AppVeyor but this is not a priority at the moment.

The results so far are great, very encouraging. We are now running all the tests we had on Drone, Travis and we have integrated System Testing. Runtime for this setup is less than 4 Minutes. Our old setup took much longer to complete the testing.

Removing Drone and Travis from our setup will be done over the next few weeks, when we are sure that our new setup runs without problems.

Original author: Robert
What happened to PHP6?
The Month in WordPress: June 2017

What our clients are saying...

  • Exceptional

    Working with Decentral Digital has completely transformed my online brand. Now most of our leads come from our website...

  • Insightful

    Mike at Decentral Digital is knowledgeable, experienced and easy to work with. We are very pleased with our website.

  • Helpful

    Mike at Decentral Digital is professional, attentive and it always seemed like he cared about my business...

  • A Force

    My only regret was that I didn't find Decentral Digital sooner. The work and level of service has been fantastic...

Enough about us, let's talk about you!

DIGITAL
HAPPINESS