Development teams dream about implementing Continuous Deployment best practices. But, due to time constraints and complexity, it is still scarcely implemented. During this talk, you will discover how to easily set up a Continuous Deployment environment for your Symfony project using continuousphp, a Continuous Deployment PaaS.
By using the Amazon Web Services (AWS) cloud, we’ll create temporary testing servers that allow your teams to test feature or release branches with amazing flexibility at minimal cost. All this will be applied to a sample Symfony2 application to make things more tangible.
Get the GitHub project on https://github.com/continuousphp/symfony-skeleton/ and see it on https://continuousphp.com/git-hub/continuousphp/symfony-skeleton
3. Goals
• Create an Agile Continuous Deployment Chain:
• Ready in a few minutes
• Git-Flow for project handling
• Use of ephemeral testing environments in the Cloud
• Control expenses
4. The Practices
Feature
Code Build Test Release Deploy Operate
Agile Development
Feature
Feature
Continuous Integration
Continuous Delivery
Continuous Deployment
5. Application Vs. Library• Library:
• You shouldn’t do Continuous Deployment on a Library
• Risk of errors between library and application
• Instead, use a callback as deployment destination:
• Updating Composer on your application
• Starting a build of the application
• Application:
• Continuous Integration/Delivery/Deployment is possible
7. Semantic Versioning
• Use Semantic Versioning (http://semver.org) for releases and hotfixes:
• <MAJOR>.<MINOR>.<PATCH>
• MAJOR version when you make incompatible changes
• MINOR version when you add functionality in a backwards-compatible manner
• PATCH version when you make backwards-compatible bug fixes
A quick overview of the software development chain practices
Agile Development start by writing independent, valuable, estimable, small and testable features which are coded and build iteratively by the development Team,
The next practice is to use continuous Integration, and add automated test after the build of the application.
Then there is the continuous delivery which will deploy the builded application into a private environment for Quality Assurance and validation by the Product Owner
And The lastest practice is continuous deployment which is deploying in production directly if all tests passes succesfuly, this practice is usually used with a Kanban approach for support and hotfixes.
All these practices are complementary to streamline the product development chain
we can resume application development by two main stream, the libraries and the applications.
When you are developing Libraries you shouldn’t use continuous deployment.
PhpStorm Git-Flow Plugin
Naming convention
Features :
Pick a clear name
Features can take time
Releases & Hotfixes :
Version number !
Git-Flow meets Continuous Delivery/Deployment
Releases : Continuous Delivery
Hotfixes : Continuous Deployment