Skip to content

Proposal for simplifying testing of pre-releases #84

@KristofferC

Description

@KristofferC

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions