开发者

Dependencies between overnight builds and releases - testing issue

this is a release-build process question which I would need to solve for our S开发者_运维技巧W Team.

We are developing embedded system applications that are based on several common libraries. We also introduced overnight builds and automatic SW testings in oder to be able to track down errors as soon as possible. The applications and libraries are developed simultaneously. Our development is in BETA phase so we don't introduces new features but mainly correct bugs.

The development is following: When a bug is corrected in an application then an overnight build is done. This overnight build takes the last released stable library, compiles the application and does BlackBox tests on a HW module - result executable is commited to versioning system and has an unique Build version.

Sometimes it happens that the bug needs to be corrected in the library. In such case an overnight build is created for the library. But I need to know if the bugs corrected in the library havent caused new bugs in the applications. In this case it is required that the application takes the "unstable" build library, does the compilation, tests - result is an executable commited, uniq build version for application and also library.

It can happen that we need to do a release for the customers from the application but the library is still not stable it is a build. In such case we take the last released version of the library. BUT if the night before the library was also corrected our tests ran on the build APP,build LIB configuration. So the configuration build APP, release LIB was not tested.

To sum up we have the following possibilities:

APP          LIBRARY
build        release
build        build
release      release
release      build

But always only 1 combination is compiled, tested with our overnight build.

My question is how to handle such a situation? From 1 overnight build I can get only 1 unique SW version, but I would like to actually know weather also the other combinations has worked?

Could somebody suggest an improovement in our process or are we doing something completly wrong? Any responses are very welcome. Thank you.

greetings Attila


Do you have sufficient system resources to build/test all 4? You don't necessarily need to do it daily, only after code changes.


Each source file and library is under version control, and when you make a new build it is defined by which version of each you use. For example, tonight's build might be {App1_3.0, App2_3.2.5, ..., Lib1_2.0, Lib2_2.1, ...}. If this build passes your tests you may decide that you have succeeded in fixing a bug in, say, App2, and declare App2_3.2.5 stable and blessed. But there is no reason at all to check the build into version control. All that is necessary is that you remember which versions of things went into it (the vector of version numbers) and whether the build passed the tests. (You may find it useful to automate the build process to the point where it is easy to recreate an old build from this "recipe", if you haven't already.) If for some reason you want to assign a unique number to this build, there are several ways to do it.

  • Use the date. If you build several builds in one night, just add a digit or two.
  • Use a sequential serial number. If the last build was #1792, the next one will be #1793.
  • If you want the number to contain information about the ingredients, just string the module version numbers together (being careful about the delimiter), so that the number of the example above would be 3.0.00.3.2.5.00....2.0.00.2.1.00... And if this is too long, compress it-- it's highly compressible.
  • Hash the module version numbers. Or use a random number, it will have the same effect.
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