Laravel deployment using Github Actions

Deploy your applications with a fully automated CI/CD workflow. Professional deployments made easy.

Screenshot of a Github Actions job

Fully-featured and production ready

Well-polished and carefully thought out, this deployment script has everything you could wish for.

Automatically deploy on push

Github Actions will start deploying your code automatically when you push a new commit to a specific branch. No manual action required.

Zero downtime deployments

Your new release won't be activated until it is completely ready, causing no downtime for your users.

Done in under a minute

Building and deploying a typical Laravel application takes Github Actions less than a minute. Barely enough time to check Twitter.

Screenshot of Github Actions installing composer dependencies

Fast and efficient

Project dependencies are installed and compiled inside a Github Actions container. Your server won't be slowed down by composer install, npm install, and npm run prod during deployment. Once your assets are compiled and minimized, only the necessary files are uploaded to your server.

This approach also means your webserver doesn't need to have npm or composer installed. All the hard work is done by Github Actions. Less dependencies, less headaches.

Safety first!

Equipped with a series of safety checks, your deployments will gracefully fail if anything goes wrong. Atomic deployments guarantee that a broken release will never get activated. Push new code with confidence.

Workflow that was canceled due to a safety check
The file structure of the deployment script

No dependencies, pure bash

The full deployment script lives inside your repository. It has no dependencies, uses no external services, and doesn't require any php packages.

Written in well-documented bash, you can easily make any changes to the script that your application might need. You have the full power of Github Actions at your fingertips.

Three variables, that's it.

Three variables in the Github Actions workflow file is all it takes to run a deployment. No other changes have to be made to your project.

Professional deployments, easy as pie.

A screenshot of the Github Actions workflow file

Ready to deploy?

You'll have your application fully deployed within an hour.

Pay once, own it forever

No monthly payments, no limits.

What's included

  • Full Github Actions workflow file

  • Well-documented bash deployment script

  • Support by email

  • Complete "getting started" guide

  • Lifetime access

  • 30-day money back guarantee

€29 EUR
Payments are handled by Paddle

Already deployed your application?

Compatibility with other popular tools is built in. These examples should give you an idea of just how easy replacing your current workflow is.

Upon purchase, a full "getting started" guide is included that explains exactly how to run your first deployment.

Using Deployer?
This deployment script is fully compatible with deployments done by Deployer. Just make the deployment to the same directory as you always deploy to. Deployer's shared directory will be automatically detected, no changes required.
Using Laravel Envoyer?
This deployment script is fully compatible with deployments done by Laravel Envoyer. Just point the script to the same directory as Envoyer deploys to, no changes required.
Still uploading by hand using FTP?
Migrating to a zero-downtime structure is easy. Deploy to the same directory your project is currently in. Point your virtualhost (such as Apache2 or Nginx) to /current/public instead of /public, and you're all done.
Haven't deployed your project yet?
Run your first deployment. Fill in the.env file on your server. Point your Apache2 or Nginx to /current/public, and you're all done.

Frequently asked questions

Does the script have pre- and post-deployment hooks?
The script, by default, comes with two hooks. The first is a "before activation" hook, that, among other things, migrates the database. The second is an "after activation" hook that flushes OPcache and restarts the queue. And remember, you own the full deployment script, you can make any changes you want.
Which Laravel versions are supported?
The script supports Laravel 5.0 and higher. Laravel's directory structure and console commands (such as config:cache) haven't changed in the last few years. It doesn't matter if you're deploying Laravel 5.8, or the latest Laravel 8, it will deploy without a problem.
Do I get a notification if my deployment fails?
By default, Github sends out an email when a deployment fails. You can add any notification you like by modifying the workflow file. For example, you can use the official Slack action to send Slack messages.
Is this script a good alternative for Laravel Envoyer?
Yes, this deployment script is a good alternative for Laravel Envoyer. The script deploys your application in almost exactly the same way as Envoyer does. If you are currently using Envoyer, no changes are required to start using this script.
How does this compare to Laravel Forge?
Apples and oranges! Laravel Forge is mainly for provisioning and managing servers. Forge can also be used to deploy code, but those deployments aren't a complete solution. You can use Forge to provision your server, and you can use this deployment script for a robust deployment strategy.
Does this script work for GitLab CI/CD pipelines?
Not out of the box. The workflow file is Github specific. However the bash deploy script, which contains most of the hard work, can be made to work with GitLab pipelines with some minor adjustments.
Can I deploy to multiple environments at once?
Yes, the serverless architecture of Github Actions allows you to deploy to as many environments you want, in parallel. You can, for example, automatically deploy to your staging and acceptance environments when a new commit is pushed to your develop branch.
What operating systems are supported?
The deploy script is made to deploy your application to a Linux server. It is tested with Ubuntu 16.04, 18.04, and 20.04. The script will not work on a Windows server.
Does this script support PHP8?
Yes, every PHP version is supported. The deployment script uses bash to deploy your application. This means it doesn't matter if you're using php5.6, php7.4 or the latest and greatest php8, deployments will always work.
Can I use the script for multiple applications?
Yes. After purchasing the script you can use it for as many environments and applications as you want. Buy it once, own it for life.
Can this automatically run my unit tests?
Yes. You can modify the build step to also run your PHPUnit tests and Laravel Dusk tests. If a test fails, your deployment will instantly be canceled.
Does this deployment script allow for continuous integration and continuous delivery (CI/CD)?
Definitely! Set up specific branches that automatically deploy new changes. Push small changes regularly. That's all there is to it.
Can I deploy a non-Laravel application using this script?
Not out of the box, but the deployment script is well-documented and easy to modify. With some changes to the script I'm convinced you can use it to deploy anything from Symfony to Magento.

Have any questions?

A picture of Sjors If you have any questions, please don't hesitate to send me a message. You can use this contact form to send a message straight to my inbox.

You can also email me directly at