Skip to content

Provide Alpine agent in release CI #4423

Description

@sxa

Part of nodejs/node#62764
Splitting out from the initial work done in #4390

Tasks:

Activity

  1. sxa commented on Aug 12, 2026

    @sxa
    MemberAuthor

    On the "generated tarball name" topic, passing VARIATION=musl to make looks like it will do the right thing in terms of making the tarball name and top level directory have linux-x64-musl in it. We'll need to decide on whether to modify the existing linux section to pass that in (blank by default) or have a new section in the iojs+release job for Alpine which only differs by that extra variable.

  2. pinned this issue on Aug 12, 2026
  3. richardlau commented on Aug 12, 2026

    @richardlau
    Member

    On the "generated tarball name" topic, passing VARIATION=musl to make looks like it will do the right thing in terms of making the tarball name and top level directory have linux-x64-musl in it. We'll need to decide on whether to modify the existing linux section to pass that in (blank by default) or have a new section in the iojs+release job for Alpine which only differs by that extra variable.

    If modifying the existing section we'd need to be careful that "blank by default" doesn't result (for the usual Linux x64 builds) in e.g. linux-x64-.tar.* (i.e. an empty suffix).

  4. sxa commented on Aug 12, 2026

    @sxa
    MemberAuthor

    we'd need to be careful that "blank by default" doesn't result (for the usual Linux x64 builds) in e.g. linux-x64-.tar.* (i.e. an empty suffix).

    Looks ok based on a quick test 👍🏻

  5. sxa commented on Aug 12, 2026

    @sxa
    MemberAuthor

    I've floated a discussion with the release WG to see if anyone there (as the users) would have a strong feeling on it, but otherwise we can progress this as a Build WG item.

  6. sxa commented on Aug 13, 2026

    @sxa
    MemberAuthor

    Proposed diff to the script fragment used for Linux:

    ***************
    *** 26,31 ****
    --- 26,37 ----
        RELEASE_URLBASE=https://nodejs.org/download/rc/
      fi
      
    + if [ "${nodes}" = "alpine-x64-release" ]; then
    +   VARIATION="musl"
    + else
    +   VARIATION=""
    + fi
    + 
      # Ancient and probably needs to be removed? See https://github.com/nodejs/build/pull/2290#issuecomment-615179257
      #
      # # manually force all docker builds to be "custom" / "experimental", also forced
    ***************
    *** 63,68 ****
    --- 69,75 ----
        CUSTOMTAG=\"$CUSTOMTAG\" \
        RELEASE_URLBASE=\"$RELEASE_URLBASE\" \
        CONFIG_FLAGS=\"$CONFIG_FLAGS\" \
    +   VARIATION=\"$VARIATION\"
      "
      
      if [[ "$NODE_LABELS" =~ (pi1-docker|docker-armv7) ]]; then
    

    I believe the check on the $nodes variable should be safe here.

    The iojs+release job will also need the axis for alpine-x64-release enabled and alpine-x64-release added to the regular expression for selecting that script fragment. Noting that while I've used alpine-x64-release we could use musl-x64-release or musl-x64-release as the label if that was preferred, however we used platform-alpine as the team name over musl so I think that's probably the best approach here even though the more generic musl will be in the file names.

    Test build with these changes is at https://ci-release.nodejs.org/job/iojs+release-sxaalpinetest/826/

  7. self-assigned this
    on Aug 13, 2026
  8. richardlau commented on Aug 13, 2026

    @richardlau
    Member

    We'll need to decide which release lines to enable (all at once or gradually?). If it is not all at once we'll need a VersionSelectorScript entry.

  9. MikeMcC399 commented on Aug 13, 2026

    @MikeMcC399

    Is there any risk to enabling all at once?

    https://unofficial-builds.nodejs.org/ would still be providing builds in parallel, I imagine.

  10. sxa commented on Aug 13, 2026

    @sxa
    MemberAuthor

    We'll need to decide which release lines to enable (all at once or gradually?). If it is not all at once we'll need a VersionSelectorScript entry.

    Given that we've been testing Alpine in the main CI from ages I was probably going to enable it for all and let it show up as and when new updates get produced. Seems the easiest option but we can discuss in the Build WG call.

  11. richardlau commented on Aug 13, 2026

    @richardlau
    Member

    Just remembered we'll need to update the expected assets in https://github.com/nodejs/build/tree/main/ansible/www-standalone/tools/promote/expected_assets for each release line we'll expect the additional package(s) in (and remember to deploy the updated expected assets onto the machine).

  12. sxa commented on Aug 13, 2026

    @sxa
    MemberAuthor

    Slightly odd - I'm getting this in the logs:

    19:12:37 gzip -c -f -9 node-v24.19.1-test9e39360a09370d47d781c9c24192c264ec996a99-linux-x64-musl.tar > node-v24.19.1-test9e39360a09370d47d781c9c24192c264ec996a99-linux-x64-musl.tar.gz
    19:13:07 xz -c -f -9e node-v24.19.1-test9e39360a09370d47d781c9c24192c264ec996a99-linux-x64-musl.tar > node-v24.19.1-test9e39360a09370d47d781c9c24192c264ec996a99-linux-x64-musl.tar.xz
    19:15:17 rm -f node-v24.19.1-test9e39360a09370d47d781c9c24192c264ec996a99-linux-x64-musl.tar
    19:15:17 ssh node-www "mkdir -p nodejs/custom/v24.19.1-test9e39360a09370d47d781c9c24192c264ec996a99"
    19:15:21 chmod 664 node-v24.19.1-test9e39360a09370d47d781c9c24192c264ec996a99-linux-x64.tar.gz
    19:15:21 chmod: node-v24.19.1-test9e39360a09370d47d781c9c24192c264ec996a99-linux-x64.tar.gz: No such file or directory
    19:15:21 make: *** [Makefile:1356: binary-upload] Error 1
    

    Despite the fact that both the gzip and chmod commands in the top level Makefile are referencing $(TARNAME).tar.gz - this was with disttype=test. Will see tomorrow if the same happens in the nightlies.

    CORRECTION: The tar-upload target does use $(TARNAME).tar.gz but binary-upload uses $(TARNAME)-$(OSTYPE)-$(ARCH).tar.gz where the code that creates it in the $(BINARYTAR) target uses $(BINARYNAME).tar which already has the VARIATION extension so there's likely the difference that we'll need to account for - not the tar-upload one. I would expect that making binary-upload use $(BINARYNAME).tar is the right approach but I'll leave that til tomorrow pending the results of the nightly builds. If we need to re-disable alpine for any upcoming releases before this is fixed then we can do so.

  13. richardlau commented on Aug 14, 2026

    @richardlau
    Member

    I would expect that making binary-upload use $(BINARYNAME).tar is the right approach but I'll leave that til tomorrow pending the results of the nightly builds. If we need to re-disable alpine for any upcoming releases before this is fixed then we can do so.

    nodejs/node#65282 looks correct (and safer, see nodejs/node#65282 (comment)). Since it is an actual code change that would need to land for each release line then we'd need to either:

    For releasers the important thing is that iojs+release ideally passes. It would not be a good state if the alpine axis fails.

    If we don't get the change into all release lines at the same time we'd have to potentially split #4428 consistent with nodejs/node#65282 and VersionSelectorScript.groovy.

  14. sxa commented on Aug 14, 2026

    @sxa
    MemberAuthor

    I was just thinking about this before I saw your comment. I feel we can reasonably justify requesting the bypass of "two weeks in current" on the basis that it's not a functional change to the code and is something specifically for the release process.

    For now I'll disable alpine in iojs+release again and I've put 4428 into draft to ensure we don't merge it yet.

  15. sxa commented on Aug 26, 2026

    @sxa
    MemberAuthor

    v24.20.0 released by stealth (i.e. not visible on the web site) on the new machine at https://nodejs.org/dist/v24.20.0/node-v24.20.0-linux-x64-musl.tar.xz

  16. MikeMcC399 commented on Aug 26, 2026

    @MikeMcC399

    That should be good for testing, at least! For docker-node we'd probably want to wait until all supported release lines are available before switching away from unofficial builds.

  17. sxa commented on Aug 27, 2026

    @sxa
    MemberAuthor

    v26.8.1 is also available: https://nodejs.org/dist/v26.8.1/node-v26.8.1-linux-x64-musl.tar.xz

    Since the Alpine agent is working I'm going to close this issue. There is still a PR to enable this for v22 but that is independent of the issue of creating the machine :-)

  18. unpinned this issue on Aug 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions