https://flic.kr/p/Lj3bW Software Configuration Management
What SCM technologies have you learned? Software Configuration Management (SCM) “Configuration management … is the discipline of identifying the configuration of a system at distinct points in time for the purpose of systematically controlling changes to the configuration and maintaining the integrity and traceability of the configuration throughout the system life cycle.” (SWEBOK) What SCM technologies have you learned?
What configuration does each manage? Git Vagrant RVM Bundler
What configuration does each manage? Git Versions of your code Vagrant Development OS; various installed software RVM Ruby version; organizes gemsets Bundler Gem versions
Git for Your Code RVM & Bundler for External Dependencies ruby v1, v2, v3, … RVM, Bundler Git jquery v1, v2, v3, … Your code v1, v2, v3, … sqlite v1, v2, v3, …
How do you choose versions with… Vagrant RVM Bundler
How do you choose versions with… Vagrant Vagrantfile, provisioning script RVM Command line, Gemfile comments Bundler Gemfile
How does Git work with RVM and Bundler to achieve? Recall SCM Definition… “Configuration management … is the discipline of identifying the configuration of a system at distinct points in time for the purpose of systematically controlling changes to the configuration and maintaining the integrity and traceability of the configuration throughout the system life cycle.” (SWEBOK) How does Git work with RVM and Bundler to achieve?
Recall SCM Definition… “Configuration management … is the discipline of identifying the configuration of a system at distinct points in time for the purpose of systematically controlling changes to the configuration and maintaining the integrity and traceability of the configuration throughout the system life cycle.” (SWEBOK) How does Git work with RVM and Bundler to achieve? Gemfile versions are managed with code versions
Development Principles Building project should be automatable & repeatable Treat build scripts like code Version control them! Use tags to track milestones Iterations, releases, bug fixes, etc. Always know how to get code for, to build, and to run each past milestone Hard without tools!