A build tool will help you automate and integrate tasks related to putting software pieces together. This tasks may differ in importance depending on the environment they are designed for. We could generalize these environments:
- development - Each developer should have (at least) one development environment, it should be independent, thus you should be able to use a laptop without internet access to successful perform most development tasks. The build tool guarantees that it is easy to setup a development environment.
- integration - There should be only one integration, on which integration with different components, created by different teams is performed. Everything should be automated here, the build tool guarantees this.
- test - There can be various test environments, with different roles, on which tests are performed by (real) humans. The build tool helps setup the test environment.
- production - There can be many of these with different versions on different states. The build tool helps manage different versions - operation tasks.
All tasks will be available on all environments, for example you can deploy on each of these.
Development
These tasks are important for: developers.
- clean - Cleans up the development environment
- fetch - Gets the latest sources from the SCM
- validate - Validate different software components and configuration integrity
- compile - Compiles compilable code
- test - Performs unit tests, regression tests, other tests
- start/stop servers - All servers should be easily controlled with simple commands
- generate ide files - Prepares various ide project files
Integration
These tasks are important for: developers, project managers, technical writers, QA.
- build - Creates a new (nightly) build with a new version
- package - Create software packages
- generate documentation - Generates api docs, specs
- generate deliverables - Generate all deliverables - source archive, etc
- report - Generates various reports for test, quality, changes
- deliver - Puts deliverables on a open location, a software repository
- deploy - Deploy all artifacts on the integration machine - which should self test for integrity, thus performing the integration
Test
These tasks are important for: project managers, (functional) testers, administrators.
- generate test data - This could be mock data, or real data, brought from a production environment.
Production
These tasks are important for: administrators.
- upgrade / update - Update on a newer version should be done automatically, for example schema and data upgrade
- rollback - Performs rollback to a previous version
For your presentation:
- Make a selection of common build tasks (5 to 10), the list above should help.
- Describe why each of it is important to the parties involved: 1 slide for each task.
- Make a selection of build tools (around 5) based on relevance to your working environment and popularity.
- Describe how can you achieve selected tasks, and how do these tools integrate with existing languages and tools: 1 slide for each build tool.
- So you would have 10-15 slides.
More information here: