How can I learn to set up a build process? [closed]
What I was taught at school is all about programming languages, software design, but hardly anything about how to automatically build a software, probably with something like unit testing integrated.
Please tell me how do one start learning to set up a build process for his project.
If this is too abstract to make any sense, I would add that I use Python and do web programming with Django.
Thanks in advance.
I like a couple of Pragmatic Programmers' books on this subject, Ship it! and Release it!. Together, they teach a lot of real-world, pragmatic stuff about such things as build systems and how to design well-deployable programs.
I think that the process you are referring to is called continuous integration.
One of the popular tools for that is Hudson (see Hudson with django). Make sure to also check out the django-continuous-integration project.
If you're doing this in Java, you can check out Maven. There are a host of tutorials for it:
- Maven in Five Minutes
- The Maven Tutorial: A practical guide for Maven 2 users
- Maven: The definitive Guide (book)
All of this falls under the category of Software-Development Principles, Software-Design Philosophy, Software-Configuration Management, and Build and Release Management:
- Best practices for build and release management
- High-level best practices in Software-Configuration Management
- Software-Configuration Management Best Principles
It's a moderately-involved field. After years of programming, I'm still learning and understanding new things about build-management and software-configuration management.
For Python projects you should use setuptools. Setuptools has all the stuff to pack things up into .eggs, compile C modules, run unit tests, etc... If you've ever done "python setup.py [build|install|test]" then you've used setuptools.
While this is certainly not a complete answer to your question, I would like to recommend very highly the learning of the tool 'make'. I find myself using it on a VERY regular basis, for a wide variety of tasks, including (but by no means limited to) building, testing, and deploying software.
精彩评论