-
Notifications
You must be signed in to change notification settings - Fork 24
Description
Julia has in general three types of categories of releases. The LTS (currently 1.0.x), the latest release (currently 1.6.1), and the nightly release.
Before a new Julia release, there are typically a set of prereleases. These are betas (for when there are still known issues in the release) and release candidates (RCs) (where there are no known issues). We want as many people as possible to test these prereleases to find issues in the prereleases so that we don't get a bad final release.
It is possible to test prereleases on CI right now. For example, you can use 1.7-nightly
to test the release-1.7
branch and you can use ^1.7.0-0"
to test the latest tagged 1.7 prerelease.
The issue is:
- Not a lot of people know about this
- You need to update your CI script every time you want to test the prerelease of the new upcoming release.
This makes it so that not many people run CI on the prereleases and it is common to get quite a few bug reports in the week after the final release of a version.
To remedy this I think it would be useful if one could be able to test the LTS prerelease and the prerelease of the upcoming release without changing your CI script. However, we do not want to run these tests all the time (most of the time there does not exist a prerelease so running CI on the release-1.x
branch is just a waste).
Therefore, I propose adding the following "versions" that one can use in CI (not sure if the names are the best):
LTS-prerelease
latest-prerelease
For example, latest-prerelease
would currently map to 1.7.0-beta3
.
What is special about the prerelease
versions is that they only run if there is a prerelease "in progress". This requires us to put some mutable state that indicates that there is a prerelease ongoing for the LTS or the latest release. I propose putting that information in the https://julialang-s3.julialang.org/bin/versions.json file since the script already needs to read that file. For example, there could be an entry:
"LTS-prerelease" = {
"active": false,
"files": [ .... ],
....
}
If active
is set to false
the prerelease version CI scripts should immediately return success. Otherwise, CI should run as normal with the files
given. This allows people to unconditionally put the prerelease versions in their CI scripts and whenever a prerelease is going on, we flip the switch in the json file and CI will automatically start running with the prerelease and we can get a lot of feedback quickly.