In this article Ivan Provorov Jersey Youth , we present seven open source tools that you can use right now to improve the deployment process on projects big or small. These tools are among the best and most-used tools in their areas; they attract developers who have created a large body of knowledge, plugins, and connectors that can be used in a wide range of situations and integrated with other tools and processes. But more importantly, these tools can dramatically improve your deployments. They can empower your team to build better and more-innovative software in a less stressful environment. #1 Jenkins Start with Continuous Integration Power and flexibility in Jenkins: The Build Pipeline Plugin makes it easy to chain Jenkins jobs to organize a deployment pipeline. To build a good deployment process, you need to grab a few of those plugins. Here are some that can鈥檛 be left out of any deployment environment: 鈥?Build Pipeline Plugin. The Jenkins delivery approach involves the chaining of related jobs through build triggers. This flexible functionality lets you create sophisticated pipelines Jakub Voracek Jersey Youth , but it can be difficult to see the pipeline鈥檚 鈥渨hole picture,鈥?the relationships between jobs, and where in the pipeline the build is at a given moment. The Build Pipeline Plugin solves that problem by providing a nice overview of the build pipeline, so you can easily follow the build as it happens and even decide when things should be automatic or require a manual trigger. 鈥?Parameterized Trigger Plugin. In a build pipeline, developers use the artifact that is generated as output from one job as the input for the next job in the pipeline. The Parameterized Trigger Plugin informs the next job which build result it must use to keep the pipeline moving. 鈥?Copy Artifact Plugin. A complement of the Parameterized Trigger Plugin Shayne Gostisbehere Jersey Youth , the Copy Artifact Plugin uses the parameters received from the previous job to fetch that job鈥檚 resulting artifacts and uses them as the starting point of the next job. 2 Chef Turn Your Infrastructure into Source Code Chef is a provisioning automation framework that simplifies the configuration of your development or production environment鈥攚hether on-premises or cloud-based. It is a Ruby-based tool that does wonders to deploy any infrastructure needed for your Java application. By using Chef, you can define a project鈥檚 infrastructure with Ruby scripts that are versioned within the project鈥檚 source code repository. Chef scripts are called recipes, and they are bundled in cookbooks. With scripts written in Ruby, you have a well-known, generic scripting language to automate infrastructure activities. #3 Vagrant Reproduce Development Environments Of all the tools mentioned in this article Claude Giroux Jersey Youth , Vagrant is probably the least concerned with deployment per se. Vagrant is focused on the developer, but it bridges development and production, helping to reduce inherent risk by minimizing discrepancies between the different environments of the deployment process. #4 Packer Generate Images for Multiple Environments In a 鈥渘ormal deployment,鈥?you provision, or prepare Nolan Patrick Jersey Youth , your systems for operation. Starting from a base system, you install all the needed software until you have a fully functional environment. Tools such as Chef help you automate the provisioning process, making it repeatable and easy to evolve. #5 Docker Try Self-Sufficient and Portable Lightweight Containers Creating ready-to-boot virtual machine images is a sophisticated way to use cloud computing so you can scale your application. But dealing with full stacks, complete operating systems, application servers Justin Braun Jersey Womens , and the rest might be overkill. In many cases, all you want is to add one more application to your stack. #6 Flyway Database Migrations that Follow Your Applications Powerful database migrations: Flyway can leverage the use of the JDBC API to handle schema migrations. We can鈥檛 talk about deployment without mentioning databases. Developers understand how to upgrade an application, maintain compatibility with older versions of APIs, and deprecate functionality. But what about the database? The hardest part of an automated deployment can be underdocumented SQL scripts that need to be run 鈥渏ust before鈥?production, differences between the code and the schema Brian Elliott Jersey Womens , and evolution and rollback situations. #7 Rundeck Support the Ops in DevOps Managing multiple nodes: Rundeck runs commands in several nodes, and aggregates the results. That brings us to DevOps, a term that means communication, collaboration, and integration between developers and IT operations professionals. As developers James Van Riemsdyk Jersey Womens , we know how good tools promote collaboration. When we save infrastructure definitions in our repositories or we automate infrastructure creation in a way that benefits both developers and IT operations professionals, we promote DevOps strategies in our projects. Each of these seven tools helps the collaboration between development and operations.
Conclusion The tools described in this article are all open source tools, and you can implement them today in your project. They can be used to deploy all kinds of applications, and are particularly well suited to deploying Java applications and services. Try these tools and experience how they help you to move toward a full deployment pipeline for your Java projects.