We are doing a similar thing for GlassFish to serve as a stable CI of many of the apis. We are building it weekly, appending the date and then retaining 3 previous weeks using this Jenkins job
https://ci.eclipse.org/glassfish/view/GlassFish/job/glassfish_weekly_build/
From: jakartaee-tck-dev-bounces@xxxxxxxxxxx <jakartaee-tck-dev-bounces@xxxxxxxxxxx>
On Behalf Of David Blevins
Sent: 06 August 2020 01:41
To: jakartaee-tck developer discussions <jakartaee-tck-dev@xxxxxxxxxxx>
Subject: [jakartaee-tck-dev] TCK "Promotion"
Hey All,
I've been thinking to lend my bash skills to the TCK promotion concept for the TCKs produced from this project specifically.
The goal is to make it easier for a project to promote (keep) a TCK build after they see the tests have passed. The two potential "gotchas" we have are:
- TCK that worked and could be passed could potentially be overwritten before a team can say, "hey can you promote that one"
- Eliminating any need to "run one more time to be sure"
On the last note, we spent an additional $30k on TCK infrastructure this year and we're also moving our release timeline out, so we've exceeded both budget and deadlines making any "just a bit more time and another
run" less attractive.
Currently we drop builds of the TCK into a stage directory. These binaries have a stable file name that makes CI jobs easy. It also makes promotion hard as all files have the same name and we only keep one copy.
What if we had another area where we published the TCKs and this area kept say the last 3 or 5 builds of the TCKs. The SHA would be added to the filename by the script.
I'd be willing to hack up said script if people think it's a good idea.
What that would give us is a bit of retention that doesn't complicate anyone's CI builds and is very useful in the few times of year that we do releases. If you as a project got a passing TCK build, all you'd
need to do is go to the new area and find the build with the correct SHA and save it somewhere in your own download area.
Long term we could give you your own script like this one so that could even be done by a Jenkins job owned by the project: