Software deployment tools allow developers to ensure that software is properly installed with it’s required packages and implementation steps conducted in the correct order. Using these tools is a vital requirement for any business that creates its own software in-house.
There is a variety of software that can assist developers in launching their latest code with new ones (such as GitHub Actions) arriving to the forefront of many growing consideration lists.
In this guide we wanted to cover which tools you should consider when looking to properly deploy your latest project by welcoming insights from seasoned developers and business leaders on what helps them work best throughout this process.
1. GitHub Actions
“I've worked with Travis CI in the past but have been quite impressed after the transition to GHA. We've seen a slight improvement in deployment time (<~5 second difference) since switching to GHA but my favorite advantage is being able to remove software from our CI-CD process.”
“Since our repos are already hosted on GitHub, using GitHub Actions feels like leveraging a tool we're already using versus complicating our process by adding yet another tool. Being able to host our code, manage pull requests, and deploy from the same platform makes our process to deliver completed code somewhat easier.”, Robert continued.
When asked about some of the top queries surrounding GitHub Actions Robert was more than happy to cover the four most popular queries below:
What Are GitHub Actions?
GitHub Actions are a relatively new feature from the popular development platform GitHub. GitHub Actions allow developers to create workflows that can be triggered by specific events such as a "git push".
These workflows can be used to organize a sequence of steps that can perform tasks such as app deployment or app testing.
How Do You Receive GitHub Actions?
Developers with an existing GitHub account can start using actions by going to the "Actions" tab in their GitHub repository.
How Does GitHub Actions Work?
GitHub Actions work via workflows. These workflows are defined with .yml files placed in the .github/workflow directory of a repository.
GitHub will automatically read the .yml files and trigger the workflow based on the developer's configuration defined in the .yml file.
For example, let's say a developer creates a "deploy.yml" file that describes their deployment workflow triggered by a push to the "main" branch of the repo. GitHub will automatically run the deploy.yml whenever a push is made against the "main" branch of the repo.
How Do You Debug GitHub Actions?
GitHub does a great job of displaying the output of each step of each workflow run.
In the event of an error, developers can access the "Action" tab of their repo to see what caused the issue and make the necessary steps to address the problem.
“We love using Laravel's Envoyer for software deployment. Although it was started by the same person as Laravel (Taylor Otwell), it should work with pretty much any PHP application.” said Haris Bacic, Co-founder at PriceListo.
Haris went on to explain what is Laravel Envoyer and why his organisation enjoys using this tool; “The beauty of Envoyer is that it is a zero downtime deployment solution. So even while your files are being deployed from a repository, there is absolutely no downtime even while copying or overwriting the files.”
Our next expert contributor Jennifer Willy, Editor at Etia.com contributed the next three tools that assist the Etia team most during their development process.
“Our first recommendation would be TeamCity which is a general-purpose CI/CD solution that allows the most flexibility for all sorts of workflows and development practices.”
“Setting up your first pipeline takes less than 2 minutes and can be done through a simple UI without writing any code”, Jennifer stated in her response.
At Logit.io we also use TeamCity to assist us in managing builds and workflows during our development processes.
4. Octopus Deploy
“Octopus Deploy is a single place for your team to manage releases, automate deployments, and automate the runbooks that keep your software operating.”
“It is the first platform to enable your developers, release managers, and operations folks to bring all automation into a single place.”
Octopus Deploy was also recommended as Kelsey Chan’s first choice for continuous integration for development projects at CocoSign.
“We use Octopus Deploy as the choice of software deployment tool for our business”
Some of the primary use cases for Octopus Deploy include:
- Eliminating manual deployment from the whole process of software development.
- Providing easy rollbacks in case something goes wrong with the deployment.
- Providing information on which version of the software our clients are using.
“Bamboo Server is the choice of professional teams for continuous integration, deployment, and delivery”, Jennifer continued for her last recommendation.
“Run automated tests in Bamboo to regress your products thoroughly with each change and parallel automated tests to unleash the power of Agile Development and make catching bugs easier and faster.”
Bamboo was also recommended highly by David Morneau, CEO of inBeat Agency; “In my experience, I have personally admired Atlassian’s Bamboo as my personal favorite software deployment tool.”
“It is a continuous integration server that automates release management for applications and general software, enabling teams to establish a streamlined pipeline of build delivery.”
“It binds automated builds, testing, and releases into an integrated workflow. Mobile developers can also deploy their apps back to the Apple Store or Google Play automatically.”
Bamboo offers various numerous features including:
- Language agnostic integration with leading platforms
- Dedicated agents focus on specific build projects
- Full reporting of upcoming code changes and issues
Mark Varnas, Principal Consultant & Founder with Red9 recommended Sqitch as his number one tool for database deployments after finding a number of other deployment tools just weren’t suitable for handling SQL updates.
“I've seen many deployment tools come and go but most of them were always focused on the code side of things.”
“If we were going to use them for database deployments it was usually us trying to fit a round peg in a square hole.”
“The exception for us is Sqitch. Sqitch is a database change management application. It's like GitHub but is focused on SQL changes.”
“It's not tied to any one SQL implementation so if a client wants to use MySQL, we can use Sqitch. If they want to use Postgres, we're still just as able to use Sqitch for database deployments.”
“The great thing is that Sqitch has version control. We can set dependencies on different Sqitch scripts to ensure that preceding changes are made before subsequent ones so we don't have catastrophic failures due to simple oversights.”
7. AWS CodeDeploy
“Software deployment tools allow for developers to conclude their projects, track progress, and manage changes (as well as rollbacks). Continuous integration and continuous deployment may be utilized to deploy software as changes are made, providing seamless updates for end-users.”
“I would strongly recommend AWS CodeDeploy for software deployment as it is the best software deployment tool for small to large businesses in my personal experience.”
“One of the best attributes about AWS is that the platform doesn’t charge any cost for code deployments through CodeDeploy on Amazon EC2 or AWS Lambda.”
“AWS CodeDeploy helps me with the application deployments to Amazon EC2 instances, on-premises instances, serverless Lambda functions, or Amazon ECS services. It also offers the features of Automated Instances Deployments, Minimized Downtime, Centralized Control, Ease of Adoption.
If you enjoyed this article on the best software deployment tools available then why not check out our previous article on What is BABOK?