Build automation







































Software development

Core activities


  • Processes

  • Requirements

  • Design

  • Engineering

  • Construction

  • Testing

  • Debugging

  • Deployment

  • Maintenance



Paradigms and models


  • Agile

  • Cleanroom

  • Incremental

  • Prototyping

  • Spiral

  • V model

  • Waterfall



Methodologies and frameworks


  • ASD

  • DevOps

  • DAD

  • DSDM

  • FDD

  • IID

  • Kanban

  • Lean SD

  • LeSS

  • MDD

  • MSF

  • PSP

  • RAD

  • RUP

  • SAFe

  • Scrum

  • SEMAT

  • TSP

  • UP

  • XP



Supporting disciplines


  • Configuration management

  • Documentation

  • Software quality assurance (SQA)

  • Project management

  • User experience



Practices


  • ATDD

  • BDD

  • CCO

  • CI

  • CD

  • DDD

  • PP

  • SBE

  • Stand-up

  • TDD



Tools


  • Compiler

  • Debugger

  • Profiler

  • GUI designer

  • Modeling

  • IDE

  • Build automation

  • Release automation

  • Infrastructure as code

  • Testing



Standards and Bodies of Knowledge


  • BABOK

  • CMMI

  • IEEE standards

  • ISO 9001

  • ISO/IEC standards

  • PMBOK

  • SWEBOK

  • ITIL



Glossaries


  • Artificial intelligence

  • Computer science

  • Electrical and electronics engineering



Build automation is the process of automating the creation of a software build and the associated processes including: compiling computer source code into binary code, packaging binary code, and running automated tests.




Contents






  • 1 Overview


  • 2 Build-automation utilities


  • 3 Build-automation servers


  • 4 Distributed build automation


  • 5 Relationship to Continuous Delivery and Continuous Integration


  • 6 Advantages


  • 7 See also


  • 8 References





Overview


Historically, build automation was accomplished through makefiles. Today, there are two general categories of tools:[1]



Build-automation utility (like Make, Rake, Cake, MS build, Ant, Gradle etc.)

Whose primary purpose is to generate build artifacts through activities like compiling and linking source code.

Build-automation servers

These are general web based tools that execute build-automation utilities on a scheduled or triggered basis; a continuous integration server is a type of build-automation server.


Depending on the level of automation the following classification is possible:



  • Makefile - level

    • Make-based tools

    • Non-Make-based tools



  • Build script (or Makefile) generation tools


  • Continuous-integration tools


  • Configuration-management tools

  • Meta-build tools or package managers

  • Other


A software list for each can be found in list of build automation software.



Build-automation utilities


Build-automation utilities allow the automation of simple, repeatable tasks. When using the tool, it will calculate how to reach the goal by executing tasks in the correct, specific order and running each task. The two ways build tools differ are task-oriented vs. product-oriented. Task-oriented tools describe the dependency of networks in terms of a specific set task and product-oriented tools describe things in terms of the products they generate.[2]



Build-automation servers


Although build servers existed long before continuous-integration servers, they are generally synonymous with continuous-integration servers, however a build server may also be incorporated into an ARA tool or ALM tool.


Server types




  • On-demand automation such as a user running a script at the command line


  • Scheduled automation such as a continuous integration server running a nightly build


  • Triggered automation such as a continuous integration server running a build on every commit to a version-control system.



Distributed build automation


Automation is achieved through the use of a compile farm for either distributed compilation or the execution of the utility step.[3] The distributed build process must have machine intelligence to understand the source-code dependencies to execute the distributed build.



Relationship to Continuous Delivery and Continuous Integration


Build automation is considered the first step in moving toward implementing a culture of Continuous Delivery and DevOps. Build automation combined with Continuous Integration, deployment, application-release automation, and many other processes help move an organization forward in establishing software-delivery best practices.[4][how?]



Advantages


The advantages of build automation to software development projects include



  • A necessary pre-condition for continuous integration and continuous testing

  • Improve product quality

  • Accelerate the compile and link processing

  • Eliminate redundant tasks

  • Minimize "bad builds"

  • Eliminate dependencies on key personnel

  • Have history of builds and releases in order to investigate issues

  • Save time and money - because of the reasons listed above.[5]



See also





  • Application-release automation (ARA)


  • Continuous configuration automation (CCA)


  • Continuous integration (CI)


  • Continuous delivery (CD)

  • Continuous testing

  • DevOps

  • List of build automation software

  • Product family engineering


  • Release engineering (RE)


  • Software configuration management (SCM)

  • Unit testing




References





  1. ^ Ceruzzi, Paul E. (2003). A history of Modern computing. The MIT Press. ISBN 978-0262532037..mw-parser-output cite.citation{font-style:inherit}.mw-parser-output .citation q{quotes:"""""""'""'"}.mw-parser-output .citation .cs1-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png")no-repeat;background-position:right .1em center}.mw-parser-output .citation .cs1-lock-limited a,.mw-parser-output .citation .cs1-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Lock-gray-alt-2.svg/9px-Lock-gray-alt-2.svg.png")no-repeat;background-position:right .1em center}.mw-parser-output .citation .cs1-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/thumb/a/aa/Lock-red-alt-2.svg/9px-Lock-red-alt-2.svg.png")no-repeat;background-position:right .1em center}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration{color:#555}.mw-parser-output .cs1-subscription span,.mw-parser-output .cs1-registration span{border-bottom:1px dotted;cursor:help}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Wikisource-logo.svg/12px-Wikisource-logo.svg.png")no-repeat;background-position:right .1em center}.mw-parser-output code.cs1-code{color:inherit;background:inherit;border:inherit;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;font-size:100%}.mw-parser-output .cs1-visible-error{font-size:100%}.mw-parser-output .cs1-maint{display:none;color:#33aa33;margin-left:0.3em}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration,.mw-parser-output .cs1-format{font-size:95%}.mw-parser-output .cs1-kern-left,.mw-parser-output .cs1-kern-wl-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right,.mw-parser-output .cs1-kern-wl-right{padding-right:0.2em}


  2. ^ Clark, Mike (2004). Pragmatic Project Automation: How to Build, Deploy, and Monitor Java Apps. The Pragmatic Programmers. ISBN 978-0974514031.


  3. ^ Enos, Joe (2013). "Automated Builds: The Key to Consistency". InfoQ. C4Media Inc. Retrieved September 16, 2015.


  4. ^ Bashan, Shmuel; Bellagio, David E. (2011). Work Item Management with IBM Rational ClearQuest and Jazz: A customization Guide. IBM Press. ISBN 978-0137001798.


  5. ^ "Archived copy" (PDF). Archived from the original (PDF) on 2008-11-23. Retrieved 2008-09-19.CS1 maint: Archived copy as title (link)








這個網誌中的熱門文章

12.7 cm/40 Type 89 naval gun

Shark

Wiciokrzew