SlideShare una empresa de Scribd logo
1 de 74
BUILD AND DEPLOYMENT
        MANAGEMENT
PURPOSE OF CURRENT
TRAINING




      Why do we need to manage builds

 Theory and practice of build and deployment
                management

   Why do we need to manage deployments
                                               2
CONTENTS
 Build   management
     What is build?
     Why do we need to build?
     Build types.
     Tools and their specifics: Ant, Maven, make, etc
     Tips
 Deployment      management
   Build vs deployment
   Why do we need to deploy?
   How to deploy and when?
   Tools that might be useful                           3
MAIN CONCEPTS
4
WHAT IS BUILD



        From           Process          To
                    of conversion




                                                run at the end-user
      Source code                   Artifacts       workstation




                                                                      5
WHY DO WE NEED TO BUILD?

                            Build
                                RESULT OF


                        Configuration
    defined set of components having specific versions
    components = functional units
    components and their versions are chosen to meet
     specific objectives or tasks


                        Main objectives
                                                          6

        Functionality                       Performance
WHY DO WE NEED TO BUILD?


Conclusion. Why we need to build is:
  To incorporate additional functionality (feature)
  To reach defined level of performance (as an
   example of non-functional requirement)
And what about data?
  Data has its own lifecycle
  Which is incorporated into the database integration
   process
                                                         7
WHY DO WE NEED TO MANAGE
BUILDS?
   When application grows in size, it becomes more
    complex

   As a result, it turns out that routine daily activities require
    additional management

   Organizing build process is one of such activities

   Therefore, build process also requires management

   What means complex application?

   From configuration management point of view, most
    complex application incorporate all possible variant          8

    properties
BUILD VS VARIANT

Build:
         install.msi

Variant:
      AppName-1.1.8.en.x32_beta.msi


Real world example:
HTC_Touch_Diamond2_WM6.5_RUU_Topaz_S_HT
C_RUS_2.16.411.2_Radio_Sign_Topaz_61.44
tc.25.32_4.49.25.17_Ship.exe              9
CONNECTION BETWEEN
CONFIGURATION AND VARIANTS
     Functional requirements for the variant being built
               #1     #2     #3      …    #N


                           version                       Maturity
                                                         Platform
                           variant                       OS
                                                         Localization
                           build                         Build type




      configuration           +      source code changes
                                         (changeset)                    10


            static                             runtime
WHAT IS VARIANT




   Variant is the result of the build
  characterized by the set of specific
     properties and their values


                                         11
