CoreCLR is currently being tested on Alpine 3.6 which is EOL. This should be updated to the latest, Alpine 3.9. This should apply to both 2.x and 3.0.
Example data showing 3.6 is being used: https://mc.dot.net/#/product/netcore/21msrc/source/prodcon~2Fcoreclr~2Frelease~2F2.1-msrc~2F/type/test~2Ffunctional~2Fcli~2F/build/20190417.03
Also, be sure to check that the CI build is using 3.9 as well.
@RussKeldorph - Note that this also applies to 2.x. Alpine 3.9 falls under the list of supported OS versions at .NET Core 2.1 - Supported OS versions and .NET Core 2.2 - Supported OS versions.
It's important this get done very soon because we already have published Docker images for .NET Core 2.x and 3.0 on Alpine 3.9 and we've got a requirement to make this the default Alpine version.
@mthalman Changing the queues used to test is pretty straightforward, but are you saying we should move to an Alpine 3.9 queue to build the product? Is Alpine 3.8 still supported? If so, will something built on 3.9 run on 3.8?
/cc @janvorli @wfurt @jashook @MattGal
I did an experiment last week, trying to build on Alpine 3.9. The build worked (the 3.8 still cannot build our stuff) and surprisingly, after a small fix, the binaries seemed to work on 3.6. I guess that's thanks to the fact that MUSL doesn't use symbol versioning.
The fix was to modify the version of ICU we start probing for. Currently, we start at the version that was present at the build machine. That results in the ICU on 3.6 not being found. We can start from a fixed version though and that gets rid of the issue.
@RussKeldorph - My main concern is that we can say with reasonable certainty that the product supports Alpine 3.9. So whatever that means from a build/test perspective, let's do that. Yes, 3.8 is still supported; EOL is a year from now. I don't know the answer on whether building on 3.9 will run on 3.8.
@janvorli What do you recommend? Should we bother trying to make 2.x build on 3.9 or just leave it on 3.6 (assuming testing runs fine on 3.9 that way)? Should we try to use both 3.8 and 3.9 containers to test, or only 3.9?
It seems like it would be better to continue building on 3.6 and we can add testing on 3.9.
Building 2.x would require moving to build cli at least 2.1.604 (2.1.11 runtime IIRC) if we want to build on Alpine 3.9, since we need openssl 1.1 support that wasn't there before. I am not sure if that's feasible.
We can continue building both 2.x and 3.0 on Alpine 3.6 though and just perform our testing on 3.9.
Closed by dotnet/coreclr#24809
@RussKeldorph - It doesn't look like a build has been done for 2.2 (https://mc.dot.net/#/netcore/22/latest). Have these changes made it there? When would a build be expected?
@mthalman The changes are in 2.2 dotnet/coreclr#24864. 2.2 builds are triggered only when manually requested. I believe 2.x testing is offline for other reasons though. @jashook is investigating dotnet/coreclr#25063.
Most helpful comment
Building 2.x would require moving to build cli at least 2.1.604 (2.1.11 runtime IIRC) if we want to build on Alpine 3.9, since we need openssl 1.1 support that wasn't there before. I am not sure if that's feasible.
We can continue building both 2.x and 3.0 on Alpine 3.6 though and just perform our testing on 3.9.