Skip to content

Conversation

@bmuenzenmeyer
Copy link

Description

Attempt to separate security releases from experimental musl releases.

Motivation and Context

See attribution of idea at #2330 (comment) by @MikeMcC399

Waiting for musl builds is unnecessary. See impact docker-library/official-images#20637

@mcollina confirmed this may be the source of the bug.

I am no expert in this domain, so special care should be made and I have no hard feelings about suggested improvements.

I did elect for explicit cases here over ternary logic, as I felt it created annoying inline branches in the update arguments and in the console log. Now it's more explicit, at the cost of slight repetition.

Testing Details

Example Output(if appropriate)

Types of changes

  • Documentation
  • Version change (Update, remove or add more Node.js versions)
  • Variant change (Update, remove or add more variants, or versions of variants)
  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Other (none of the above)

Checklist

  • My code follows the code style of this project.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING.md document.
  • All new and existing tests passed.

@mcollina mcollina requested a review from SimenB January 14, 2026 16:49
@mcollina
Copy link
Member

How can we get musl build issued when they are available?

Copy link
Author

@bmuenzenmeyer bmuenzenmeyer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

self-review

updatedVersions.push(newVersion.fullVersion);
} else {
console.log(`There's no musl build for version ${newVersion.fullVersion} yet.`);
process.exit(0);
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI suggested this should be removed during a self-review. This would prevent the loop from running to another entry, meaning we wait for another run. Maybe this is intentional?

@bmuenzenmeyer
Copy link
Author

How can we get musl build issued when they are available?

good question. this doesnt address that at all. subsequent runs will skip it unless we introduce more state somehow. open to suggestions from repo owners

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR modifies the build automation logic to prioritize security releases over waiting for experimental musl builds. Previously, all releases were blocked until musl builds were available. Now, security releases proceed immediately with the -s flag (which skips Alpine and Yarn updates), while non-security releases still wait for musl builds. Additionally, when musl builds are unavailable for non-security releases, the process now continues instead of exiting.

Changes:

  • Security releases are now processed independently of musl build availability
  • Non-security releases continue to wait for musl builds before processing
  • Changed from process.exit(0) to skipping when musl builds are unavailable for non-security releases

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +91 to +96
if (newVersion.isSecurityRelease) {
console.log(`Processing security release ${newVersion.fullVersion}`);
const { stdout } = await exec(`./update.sh -s ${version}`);
console.log(stdout);
updatedVersions.push(newVersion.fullVersion);
} else if (newVersion.muslBuildExists) {
Copy link

Copilot AI Jan 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When a security release doesn't have a musl build yet, it will still be processed with the -s flag which skips Alpine updates. However, according to update.sh line 23, the -s flag 'skip[s] updating the yarn and alpine versions.' This means security releases without musl builds will proceed but Alpine variants won't be updated. The original logic required muslBuildExists to be true before processing any release. Consider whether security releases should also check for muslBuildExists, or if this behavior is intentional and should be documented.

Copilot uses AI. Check for mistakes.
} else {
console.log(`There's no musl build for version ${newVersion.fullVersion} yet.`);
process.exit(0);
console.log(`There's no musl build for version ${newVersion.fullVersion} yet. Skipping non-security release.`);
Copy link

Copilot AI Jan 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The removal of process.exit(0) changes the behavior significantly. Previously, the absence of a musl build would stop all processing. Now it continues to the next version in the loop. If multiple versions are being processed and one lacks a musl build, this could lead to partial updates. Consider whether this is the intended behavior and if it should be logged more prominently (e.g., as a warning) to ensure visibility of skipped versions.

Copilot uses AI. Check for mistakes.
@ItsHarta
Copy link

How can we get musl build issued when they are available?

good question. this doesnt address that at all. subsequent runs will skip it unless we introduce more state somehow. open to suggestions from repo owners

I think a separate version checking for alpine and non-alpine is always required. Whipped up a simple attempt here: ItsHarta@f819843

A bit repetitive, but I think it should handles skipped builds & more robust checking in general. Happy to open a separate PR if it's good enough

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants