Upgrading Laravel Apps - php

The next Laravel release is 5.5 which arrives this July. Now let's say I make a policy where I'll upgrade my web app every year in July/August to the latest version.
During that year of running the web app what should I do to keep it up to date with security fixes and bug fixes?
For example let's say I deploy on version 5.5.2 and by December there's a 5.5.8 what's the best way to keep the minor changes stay up to date without jeopardising the web apps availability?
I asusume you would need something to run commands like composer update Every so often etc. But what would the exact commands be and can they be run using Laravels scheduled so it is cross platform - if so, how?
Thanks!

I will not run a composer update command as a cronjob. Packages can change and that can deprecate functions or change the way how they works: what will you do in this situation? Laravel itself has a great documentation (ex https://laravel.com/docs/5.4/upgrade) showing what will brake down of you upgrade from one version to another one.
The better approach is having a development branch where test the upgrade, fix pieces of code and then deploy everything online. Just in this way you will be comfortable not to have any surprise...

Related

Random project chooser for laravel

today I have two similar Laravel projects, they are exactly the same except for the Laravel version, the first is running on 5.5, and the second is the updated version running on Laravel 9. The Laravel 9 one is not in production because we need a way to test it and check if everything is working after the update. My question is if there's a way to redirect to some clients only the newer version. The projects for the clients are exactly the same.
In conclusion I need a way to show to like 20% of the clients the newer version, and the older version for the other 80%, is possible to do this? Is there a better way to test the newer project for errors?
Thanks in advance.
You can use a Content Delivery Network e.g Cloudflare or something like AWS' CloudFront. You will be able to then configure the quota's in terms of where the relevant traffic will be redirected to.
Here is a link to an article on Cloudflare
and another one on AWS
You can also check with your host on how to configure a similar setup.
All the best

Is the Caffeinated/modules plugin for Laravel still maintained?

I'm currently in the process of upgrading a Laravel 5.2 project (yes, I know, I know...) to the latest Laravel version (9 at the time of writing). This project uses Caffeinated/Modules to structure the code - currently on version 3.
On checking the compatibilities using Laravel Shift, it appears there is no version of Caffeinated/Modules compatible with Laravel 9. In addition, on checking the Modules project on GitHub, no updates have been made to it in the past year - which is slightly worrying.
So I'm wondering if this plugin is effectively obsolete? (or soon-to-be?)
Does anyone know if there are any plans to keep it going in the future? Or is it worth ditching it now?
(For background, I tried a single "shift" from 5.2 to 5.3, and so far have been unable to get the Module routes to work. I wonder if the Modules could be the biggest headache in the upgrade process).
Any insider knowledge/advice/experience gratefully received!

How to update CakePHP?

I have to update CakePHP from current, outdated version (2.7.7) to latest on 2 branch, because of PHP7 support.
While I've done numerous framework upgrades before, I found book.cakephp.org a more than a cryptic about key things which I ask here:
can it be done by replacing directoris
which directories are intended to be replaced (never edit dirs, like system in Codeigniter)
which directories are partially replaced if any
is there SQL commands that should be run?
is there other commands that should be run?
Any clue is appreciated, but 2 and 3 are of most value I guess. Thanks in advance.
Depending on how you've installed CakePHP, you either use composer to update the CakePHP core dependency:
$ composer update
or require a specific constraint/version if your current constraint doesn't allow upgrading:
$ composer require cakephp/cakephp:^2.10.3
If you're not using composer (I'd suggest to switch to using it), then you download the latest release package manually, and completely replace the /lib/Cake directory. With respect to the core, the upgrade is then complete.
Then read the migration guides to figure the possible changes that you have to apply to your application code or database schemas, and also compare the "application template" changes (/app/) to your local application and apply changes in case necessary. After this, run your test suite to ensure that everything works as expected.
With that being said, the upgrade from 2.7 to the latest 2.10 should be pretty easy, as it is said to be fully API compatible.
I recommend you to use composer to manage your framework and extensions.
With composer installed, it would be much easier to update. If you decide to use composer, let me know if you need any more help by installation, setup or update.

Running post build actions with external jobs in Jenkins

I'd like to run phpunit on an external server, the feed those results into a Jenkins plugin like the Clover PHP Coverage Report action.
The code base has some library dependancies that the owner of the Jenkins server does not want deployed.
Well with some tweaking I guess it is possible to make use of the monitoring external plugin. You will have to figure something out to get the files on the jenkins server.
An other option is, if the server owner is willing, to create a specific build agent for your needs. That doesn't affect his jobs and you can use your builds like you want.
Yes, library dependencies shouldn't be installed globally on a Jenkins server, but this is where Composer comes into play: You'd essentially install exactly the dependencies your current software needs locally in the workspace of your job.
Nobody should be bothered by this, because you could also include the needed library code there manually - or even worse, you could use the same file and class names and code something entirely different. All of this must not interfere with any other job running on that same server, and it doesn't.
You can't really avoid Composer, because PHPUnit will stop being distributed via PEAR, as well as some Symfony components that are being used. Better go to the Composer project page and learn how to use it. By the way: You can include the needed version of PHPUnit with Composer as well, so you need not rely on a centrally installed version (which is hard to update because there are so many jobs that would need updates then - too much work in one go).

Integrated development using subversion for PHP

We are two in a team working on the same project. i am on MAC and the other one is on PC. i have never used SVN before. googling about the SVN gave me basic understanding about svn. and what i understood is there should be subversion installed in client machine (i do not know which client, i assume there are many like versions and cornerstone for mac, tortoise for windows etc. and i require a repository where i will host the centralized version of the application. the client will get the copy of codes or files where they can commit the changes to repository (main application). which can be undone if required. however what i don't understand is, as our PHP code uses database(mysql in my case) how is it managed by SVN client?
lastly i expect my development environment to be implemented the following way.
i want to set up my mac as development server for SVN at the same
time i would like to work in the same machine making use of SVN.
PC should access the repository from MAC and commit the changes.
all the setup should be done and implemented locally via LAN. please correct me if i am wrong on my understanding about the svn and also do guide me about the requirements and resources i need to install in both the machine for me to get going using SVN for my projects.
thank you..
You can use your Mac both for hosting your SVN repository and also use it as the client to checkout your working copy. Have a look at this link (its slightly old but you'll get the gist).
Once you have the SVN repository setup you can enable HTTP access on it so that your partner can checkout the copy and commit changes to it. Have a look here on how to enable HTTP access for your repository.
Most modern day PHP Frameworks use migrations scripts that help in building and maintaining your database schema, if possible use a framework. Have a look at the migrations script of one of the frameworks for inspiration (i.e if you can't use a framework). Migration scripts under the hood fire create table or alter table commands, and all you do is add the migration files to your SVN repository to version control your database schema.
One caveat with hosting the SVN repository on your Mac is that for some reason if its down, your partner gets stuck as code changes can't be committed and new changes can't be checked out. Have a look at this thread for free online private SVN repositories. In case you want to go the paid route GitHub.com is awesome.
I develop on my own and use a repository hosted on http://www.springloops.com. On here I just export the database to a text file and keep historic changes to the database on there. Clearly this is not suitable for a team working together on a project unless you're well coordinated in recording your database changes.
This question looks useful MySQL Version Control - Subversion though it's specific to mysql subversioning - not quite the answer to your broader question.
Each machine should have the relevant Client software, I recommend Tortoise SVN for Windows - it's pretty popular. There is bound to be a similar alternative SVN Client for OSX that you can get your hands on.

Categories