Symbol store support strategies for nightly builds and releases

I am trying to set up a central character server for my organization and its various products. Each product has an overnight build, as well as one-time beta, RC, and releases.

The goal is to keep the cost of nightly assembly symbols for about a month, since we do a lot of “dogfooding” here, so people use internal assemblies and we would like to easily debug the files we get from our internal winqual whenever possible.

I also need to be able to permanently save all beta versions, RC and release assembly symbols.

After much research, I think the best approach here is to have two character servers: one for nightly builds (which have previous ~ 30 builds registered), and the other for permanently storing beta versions, RC characters and release, I would add build scripts to the symbol store, using product and version tags to record the product and build number. After a successful build, the script will use history.txt from the character server to determine the old build that has not been removed, and then remove it from the symstore.

In the case of "one off" assemblies for beta versions, RC versions and release versions, they will be identified by the assembly and installation user after they are created and added to the second symbol server (for permanent storage) as well.

So, I have a few questions: does this seem reasonable? There should be an easier way to do this: would most organizations with a symbol server not solve this problem?

Secondly, if I intend to continue this approach, is there a way to identify the oldest known character set registered on the server? I was thinking about using the latest modified dates, but history.txt seems to be the most appropriate, but parsing script that may be error prone. I was hoping that it would be possible to simply add a symbol with product and version information, as well as delete with product and version information.

Thanks in advance for any help. I will be happy to answer any questions that everyone may have, or provide any clarifications.

+4
source share
2 answers

I wrote a widget in Wise Script that runs for every build that does the following.

Assuming our execution is version 1.0.1.0

1.) 1.0 to 1.0.6.0 characters are added to the repository (5 runs)

2.) every time there is an assembly, the symbol storage history file is analyzed ...

3.) when 1.0.7.0 is built and characters are added, characters 1.0.1.0 are removed from the character store.

I basically parse the version number, and if the third place is more than 5 less than the current one, I analyze the transaction ID and run symstore.exe del / i% TRANS_ID%

This shortens my characters for daily / CI builds only for the last 5 build symbols.

Any noticeable characters, such as release, patch, patch ... I just change the name of the product and add characters manually ... this way I only crop daily newspapers.

If you wanted, I could cut / paste the code here as an SMS installer code (the same as Wise). I also wrote a similar widget that stores my local 5 archive in depth. Thus, I do not waste space for my local archive for CI assembly. I use both options, but you can use them. Both use a simple .INI file to navigate the runtime. That way, I can put them in the Jenkins / Jobs / folder and just edit the .INI file for each. They are very lightweight since .EXE is only 161 KB for archive_prunerator and 161 for symstore_widget, plus a 4 or 5 line .INI file.

Aj

+2
source

I think two separate character stores will really be your best bet. To manage the store for your nightly collections, I would recommend taking a look at AgeStore: http://msdn.microsoft.com/en-us/library/ff560046(v=vs.85).aspx

+5
source

All Articles