Continuous integration: Difference between revisions

Content deleted Content added
rm dead pov tag: no extant dispute
m Merged "Build Automation" and "Automate the build" sections, they refer to the same concept.
Line 36:
 
=== Build automation ===
{{Main|Build automation}}
 
[[Build automation]] is a best practice.<ref name="Brauneis, [OSLC] Possible new Working Group - Automation">{{Cite mailing list |urllast=http://open-services.net/pipermail/community_open-services.net/2010-January/000214.htmlBrauneis |first=David |title=[OSLC] Possible new Working Group – Automation |mailing-list=open-services.net Community |date=1 January 2010 |last=Brauneis |first=David |mailing-listurl=http://open-services.net Community/pipermail/community_open-services.net/2010-January/000214.html |access-date=16 February 2010 |archive-url=https://web.archive.org/web/20180901173720/http://open-services.net/pipermail/community_open-services.net/2010-January/000214.html |archive-date=1 September 2018 |url-status=dead }}</ref><ref name="Taylor, Rails Deployment and Automation with ShadowPuppet and Capistrano">{{Cite web |last=Taylor |first=Bradley |title=Rails Deployment and Automation with ShadowPuppet and Capistrano |url=http://blog.railsmachine.com/articles/2009/02/10/rails-deployment-and-automation-with-shadowpuppet-and-capistrano/ |last=Taylor |first=Bradley |website=Rails machine |type=[[World Wide Web|blog]] |url-status=dead |archive-url=https://archive.today/20121202054105/http://blog.railsmachine.com/articles/2009/02/10/rails-deployment-and-automation-with-shadowpuppet-and-capistrano/ |archive-date=2 December 2012 |access-date=16 February 2010 |website=Rails machine |type=[[World Wide Web|blog]] |ref=Taylor, Rails Deployment and Automation with ShadowPuppet and Capistrano}}</ref> [[List of build automation software|Build automation tools]] automate building.
 
Proponents of CI recommend that a single command should have the capability of building the system.
 
Automation often includes automating the integration, which often includes [[software deployment|deployment]] into a production-like [[Deployment environment|environment]]. In many cases, the build script not only compiles binaries but also generates documentation, website pages, statistics and distribution media (such as Debian [[Deb (file format)|DEB]], Red Hat [[RPM Package Manager|RPM]] or Windows [[Microsoft Installer|MSI]] files).
 
=== Atomic commits ===
Line 70 ⟶ 75:
Proponents of CI recommend storing all files and information needed for building in [[version control]], (for [[git]] a ''repository''); that the system should be buildable from a fresh checkout and not require additional dependencies.
 
[[Martin Fowler (software engineer)|Martin Fowler]] recommends that all developers commit to the same integration branch.<ref name="Fowler, Continuous Integration practices">{{Cite web |title=Practices |url=http://martinfowler.com/articles/continuousIntegration.html#PracticesOfContinuousIntegration |last=Fowler |first=Martin |author-link=Martin Fowler (software engineer) |website=Continuous Integration |type=article |access-date=29 November 2015}}</ref>
 
=== Automate the build ===
{{Main|Build automation}}
 
[[List of build automation software|Build automation tools]] automate building.
 
Proponents of CI recommend that a single command should have the capability of building the system.
 
Automation often includes automating the integration, which often includes [[software deployment|deployment]] into a production-like [[Deployment environment|environment]]. In many cases, the build script not only compiles binaries but also generates documentation, website pages, statistics and distribution media (such as Debian [[Deb (file format)|DEB]], Red Hat [[RPM Package Manager|RPM]] or Windows [[Microsoft Installer|MSI]] files).
 
=== Commit frequently ===