I have a Jenkins build server and would like to make the PDBs generated with the build available on a symbol server.
Ideally, the PDB files would be kept while the build that generated them is still archived, as there are different schedules for third-party libraries, stable releases, nightly builds etc., and we'd like to keep debug information at least for those builds we can still install.
My current line of thinking would be a job that
is started whenever another job finishes
- Can this be somehow made implicit, to avoid having to modify lots of different jobs; is it perhaps possible to trigger on files with an extension of *.pdb being archived as artifacts?
- Can this be integrated with matrix builds so successful sub-builds trigger the archival already?
imports all PDB artifacts from all jobs
Again, is there a way to collect PDBs from all jobs without having to explicitly configure the list of jobs we want to collect from, to avoid this becoming inconsistent?
finds out which ones are new
Can this be queried from Jenkins somehow (the Changes tab lists the modified artifacts from referenced projects, is it somehow possible to skip copying an unchanged artifact, and/or get the information on which artifacts are changed into the build steps, so we can avoid needless work?
submits these to the symbol server
queries the symbol server for existing PDBs
checks whether these are still known as artifacts from a build
Can this be done using artifact fingerprints? Can I query Jenkins with an MD5 sum directly? Are fingerprint entries expunged from Jenkins' database, so I can find out that the build that generated the file has expired?
expires these that aren't.
I'm open to alternative strategies if there is a better way to do that.