VARIANT PROPERTIES

 Version
 Revision

 Date

 Build type: debug or release

 Operating system, hardware platform (x32, x64, …)

 Localization (en, ru, ua, …)

 Platform (development, test, integration, production)

 Maturity (alpha, beta, release candidate, stable)

 Issue number (fix#387)

 License (MIT, GPL, BSD, CC, …)

 Project ID (EPM-SIGN) + Discipline ID (PD)              12
EXAMPLE.
PLAIN DOCUMENT              Build #2
                            Properties:
                            • Language (en)
                            • Date (24-12-2010)
                            • Revision (4)

  Ctrl + N   Ctrl + S        Ctrl + S         Ctrl + S




               Build #1
               Properties:
                                                         13
               • Language (en)
               • Date (22-12-2010)
               • Revision (3)
DEMO EXAMPLE

               14
EMERGED QUESTIONS



 Why open source repositories are not structured
  properly?
 How to assign unique marker (version) for our
  changes?
 What repository model should we use?
 How do we need to manage experimental changes
  or development?
 What is initial codebase?



                                                    15
BUILD MANAGEMENT
16
WHY DO WE NEED TO MANAGE
BUILDS?

 Builds   should be CRISPy!
 CRISP     means:
     Complete
     Repeatable
     Informative
     Schedulable
                               17
     Portable
HOW TO MANAGE BUILD
PROCESS?


Define what build tasks you need

Define what build types you need

Choose build phases you will need

Choose build tool

Structure your build file           18
HOW TO MANAGE BUILD
PROCESS?


Define what build tasks you need

Define what build types you need

Choose build phases you will need

Choose build tool

Structure your build file           19
BUILD TASKS BY PRIORITY

         Compilation
         Deployment
          DB  integration
          Unit testing
          Code      coverage
            Static analysis
            Source code metrics
            Dynamic analysis
            Documentation generation
            …                          20
LET’S TALK ABOUT DIFFERENCES
    BETWEEN BUILDS AND
       DEPLOYMENTS


                               21
BUILD VS DEPLOYMENT

   Deployment is the process of software installation
    (software system available to use)
 While build is the process of installation artifacts creation
 Is this always true?

 Not really

 For interpreted languages (no compilation phase) there might
  be no significant difference between build and
  deployment
 But it is more convenient to think of all related activities
  (unit-testing, code coverage, inspections, etc) as a build, not
  deployment.
                                                               22
RESULTS OF THE BUILD

   Executables
       .exe, .bin, .msi, .cab, …


   Libraries
       .dll, .lib, .so, …


   Archives
       .zip, .tar.gz, .bz2, .7z, .ear, .jar, .war, .sar, …


   Packages
       .rpm, .deb, …                                         23
RESULTS OF DEPLOYMENT



      Installed
               application
      Updated database

      Added incremental changes

      Unpackaged library

      Loading and installing dependencies

     …



                                             24
BUILD VS DEPLOYMENT

Build                        Deployment

   Runs on single machine    Might be executed on
                               several machines
 Does not require remote     Requires connection to
  connection                   the remote server
 Creates application         Installs application
  installation
 Makes sense always          Makes sense only in
                               case of distributed or
                               remote application
                                                        25
   Primary                   Secondary
HOW TO MANAGE BUILD
PROCESS?


Define what build tasks you need

Define what build types you need

Choose build phases you will need

Choose build tool

Structure your build file           28
BUILD TYPES

CLASSIFICATION BY:


   Use

   •Private (developers build)
   •Integration (centralized build)
   •Release (delivery to the end-user)
                                         29
BUILD TYPES

CLASSIFICATION BY:

   Structure, stage, result

   • Pre-build (ensuring zero build errors: checking
     space, clean, …)
   • Post-build (build verification tests, security
     tests, …)
   • Clean (rebuilding whole project from scratch)
   • Incremental (only changed files and artifacts)
   • Broken                                            30
BUILD TYPES

CLASSIFICATION BY:

   Staging

   • Lightweight (recompilation, unit-
     tests, …)
   • Heavyweight (deployment, system
     tests, inspections, …)

                                         31
HOW TO MANAGE BUILD
PROCESS?


Define what build tasks you need

Define what build types you need

Choose build phases you will need

Choose build tool

Structure your build file           32
BUILD PHASES

                     Pre-build
                       Clean
                       Init
                       Check disk space
 Build
     Compilation
     Deployment     Post-build
     Inspections        Documentation generation
                         Checking build errors
                         Security tests
                         Tagging
                                                     33
HOW TO MANAGE BUILD
PROCESS?


Define what build tasks you need

Define what build types you need

Choose build phases you will need

Choose build tool

Structure your build file           34
BUILD TOOLS


GNU Autotools    Autotools alternatives
•   make         •   pymake
•   automake     •   CMake
•   autoconf     •   Cons
•   autoheader   •   SCons
•   libtool      •   qmake
•   gettext      •   makepp
•   gcc          •   JAM
•   pkg-config   •   waf
                                          35
BUILD TOOLS
Java based
• Ant
• Maven
• Gant
.NET based
•   MSBuild
•   Nant
•   Byldan
•   NMaven

Other
• Phing (PHP)
                36
• Rake (Ruby)
GNU AUTOTOOLS
 Did  you build applications from sources on UNIX
  platform?
 What steps did you need to accomplish this?
    1.   ./configure
    2.   make
    3.   make install
   When does actual compilation happens?
   Right. During make command execution
   make is the father of all build tools
   Heart of the build with make is the makefile
                                                   38
GNU AUTOTOOLS
MAKEFILE EXAMPLE
target1 target2 target3 : prerequisite1 prerequisite2
      command1
      command2
      command3
myprogram: main.o part1.o part2.o
      gcc -o myprogram main.o part1.o part2.o

part1.o: part1.c part1.h header.h
      gcc -O -c part1.c

part2.o: part2.c header.h
      gcc -O -c part2.c

main.o: main.c header.h
      gcc -O -c main.c
                                                   39
clean:
      rm -f myprogram main.o part1.o part2.o
GNU AUTOTOOLS LIST
   autoconf
       creates a configuration script for a package from a
        template file
       From Makefile.in to Makefile
   automake
     Creates template file from another template file
     From Makefile.am to Makefile.in
   libtool
       helps manage the creation of static and dynamic
        libraries
   gettext
    internationalization and localization library
 gcc (GNU compiler collection)
                                                              40
    default compiler used for building from sources
APACHE ANT

 Implemented in Java
 For the purpose of building java applications
 And for the purpose of make replacement


 Advantages over make:
 Cross-platform, does not require buildfile generation
 Resolves circular dependencies

 Works with file hierarchies

 Easily determines outdated files

 Conforms to “java way of thinking”
                                                          41
APACHE ANT BUILDFILE
EXAMPLE




                       42
APACHE MAVEN
         Principles:
            Convention over configuration
            Declarative execution
            Reuse of build logic
            Coherent organization of
             dependencies

         Features:
            Project Object Model
            Extensive plugin architecture

            Predefined build lifecycle
                                             43
            Dependencies management
APACHE MAVEN BUILDFILE
EXAMPLE




                         44
MAVEN VS ANT

               Maven                                Ant

   Description of project             Development of a build
    (convention over configuration)     script per project
 Invocation of defined goals          Invocation of project
  (targets)                             specific targets
 Project knowledge                    "Just" the build process
 build lifecycle, standard            too complex scripts
  project layout
 reusable                               scripts are not reusable
  plugins, repositories
                                                                     45
HOW TO MANAGE BUILD
PROCESS?


Define what build tasks you need

Define what build types you need

Choose build phases you will need

Choose build tool

Structure your build file           46
BUILD FILE STRUCTURE
              Tasks                       Targets
                                compile
Compilation
                                deploy
Deployment                     deploy-db

 DB  integration               run-tests

 Unit testing                  check-coverage

 Code      coverage            run-inspections

   Static analysis             gather-metrics
   Source code metrics         performance-tests
   Dynamic analysis
                                generatedoc        47
   Documentation generation
   …                             …
BUILD FILE TEMPLATE




                      48
BUILD TYPES AND BUILDFILE
STRUCTURE

Use types: private, integration, release




                                           49
LOCAL BUILD VS PRIVATE
BUILD?

 Local   build:             What is the difference?
     Compilation            Omitting unnecessary steps:
     Unit-testing                  Compilation
                                    Deployment
 Private   build:                  Database integration
   Compilation                     Loading initial data
   Deployment                      Unit-testing
   Database integration            Simple static analysis
   Loading initial data
   Unit-testing                                             50

   Simple static analysis
LOCAL BUILD
Local build is required after minor source code changes for
the purpose of having executable artefact

           Compilation
           Deployment
           Database integration
           Loading initial data
           Unit-testing
           Simple static analysis
                                                         51
ant compile run-tests
PRIVATE BUILD
Private build assumes that changes should be deployed to
the application container or web-server

           Compilation
           Deployment
           Database integration
           Loading initial data
           Unit-testing
           Simple static analysis
ant compile deploy deploy-db load-                     52

 data run-tests inspections
PRIVATE BUILD




                53
INTEGRATION BUILD
Integration build assumes presence of continuous
integration practice as a key part of software lifecycle

            Compilation
            Deployment
            Database integration
            Loading initial data
            Unit-testing
            Static analysis
            Dynamic analysis
                                                           54
            Documentation generation
            Gathering metrics
INTEGRATION BUILD




                    55
RELEASE BUILD
Release build is the result of development will be visible to
the end user


            Compilation
            Deployment
            Database integration
            Loading initial data
            Security tests
            integrity checks
                                                            56
            performance tests
RELEASE BUILD




                57
DEPLOYMENT MANAGEMENT
58
DEPLOYMENT TYPES

 Static
     when the container starts
 Hot
     Ability to deploy/undeploy deployables into a running
      container
 Incremental
     Deploying only changed files/artifacts
 Remote
     Requires connection via specified protocol
 Local
                                                              59
     Does not require connection
DEPLOYMENT PROTOCOLS


       FTP/SFTP      SSH/SCP


                    No protocol
         Rsync
                   (copy/move)


             Mail/e-mail
                 (!)
                                  60
DEPLOYMENT PHASES
AND TASKS

 Deployment
     Deploy
     Restart application server
 Database     integration
   Generate ORM models, mapping
   Dump data
   Instantiate DB (DDL usage)
   Data load into DB (DML usage, CRUD operations)
   Migrate data, structure or both
                                                     61
INCREMENTAL DEPLOYMENT

   Rsync
       synchronizes files and directories from one location to
        another
   SVN export only changed files
       svn diff –summarize /path1 /path2
   Deploy only files modified/added since last revision
       svn status



    In most cases it’s just a…

            HEADACHE!                                             62
SIMPLE DEPLOYMENT
WORKFLOW

           WC (working copy, trunk)




                      local
                   deployment




        instance                 db   63
LOCAL DEPLOYMENT
WORKFLOW
                                 WC (working copy, trunk)

                                   local deployment




  dev instance   test instance      prod instance



                                                       64
    dev db          test db            prod db
REMOTE DEPLOYMENT
WORKFLOW

             +        +               +

            dev     test           prod
 local deployment
                           WC (working copy, trunk)
remote deployment


        +            +                    +
                                                      65
      dev           test               prod
MANAGE YOUR DEPLOYMENTS

1.   Define what deployment type you will use
     (inherits from corresponding build type)
2.   Define what deployment tasks you need
3.   For each deployment type prioritize chosen
     tasks
4.   Define destinations
     (production, test, development)
5.   Map destinations and deployment types
6.   Configure deployment destinations
     environment                                  66
DEVELOPMENT WORKFLOW
     EXAMPLE
67
DEVELOPMENT WORKFLOW
  EXAMPLE
                   Deployed application       WC (working copy)             Repository



                                                              svn up
                                                                                         r1049
                                 ant deploy-private
                                                                                         r1050
                                                                                         r1051
                                                                                         r1052
                development       changeset (#146)
Second deployed                                                                    …
                                    manual merge
   application
                                                              svn up                     r1126

               ant deploy-private –Dinstance=2          resolve conflicts

                                                           svn commit
         OK? yes
                                                                                           68
         no
              make corrections      manual merge
                                                           svn commit
DEVELOPMENT WORKFLOW
EXAMPLE NOTES


 Does  this example remind you something?
 Yes! Distributed version control

 What is the point?

 Svn working copy is the repository

 While deployed application is a working copy

 Difference is that all operations between
  „repository‟ and „working copy‟ are manual
 And operations history is not tracked
                                                 69
DEVELOPMENT WORKFLOW
EXAMPLE NOTES

 Why do we need two builds?
 To ensure there are no integration errors
 Because of “Don‟t break the build“ rule
Advantages:
 You see your source code many times during merge
 You can find errors/inconsistencies easily
 Keeping unfinished development both safe and actual
Flaws:
 A lot of time spent before commit
 Works only for web-projects written in interpreted
  languages                                             70
CONCLUSION
71
BEST PRACTICES

 Separate build from IDE
 Run faster tests first
       Introduce staging into build process
   Fail build fast
       Organize build targets by priority
   Build components separately
       Recursive build
   Centralization of project assets
     Put sources to sources (VCS)
     Put binaries to binaries (dedicated repositories)

   Consistent directory structure
                                                          72
       Develop project structure conventions
BUILDS AND DEPLOYMENT MANAGEMENT
1.   Define what build/deployment tasks you need
2.   Define what build types you need
3.   Choose build/deployment phases you will need
4.   Prioritize chosen tasks with regard to
     corresponding build types
5.   Choose build tool
6.   Structure your build file
7.   Define deployment destinations
8.   Map build types and deployment destinations
9.   Configure deployment destinations environment   73
RECOMMENDED READING
1. The Build Master: Microsoft's Software Configuration
   Management Best Practices By Vincent Maraia




                                                          74
RECOMMENDED READING
2. Ant: The Definitive Guide, 2nd Edition by Steve Holzne




                                                            75
RECOMMENDED READING
3. Maven: The Definitive Guide by Timothy M. O'Brien




                                                       76
USEFUL LINKS

1. http://freshmeat.net/articles/build-and-release-management -
   Build and release management
2. http://onjava.com/pub/a/onjava/2003/12/17/ant_bestpractices.ht
   ml - Ant best practices
3. http://www.sonatype.com/books/mvnref-book/reference/public-
   book.html - Maven complete reference
4. http://repo.exist.com/dist/maestro/1.7.0/BetterBuildsWithMaven.
   pdf - Great book about Maven
5. http://kent.spillner.org/blog/work/2009/11/14/java-build-
   tools.html - Ant vs Maven
6. http://martinfowler.com/articles/rake.html - article about rake by
   Martin Fowler
7. http://www.finalbuilder.com/finalbuilder.aspx - FinalBuilder home
   page
                                                                        77

Más contenido relacionado

La actualidad más candente

Linux basic commands
Linux basic commandsLinux basic commands
Linux basic commandsSagar Kumar
 
Step for installing linux server
Step for installing linux serverStep for installing linux server
Step for installing linux serversyed mehdi raza
 
Web Oriented Architecture at Oracle
Web Oriented Architecture at OracleWeb Oriented Architecture at Oracle
Web Oriented Architecture at OracleEmiliano Pecis
 
50 most frequently used unix linux commands (with examples)
50 most frequently used unix   linux commands (with examples)50 most frequently used unix   linux commands (with examples)
50 most frequently used unix linux commands (with examples)Rodrigo Maia
 
LISA2019 Linux Systems Performance
LISA2019 Linux Systems PerformanceLISA2019 Linux Systems Performance
LISA2019 Linux Systems PerformanceBrendan Gregg
 
Linux Administration
Linux AdministrationLinux Administration
Linux AdministrationHarish1983
 
Linux presentation
Linux presentationLinux presentation
Linux presentationNikhil Jain
 
Linux operating system - Overview
Linux operating system - OverviewLinux operating system - Overview
Linux operating system - OverviewAshita Agrawal
 
Performance Monitoring: Understanding Your Scylla Cluster
Performance Monitoring: Understanding Your Scylla ClusterPerformance Monitoring: Understanding Your Scylla Cluster
Performance Monitoring: Understanding Your Scylla ClusterScyllaDB
 
Linux kernel debugging
Linux kernel debuggingLinux kernel debugging
Linux kernel debugginglibfetion
 
.net CLR
.net CLR.net CLR
.net CLRDevTalk
 
Basic Linux Security
Basic Linux SecurityBasic Linux Security
Basic Linux Securitypankaj009
 
Booting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot imagesBooting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot imagesChris Simmonds
 

La actualidad más candente (20)

Linux basic commands
Linux basic commandsLinux basic commands
Linux basic commands
 
Unix - An Introduction
Unix - An IntroductionUnix - An Introduction
Unix - An Introduction
 
Step for installing linux server
Step for installing linux serverStep for installing linux server
Step for installing linux server
 
Linux file system
Linux file systemLinux file system
Linux file system
 
Web Oriented Architecture at Oracle
Web Oriented Architecture at OracleWeb Oriented Architecture at Oracle
Web Oriented Architecture at Oracle
 
50 most frequently used unix linux commands (with examples)
50 most frequently used unix   linux commands (with examples)50 most frequently used unix   linux commands (with examples)
50 most frequently used unix linux commands (with examples)
 
Servlet life cycle
Servlet life cycleServlet life cycle
Servlet life cycle
 
LISA2019 Linux Systems Performance
LISA2019 Linux Systems PerformanceLISA2019 Linux Systems Performance
LISA2019 Linux Systems Performance
 
Linux Administration
Linux AdministrationLinux Administration
Linux Administration
 
Linux presentation
Linux presentationLinux presentation
Linux presentation
 
Linux operating system - Overview
Linux operating system - OverviewLinux operating system - Overview
Linux operating system - Overview
 
Performance Monitoring: Understanding Your Scylla Cluster
Performance Monitoring: Understanding Your Scylla ClusterPerformance Monitoring: Understanding Your Scylla Cluster
Performance Monitoring: Understanding Your Scylla Cluster
 
Linux kernel debugging
Linux kernel debuggingLinux kernel debugging
Linux kernel debugging
 
Linux basic commands
Linux basic commandsLinux basic commands
Linux basic commands
 
Linux systems - Linux Commands and Shell Scripting
Linux systems - Linux Commands and Shell ScriptingLinux systems - Linux Commands and Shell Scripting
Linux systems - Linux Commands and Shell Scripting
 
Domino Adminblast
Domino AdminblastDomino Adminblast
Domino Adminblast
 
.net CLR
.net CLR.net CLR
.net CLR
 
Basic Linux Security
Basic Linux SecurityBasic Linux Security
Basic Linux Security
 
Unix - Filters/Editors
Unix - Filters/EditorsUnix - Filters/Editors
Unix - Filters/Editors
 
Booting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot imagesBooting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot images
 

Destacado

Deploying and releasing applications
Deploying and releasing applicationsDeploying and releasing applications
Deploying and releasing applicationsMa Xuebin
 
04 - Agile Software Configuration Management
04 - Agile Software Configuration Management04 - Agile Software Configuration Management
04 - Agile Software Configuration ManagementSergii Shmarkatiuk
 
Build process flow
Build process flowBuild process flow
Build process flowaaronrtc
 
How to Build Software If You Can't Write Code
How to Build Software If You Can't Write CodeHow to Build Software If You Can't Write Code
How to Build Software If You Can't Write CodeRussell Wallace
 
Software Build processes and Git
Software Build processes and GitSoftware Build processes and Git
Software Build processes and GitAlec Clews
 
System Integration & Build Management
System Integration & Build ManagementSystem Integration & Build Management
System Integration & Build ManagementComputing Cage
 
Continuous integration for se group meeting
Continuous integration for se group meetingContinuous integration for se group meeting
Continuous integration for se group meetingSergii Shmarkatiuk
 
Software version numbering - DSL of change
Software version numbering - DSL of changeSoftware version numbering - DSL of change
Software version numbering - DSL of changeSergii Shmarkatiuk
 
1.1 introduction to scm - xp and cm are chicken-and-egg
1.1   introduction to scm - xp and cm are chicken-and-egg1.1   introduction to scm - xp and cm are chicken-and-egg
1.1 introduction to scm - xp and cm are chicken-and-eggSergii Shmarkatiuk
 
CS589 paper presentation - What is in unison? A formal specification and refe...
CS589 paper presentation - What is in unison? A formal specification and refe...CS589 paper presentation - What is in unison? A formal specification and refe...
CS589 paper presentation - What is in unison? A formal specification and refe...Sergii Shmarkatiuk
 
01 - Introduction to Version Control
01 - Introduction to Version Control01 - Introduction to Version Control
01 - Introduction to Version ControlSergii Shmarkatiuk
 
1.0 about software configuration management trainings
1.0   about software configuration management trainings1.0   about software configuration management trainings
1.0 about software configuration management trainingsSergii Shmarkatiuk
 
CS 584 - Aligning development tools with the way programmers think about code...
CS 584 - Aligning development tools with the way programmers think about code...CS 584 - Aligning development tools with the way programmers think about code...
CS 584 - Aligning development tools with the way programmers think about code...Sergii Shmarkatiuk
 
CS519 - Visual Software Evolution Reconstruction
CS519 - Visual Software Evolution ReconstructionCS519 - Visual Software Evolution Reconstruction
CS519 - Visual Software Evolution ReconstructionSergii Shmarkatiuk
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version ControlJeremy Coates
 
Boston meetup blaze_meter_feb2017
Boston meetup blaze_meter_feb2017Boston meetup blaze_meter_feb2017
Boston meetup blaze_meter_feb2017Perfecto Mobile
 

Destacado (20)

Deploying and releasing applications
Deploying and releasing applicationsDeploying and releasing applications
Deploying and releasing applications
 
04 - Agile Software Configuration Management
04 - Agile Software Configuration Management04 - Agile Software Configuration Management
04 - Agile Software Configuration Management
 
Build process flow
Build process flowBuild process flow
Build process flow
 
How to Build Software If You Can't Write Code
How to Build Software If You Can't Write CodeHow to Build Software If You Can't Write Code
How to Build Software If You Can't Write Code
 
Software Build processes and Git
Software Build processes and GitSoftware Build processes and Git
Software Build processes and Git
 
System Integration & Build Management
System Integration & Build ManagementSystem Integration & Build Management
System Integration & Build Management
 
Continuous integration for se group meeting
Continuous integration for se group meetingContinuous integration for se group meeting
Continuous integration for se group meeting
 
Software version numbering - DSL of change
Software version numbering - DSL of changeSoftware version numbering - DSL of change
Software version numbering - DSL of change
 
1.1 introduction to scm - xp and cm are chicken-and-egg
1.1   introduction to scm - xp and cm are chicken-and-egg1.1   introduction to scm - xp and cm are chicken-and-egg
1.1 introduction to scm - xp and cm are chicken-and-egg
 
CS589 paper presentation - What is in unison? A formal specification and refe...
CS589 paper presentation - What is in unison? A formal specification and refe...CS589 paper presentation - What is in unison? A formal specification and refe...
CS589 paper presentation - What is in unison? A formal specification and refe...
 
05 - Merge Management
05 - Merge Management05 - Merge Management
05 - Merge Management
 
03 - Continuous Integration
03 - Continuous Integration03 - Continuous Integration
03 - Continuous Integration
 
01 - Introduction to Version Control
01 - Introduction to Version Control01 - Introduction to Version Control
01 - Introduction to Version Control
 
1.0 about software configuration management trainings
1.0   about software configuration management trainings1.0   about software configuration management trainings
1.0 about software configuration management trainings
 
CS 584 - Aligning development tools with the way programmers think about code...
CS 584 - Aligning development tools with the way programmers think about code...CS 584 - Aligning development tools with the way programmers think about code...
CS 584 - Aligning development tools with the way programmers think about code...
 
CS519 - Visual Software Evolution Reconstruction
CS519 - Visual Software Evolution ReconstructionCS519 - Visual Software Evolution Reconstruction
CS519 - Visual Software Evolution Reconstruction
 
How To Build Android for ARM Chip boards
How To Build Android for ARM Chip boardsHow To Build Android for ARM Chip boards
How To Build Android for ARM Chip boards
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version Control
 
How To Build A Baja Atv
How To Build A Baja AtvHow To Build A Baja Atv
How To Build A Baja Atv
 
Boston meetup blaze_meter_feb2017
Boston meetup blaze_meter_feb2017Boston meetup blaze_meter_feb2017
Boston meetup blaze_meter_feb2017
 

Similar a 02 - Build and Deployment Management

1.2 introduction to scm - what does version number tell us
1.2   introduction to scm - what does version number tell us1.2   introduction to scm - what does version number tell us
1.2 introduction to scm - what does version number tell usSergii Shmarkatiuk
 
Continuous Integration for Oracle Database Development
Continuous Integration for Oracle Database DevelopmentContinuous Integration for Oracle Database Development
Continuous Integration for Oracle Database DevelopmentVladimir Bakhov
 
Automated Build using teamcity
Automated Build using teamcityAutomated Build using teamcity
Automated Build using teamcityMd Jawed
 
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earth
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earthPittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earth
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earthGrace Jansen
 
Introduction to jenkins for the net developer
Introduction to jenkins for the net developerIntroduction to jenkins for the net developer
Introduction to jenkins for the net developerAbe Diaz
 
SharePoint Saturday Austin: Automatic Build and Deploy using Team Foundation ...
SharePoint Saturday Austin: Automatic Build and Deploy using Team Foundation ...SharePoint Saturday Austin: Automatic Build and Deploy using Team Foundation ...
SharePoint Saturday Austin: Automatic Build and Deploy using Team Foundation ...Travis Lingenfelder
 
SwissJUG_Bringing the cloud back down to earth.pptx
SwissJUG_Bringing the cloud back down to earth.pptxSwissJUG_Bringing the cloud back down to earth.pptx
SwissJUG_Bringing the cloud back down to earth.pptxGrace Jansen
 
Team Development and Release Management
Team Development and Release ManagementTeam Development and Release Management
Team Development and Release ManagementSalesforce Partners
 
Automatize everything
Automatize everythingAutomatize everything
Automatize everythingBoris Bucha
 
Part 2 improving your software development v1.0
Part 2   improving your software development v1.0Part 2   improving your software development v1.0
Part 2 improving your software development v1.0Jasmine Conseil
 
MF_Modernization.pptx
MF_Modernization.pptxMF_Modernization.pptx
MF_Modernization.pptxManishaCh5
 
Agile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery WorkshopAgile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery WorkshopMichael Palotas
 
Announcing AWS CodeBuild - January 2017 Online Teck Talks
Announcing AWS CodeBuild - January 2017 Online Teck TalksAnnouncing AWS CodeBuild - January 2017 Online Teck Talks
Announcing AWS CodeBuild - January 2017 Online Teck TalksAmazon Web Services
 
PHP Unconference Continuous Integration
PHP Unconference Continuous IntegrationPHP Unconference Continuous Integration
PHP Unconference Continuous IntegrationNils Hofmeister
 
CI/CD (DevOps) 101
CI/CD (DevOps) 101CI/CD (DevOps) 101
CI/CD (DevOps) 101Hazzim Anaya
 
TMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael PalotasTMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael PalotasKJR
 
The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...
The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...
The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...NRB
 
ENT201 A Tale of Two Pizzas: Accelerating Software Delivery with AWS Develope...
ENT201 A Tale of Two Pizzas: Accelerating Software Delivery with AWS Develope...ENT201 A Tale of Two Pizzas: Accelerating Software Delivery with AWS Develope...
ENT201 A Tale of Two Pizzas: Accelerating Software Delivery with AWS Develope...Amazon Web Services
 

Similar a 02 - Build and Deployment Management (20)

1.2 introduction to scm - what does version number tell us
1.2   introduction to scm - what does version number tell us1.2   introduction to scm - what does version number tell us
1.2 introduction to scm - what does version number tell us
 
Continuous Integration for Oracle Database Development
Continuous Integration for Oracle Database DevelopmentContinuous Integration for Oracle Database Development
Continuous Integration for Oracle Database Development
 
Automated Build using teamcity
Automated Build using teamcityAutomated Build using teamcity
Automated Build using teamcity
 
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earth
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earthPittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earth
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earth
 
Introduction to jenkins for the net developer
Introduction to jenkins for the net developerIntroduction to jenkins for the net developer
Introduction to jenkins for the net developer
 
SharePoint Saturday Austin: Automatic Build and Deploy using Team Foundation ...
SharePoint Saturday Austin: Automatic Build and Deploy using Team Foundation ...SharePoint Saturday Austin: Automatic Build and Deploy using Team Foundation ...
SharePoint Saturday Austin: Automatic Build and Deploy using Team Foundation ...
 
SwissJUG_Bringing the cloud back down to earth.pptx
SwissJUG_Bringing the cloud back down to earth.pptxSwissJUG_Bringing the cloud back down to earth.pptx
SwissJUG_Bringing the cloud back down to earth.pptx
 
Coding Naked
Coding NakedCoding Naked
Coding Naked
 
Team Development and Release Management
Team Development and Release ManagementTeam Development and Release Management
Team Development and Release Management
 
Automatize everything
Automatize everythingAutomatize everything
Automatize everything
 
Part 2 improving your software development v1.0
Part 2   improving your software development v1.0Part 2   improving your software development v1.0
Part 2 improving your software development v1.0
 
MF_Modernization.pptx
MF_Modernization.pptxMF_Modernization.pptx
MF_Modernization.pptx
 
Agile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery WorkshopAgile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery Workshop
 
Announcing AWS CodeBuild - January 2017 Online Teck Talks
Announcing AWS CodeBuild - January 2017 Online Teck TalksAnnouncing AWS CodeBuild - January 2017 Online Teck Talks
Announcing AWS CodeBuild - January 2017 Online Teck Talks
 
PHP Unconference Continuous Integration
PHP Unconference Continuous IntegrationPHP Unconference Continuous Integration
PHP Unconference Continuous Integration
 
CI/CD (DevOps) 101
CI/CD (DevOps) 101CI/CD (DevOps) 101
CI/CD (DevOps) 101
 
Build Time Hacking
Build Time HackingBuild Time Hacking
Build Time Hacking
 
TMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael PalotasTMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael Palotas
 
The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...
The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...
The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...
 
ENT201 A Tale of Two Pizzas: Accelerating Software Delivery with AWS Develope...
ENT201 A Tale of Two Pizzas: Accelerating Software Delivery with AWS Develope...ENT201 A Tale of Two Pizzas: Accelerating Software Delivery with AWS Develope...
ENT201 A Tale of Two Pizzas: Accelerating Software Delivery with AWS Develope...
 

Más de Sergii Shmarkatiuk

CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...
CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...
CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...Sergii Shmarkatiuk
 
CS519 - homework project presentation
CS519 - homework project presentationCS519 - homework project presentation
CS519 - homework project presentationSergii Shmarkatiuk
 
CS519 - project idea presentation
CS519 - project idea presentationCS519 - project idea presentation
CS519 - project idea presentationSergii Shmarkatiuk
 
CS519 - Cloud Types for Eventual Consistency
CS519 - Cloud Types for Eventual ConsistencyCS519 - Cloud Types for Eventual Consistency
CS519 - Cloud Types for Eventual ConsistencySergii Shmarkatiuk
 
Agile software configuration management
Agile software configuration managementAgile software configuration management
Agile software configuration managementSergii Shmarkatiuk
 
управление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийуправление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийSergii Shmarkatiuk
 
Организуй свой репозиторий
Организуй свой репозиторийОрганизуй свой репозиторий
Организуй свой репозиторийSergii Shmarkatiuk
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кодаSergii Shmarkatiuk
 

Más de Sergii Shmarkatiuk (9)

CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...
CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...
CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...
 
CS519 - homework project presentation
CS519 - homework project presentationCS519 - homework project presentation
CS519 - homework project presentation
 
CS519 - project idea presentation
CS519 - project idea presentationCS519 - project idea presentation
CS519 - project idea presentation
 
CS519 - Cloud Types for Eventual Consistency
CS519 - Cloud Types for Eventual ConsistencyCS519 - Cloud Types for Eventual Consistency
CS519 - Cloud Types for Eventual Consistency
 
Breath of life
Breath of lifeBreath of life
Breath of life
 
Agile software configuration management
Agile software configuration managementAgile software configuration management
Agile software configuration management
 
управление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийуправление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложений
 
Организуй свой репозиторий
Организуй свой репозиторийОрганизуй свой репозиторий
Организуй свой репозиторий
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кода
 

Último

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 

Último (20)

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 

02 - Build and Deployment Management

  • 1. BUILD AND DEPLOYMENT MANAGEMENT
  • 2. PURPOSE OF CURRENT TRAINING Why do we need to manage builds Theory and practice of build and deployment management Why do we need to manage deployments 2
  • 3. CONTENTS  Build management  What is build?  Why do we need to build?  Build types.  Tools and their specifics: Ant, Maven, make, etc  Tips  Deployment management  Build vs deployment  Why do we need to deploy?  How to deploy and when?  Tools that might be useful 3
  • 5. WHAT IS BUILD From Process To of conversion run at the end-user Source code Artifacts workstation 5
  • 6. WHY DO WE NEED TO BUILD? Build RESULT OF Configuration  defined set of components having specific versions  components = functional units  components and their versions are chosen to meet specific objectives or tasks Main objectives 6 Functionality Performance
  • 7. WHY DO WE NEED TO BUILD? Conclusion. Why we need to build is:  To incorporate additional functionality (feature)  To reach defined level of performance (as an example of non-functional requirement) And what about data?  Data has its own lifecycle  Which is incorporated into the database integration process 7
  • 8. WHY DO WE NEED TO MANAGE BUILDS?  When application grows in size, it becomes more complex  As a result, it turns out that routine daily activities require additional management  Organizing build process is one of such activities  Therefore, build process also requires management  What means complex application?  From configuration management point of view, most complex application incorporate all possible variant 8 properties
  • 9. BUILD VS VARIANT Build: install.msi Variant: AppName-1.1.8.en.x32_beta.msi Real world example: HTC_Touch_Diamond2_WM6.5_RUU_Topaz_S_HT C_RUS_2.16.411.2_Radio_Sign_Topaz_61.44 tc.25.32_4.49.25.17_Ship.exe 9
  • 10. CONNECTION BETWEEN CONFIGURATION AND VARIANTS Functional requirements for the variant being built #1 #2 #3 … #N version Maturity Platform variant OS Localization build Build type configuration + source code changes (changeset) 10 static runtime
  • 11. WHAT IS VARIANT Variant is the result of the build characterized by the set of specific properties and their values 11
  • 12. VARIANT PROPERTIES  Version  Revision  Date  Build type: debug or release  Operating system, hardware platform (x32, x64, …)  Localization (en, ru, ua, …)  Platform (development, test, integration, production)  Maturity (alpha, beta, release candidate, stable)  Issue number (fix#387)  License (MIT, GPL, BSD, CC, …)  Project ID (EPM-SIGN) + Discipline ID (PD) 12
  • 13. EXAMPLE. PLAIN DOCUMENT Build #2 Properties: • Language (en) • Date (24-12-2010) • Revision (4) Ctrl + N Ctrl + S Ctrl + S Ctrl + S Build #1 Properties: 13 • Language (en) • Date (22-12-2010) • Revision (3)
  • 15. EMERGED QUESTIONS  Why open source repositories are not structured properly?  How to assign unique marker (version) for our changes?  What repository model should we use?  How do we need to manage experimental changes or development?  What is initial codebase? 15
  • 17. WHY DO WE NEED TO MANAGE BUILDS?  Builds should be CRISPy!  CRISP means:  Complete  Repeatable  Informative  Schedulable 17  Portable
  • 18. HOW TO MANAGE BUILD PROCESS? Define what build tasks you need Define what build types you need Choose build phases you will need Choose build tool Structure your build file 18
  • 19. HOW TO MANAGE BUILD PROCESS? Define what build tasks you need Define what build types you need Choose build phases you will need Choose build tool Structure your build file 19
  • 20. BUILD TASKS BY PRIORITY Compilation Deployment  DB integration  Unit testing  Code coverage  Static analysis  Source code metrics  Dynamic analysis  Documentation generation  … 20
  • 21. LET’S TALK ABOUT DIFFERENCES BETWEEN BUILDS AND DEPLOYMENTS 21
  • 22. BUILD VS DEPLOYMENT  Deployment is the process of software installation (software system available to use)  While build is the process of installation artifacts creation  Is this always true?  Not really  For interpreted languages (no compilation phase) there might be no significant difference between build and deployment  But it is more convenient to think of all related activities (unit-testing, code coverage, inspections, etc) as a build, not deployment. 22
  • 23. RESULTS OF THE BUILD  Executables  .exe, .bin, .msi, .cab, …  Libraries  .dll, .lib, .so, …  Archives  .zip, .tar.gz, .bz2, .7z, .ear, .jar, .war, .sar, …  Packages  .rpm, .deb, … 23
  • 24. RESULTS OF DEPLOYMENT  Installed application  Updated database  Added incremental changes  Unpackaged library  Loading and installing dependencies … 24
  • 25. BUILD VS DEPLOYMENT Build Deployment  Runs on single machine  Might be executed on several machines  Does not require remote  Requires connection to connection the remote server  Creates application  Installs application installation  Makes sense always  Makes sense only in case of distributed or remote application 25  Primary  Secondary
  • 26. HOW TO MANAGE BUILD PROCESS? Define what build tasks you need Define what build types you need Choose build phases you will need Choose build tool Structure your build file 28
  • 27. BUILD TYPES CLASSIFICATION BY: Use •Private (developers build) •Integration (centralized build) •Release (delivery to the end-user) 29
  • 28. BUILD TYPES CLASSIFICATION BY: Structure, stage, result • Pre-build (ensuring zero build errors: checking space, clean, …) • Post-build (build verification tests, security tests, …) • Clean (rebuilding whole project from scratch) • Incremental (only changed files and artifacts) • Broken 30
  • 29. BUILD TYPES CLASSIFICATION BY: Staging • Lightweight (recompilation, unit- tests, …) • Heavyweight (deployment, system tests, inspections, …) 31
  • 30. HOW TO MANAGE BUILD PROCESS? Define what build tasks you need Define what build types you need Choose build phases you will need Choose build tool Structure your build file 32
  • 31. BUILD PHASES  Pre-build  Clean  Init  Check disk space  Build  Compilation  Deployment  Post-build  Inspections  Documentation generation  Checking build errors  Security tests  Tagging 33
  • 32. HOW TO MANAGE BUILD PROCESS? Define what build tasks you need Define what build types you need Choose build phases you will need Choose build tool Structure your build file 34
  • 33. BUILD TOOLS GNU Autotools Autotools alternatives • make • pymake • automake • CMake • autoconf • Cons • autoheader • SCons • libtool • qmake • gettext • makepp • gcc • JAM • pkg-config • waf 35
  • 34. BUILD TOOLS Java based • Ant • Maven • Gant .NET based • MSBuild • Nant • Byldan • NMaven Other • Phing (PHP) 36 • Rake (Ruby)
  • 35. GNU AUTOTOOLS  Did you build applications from sources on UNIX platform?  What steps did you need to accomplish this? 1. ./configure 2. make 3. make install  When does actual compilation happens?  Right. During make command execution  make is the father of all build tools  Heart of the build with make is the makefile 38
  • 36. GNU AUTOTOOLS MAKEFILE EXAMPLE target1 target2 target3 : prerequisite1 prerequisite2 command1 command2 command3 myprogram: main.o part1.o part2.o gcc -o myprogram main.o part1.o part2.o part1.o: part1.c part1.h header.h gcc -O -c part1.c part2.o: part2.c header.h gcc -O -c part2.c main.o: main.c header.h gcc -O -c main.c 39 clean: rm -f myprogram main.o part1.o part2.o
  • 37. GNU AUTOTOOLS LIST  autoconf  creates a configuration script for a package from a template file  From Makefile.in to Makefile  automake  Creates template file from another template file  From Makefile.am to Makefile.in  libtool  helps manage the creation of static and dynamic libraries  gettext internationalization and localization library  gcc (GNU compiler collection) 40  default compiler used for building from sources
  • 38. APACHE ANT  Implemented in Java  For the purpose of building java applications  And for the purpose of make replacement Advantages over make:  Cross-platform, does not require buildfile generation  Resolves circular dependencies  Works with file hierarchies  Easily determines outdated files  Conforms to “java way of thinking” 41
  • 40. APACHE MAVEN Principles:  Convention over configuration  Declarative execution  Reuse of build logic  Coherent organization of dependencies Features:  Project Object Model  Extensive plugin architecture  Predefined build lifecycle 43  Dependencies management
  • 42. MAVEN VS ANT Maven Ant  Description of project  Development of a build (convention over configuration) script per project  Invocation of defined goals  Invocation of project (targets) specific targets  Project knowledge  "Just" the build process  build lifecycle, standard  too complex scripts project layout  reusable  scripts are not reusable plugins, repositories 45
  • 43. HOW TO MANAGE BUILD PROCESS? Define what build tasks you need Define what build types you need Choose build phases you will need Choose build tool Structure your build file 46
  • 44. BUILD FILE STRUCTURE Tasks Targets  compile Compilation  deploy Deployment  deploy-db  DB integration  run-tests  Unit testing  check-coverage  Code coverage  run-inspections  Static analysis  gather-metrics  Source code metrics  performance-tests  Dynamic analysis  generatedoc 47  Documentation generation  …  …
  • 46. BUILD TYPES AND BUILDFILE STRUCTURE Use types: private, integration, release 49
  • 47. LOCAL BUILD VS PRIVATE BUILD?  Local build: What is the difference?  Compilation Omitting unnecessary steps:  Unit-testing Compilation Deployment  Private build: Database integration  Compilation Loading initial data  Deployment Unit-testing  Database integration Simple static analysis  Loading initial data  Unit-testing 50  Simple static analysis
  • 48. LOCAL BUILD Local build is required after minor source code changes for the purpose of having executable artefact Compilation Deployment Database integration Loading initial data Unit-testing Simple static analysis 51 ant compile run-tests
  • 49. PRIVATE BUILD Private build assumes that changes should be deployed to the application container or web-server Compilation Deployment Database integration Loading initial data Unit-testing Simple static analysis ant compile deploy deploy-db load- 52 data run-tests inspections
  • 51. INTEGRATION BUILD Integration build assumes presence of continuous integration practice as a key part of software lifecycle Compilation Deployment Database integration Loading initial data Unit-testing Static analysis Dynamic analysis 54 Documentation generation Gathering metrics
  • 53. RELEASE BUILD Release build is the result of development will be visible to the end user Compilation Deployment Database integration Loading initial data Security tests integrity checks 56 performance tests
  • 56. DEPLOYMENT TYPES  Static  when the container starts  Hot  Ability to deploy/undeploy deployables into a running container  Incremental  Deploying only changed files/artifacts  Remote  Requires connection via specified protocol  Local 59  Does not require connection
  • 57. DEPLOYMENT PROTOCOLS FTP/SFTP SSH/SCP No protocol Rsync (copy/move) Mail/e-mail (!) 60
  • 58. DEPLOYMENT PHASES AND TASKS  Deployment  Deploy  Restart application server  Database integration  Generate ORM models, mapping  Dump data  Instantiate DB (DDL usage)  Data load into DB (DML usage, CRUD operations)  Migrate data, structure or both 61
  • 59. INCREMENTAL DEPLOYMENT  Rsync  synchronizes files and directories from one location to another  SVN export only changed files  svn diff –summarize /path1 /path2  Deploy only files modified/added since last revision  svn status In most cases it’s just a… HEADACHE! 62
  • 60. SIMPLE DEPLOYMENT WORKFLOW WC (working copy, trunk) local deployment instance db 63
  • 61. LOCAL DEPLOYMENT WORKFLOW WC (working copy, trunk) local deployment dev instance test instance prod instance 64 dev db test db prod db
  • 62. REMOTE DEPLOYMENT WORKFLOW + + + dev test prod local deployment WC (working copy, trunk) remote deployment + + + 65 dev test prod
  • 63. MANAGE YOUR DEPLOYMENTS 1. Define what deployment type you will use (inherits from corresponding build type) 2. Define what deployment tasks you need 3. For each deployment type prioritize chosen tasks 4. Define destinations (production, test, development) 5. Map destinations and deployment types 6. Configure deployment destinations environment 66
  • 64. DEVELOPMENT WORKFLOW EXAMPLE 67
  • 65. DEVELOPMENT WORKFLOW EXAMPLE Deployed application WC (working copy) Repository svn up r1049 ant deploy-private r1050 r1051 r1052 development changeset (#146) Second deployed … manual merge application svn up r1126 ant deploy-private –Dinstance=2 resolve conflicts svn commit OK? yes 68 no make corrections manual merge svn commit
  • 66. DEVELOPMENT WORKFLOW EXAMPLE NOTES  Does this example remind you something?  Yes! Distributed version control  What is the point?  Svn working copy is the repository  While deployed application is a working copy  Difference is that all operations between „repository‟ and „working copy‟ are manual  And operations history is not tracked 69
  • 67. DEVELOPMENT WORKFLOW EXAMPLE NOTES  Why do we need two builds?  To ensure there are no integration errors  Because of “Don‟t break the build“ rule Advantages:  You see your source code many times during merge  You can find errors/inconsistencies easily  Keeping unfinished development both safe and actual Flaws:  A lot of time spent before commit  Works only for web-projects written in interpreted languages 70
  • 69. BEST PRACTICES  Separate build from IDE  Run faster tests first  Introduce staging into build process  Fail build fast  Organize build targets by priority  Build components separately  Recursive build  Centralization of project assets  Put sources to sources (VCS)  Put binaries to binaries (dedicated repositories)  Consistent directory structure 72  Develop project structure conventions
  • 70. BUILDS AND DEPLOYMENT MANAGEMENT 1. Define what build/deployment tasks you need 2. Define what build types you need 3. Choose build/deployment phases you will need 4. Prioritize chosen tasks with regard to corresponding build types 5. Choose build tool 6. Structure your build file 7. Define deployment destinations 8. Map build types and deployment destinations 9. Configure deployment destinations environment 73
  • 71. RECOMMENDED READING 1. The Build Master: Microsoft's Software Configuration Management Best Practices By Vincent Maraia 74
  • 72. RECOMMENDED READING 2. Ant: The Definitive Guide, 2nd Edition by Steve Holzne 75
  • 73. RECOMMENDED READING 3. Maven: The Definitive Guide by Timothy M. O'Brien 76
  • 74. USEFUL LINKS 1. http://freshmeat.net/articles/build-and-release-management - Build and release management 2. http://onjava.com/pub/a/onjava/2003/12/17/ant_bestpractices.ht ml - Ant best practices 3. http://www.sonatype.com/books/mvnref-book/reference/public- book.html - Maven complete reference 4. http://repo.exist.com/dist/maestro/1.7.0/BetterBuildsWithMaven. pdf - Great book about Maven 5. http://kent.spillner.org/blog/work/2009/11/14/java-build- tools.html - Ant vs Maven 6. http://martinfowler.com/articles/rake.html - article about rake by Martin Fowler 7. http://www.finalbuilder.com/finalbuilder.aspx - FinalBuilder home page 77