Perfect deployments with Github Actions

Deploy your Laravel application from inside your own Github repository.

Screenshot of a Github Actions job

Production ready out of the box

Everything you need for a perfect deployment is included.

Automatically deploy on push

When you push a new commit, Github will automatically start deploying your code. 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

The Github Actions workflow takes less than a minute to deploy your application. That's barely enough time to check Twitter.

Screenshot of Github Actions installing composer dependencies

Let Github do the work

The dependencies of your project are installed and compiled inside a Github Actions container. When the workflow is done running composer install, npm install, and npm run production, the results are uploaded to your server.

Your server can sit back and relax.

Safety first!

If any step in the deployment goes wrong, your deployment will fail gracefully. Safety checks guarantee that a broken release will never get activated.

Deploy new code with confidence.

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

No dependencies, pure bash

You own the full deployment script, and it lives inside your repository. You have full control over the script.

You won't have to deal with dependencies, packages, 3rd-parties, or a SaaS subscription model.

Ready to go in less than 15 minutes

Want to see how easy it is? This video shows how to configure the script for your first deployment.

Ready to deploy?

You're just 15 minutes away from deploying your application.

One-time payment

You buy it, you own it. Forever.

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

   
VAT included
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.
Using git clone or Forge Quick Deploy?
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.
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.

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 sjorsottjes@gmail.com

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.