-
Notifications
You must be signed in to change notification settings - Fork 2k
Decouple security releases from MUSL builds #2353
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Signed-off-by: Harta Angkasa <24356946+ItsHarta@users.noreply.github.com>
Signed-off-by: Harta Angkasa <24356946+ItsHarta@users.noreply.github.com>
Signed-off-by: Harta Angkasa <24356946+ItsHarta@users.noreply.github.com>
|
How is the catch-up release triggered? |
This works largely by implicitly trusting that I split the new version checking for non-alpine and alpine instead of hardcoding the first option for each major release. // Checks current version
// This checks for non-alpine
const standardVersion = baseVersions.find(v => !v.startsWith("alpine"));
const { stdout: standardVersionOutput } = await exec(`. ./functions.sh && get_full_version ./${supportedVersion}/${standardVersion}`, { shell: "bash" });
// This checks for alpine
const alpineVersion = baseVersions.find(v => v.startsWith("alpine"));
const { stdout: alpineVersionOutput } = await exec(`. ./functions.sh && get_full_version ./${supportedVersion}/${alpineVersion}`, { shell: "bash" });
const fullVersion = { main : standardVersionOutput.trim(), alpine: alpineVersionOutput.trim() };
console.log(`${supportedVersion}: main=${fullVersion.main}, alpine=${fullVersion.alpine}`);
latestSupportedVersions[supportedVersion] = {
fullVersion: fullVersion.main,
alpineVersion: fullVersion.alpine,
// Assumption: standardVersion is always equal or ahead of alpineVersion
// So if the version differs, it must be always an alpine catch-up release
alpineIsBehind: fullVersion.main !== fullVersion.alpine
};As i said before, this works on assumption that This persistent flag will be used later on below to determine whether this version is alpine-only (catch-up) or a standard release. // Catch-up const checks for the whether current alpine is behind
const isCatchup = supported.alpineIsBehind && newAlpine && availableFullVersion === supported.fullVersion;
// Assumption: mainline/standard is always equal or ahead of alpine
// So if new standard release is available, then alpineOnly is always false (new release/non-catchup)
if (newMainline || isCatchup) {
filteredNewerVersions[availableMajor] = {
fullVersion: availableFullVersion,
alpineOnly: !newMainline
};
}Later on, this |
Signed-off-by: Harta Angkasa <24356946+ItsHarta@users.noreply.github.com>
This comment was marked as resolved.
This comment was marked as resolved.
Signed-off-by: Harta Angkasa <24356946+ItsHarta@users.noreply.github.com>
Signed-off-by: Harta Angkasa <24356946+ItsHarta@users.noreply.github.com>
|
Additional fixes:
I think this is worth its own PR, but I'm keeping it here since this pr depended on these changes anyway |
|
@mcollina i updated the testing section in description above to include how I test the cases for no-alpine, catch-up, and regular release |
Description
Currently, all docker images for nodejs depends on the experimental MUSL builds. This PR is a refined attempt to decouple (at least) security releases from the unofficial MUSL build dependency. This PR attempts to refine the automated pipeline by checking several things:
Assumptions:
Supporting changes:
functions.sh#get_variantsto prefix regex^${variant2}.This allows
alpineto matchalpine3.22andalpine3.23in the actual directory structure. Also to accommodate sub-variants (such as -slim)-sis specified.Seems like when the
-sis specified, the yarn version is not fetched. Causes theENV YARN_VERSION=0.0.0line to carry over to the final dockerfile-supdating all variants instead of non-alpineMotivation and Context
The automated release currently checks for MUSL builds and blocks the version update for all variants if the MUSL build is missing. Since MUSL variant is experimental, this causes delays and issues (esp. for security releases).
Further context and attributions:
Original idea at #2330 (comment) by @MikeMcC399
Initial attempt at #2348 by @bmuenzenmeyer
Testing Details
runner.mjs
node ./runner.mjs
alpineversions are not updated, and non-alpine updated (mock no-alpine)alpineversions are updated (v22.21.1 -> v22.22.0)Example Output(if appropriate)
Types of changes
Checklist