Skip to content

build: backport config for new CI infrastructure to v0.12

Once complete, this work should be fairly easily transferable to v0.10 too, I'm starting off here because it's the closest to what we have with the new infra.

The goal is to require as little modification and special-casing of our new infra setup to get the old branches to spit out builds to staging. I'm aiming to try and have an RC build out for at least 0.12 later this week, likely not with all of the items below but I'd like to get the ball rolling with test builds at least. The ideal beyond that is to finish this work within 2 weeks if possible. It's hard to predict how much work is in here and what rabbit holes there are that lay ahead (and how much time I'll actually have to shave these yaks).

TODO:

  • OSX binary tarballs, x86 and x64—Since we now only have a single build machine to do darwin tarballs because we only do 64-bit I've taken the approach of doing both 64-bit and 32-bit within the same Makefile task. This is the same as the way the .pkg is built with the universal binary being a munge of both 32-bit and 64-bit binaries so it takes a double-compile. It also means the build task we have in Jenkins for v4+ just works as is.
  • OSX .pkg, universal binary
  • Linux binary tarballs, 32-bit & 64-bit
  • SmartOS binary tarballs, 32-bit & 64-bit, this is probably going to require using the old SmartOS machines still attached to jenkins.nodejs.org, will look to @misterdjules for guidance here
  • Source tarball
  • Windows .msi, 32-bit & 64-bit, located in ./ and ./x64/, unlike the newer ./win-x86/ and ./win-x64/ that we are using now. I'll need to consult with @nodejs/build on what servers we're going to use for Windows, I think they've all been disconnected from the old infra and converted to the new stuff but we probably need to compile with an older MSVC?
  • Windows plain binaries, in ./ and ./x64/: node.exe, node.exp, node.lib, node.pdb, openssl-cli.exe, openssl-cli.pdb (we are only shipping node.exe and node.lib now, so far anyway, there have been no calls for node.pdb that I'm aware of, but we should probably stay consistent for v0.12 and v0.10).
  • Docs, note that for v0.12 and v0.10 the website was built for the ./docs/ directory and we are now only shipping ./docs/api/, will look to @nodejs/documentation and @nodejs/tsc for guidance on whether we can strip down or whether we need to stay consistent here.
  • Exclude unsupported arches and platforms—this is probably best done on Jenkins, some scripting in the job to make sure that the builds aren't attempted on the newer platforms we're shipping (arm, freebsd), we still want to use the same build job in Jenkins if possible but it has to be smart about which builds are performed.

/cc @nodejs/lts @nodejs/security

Merge request reports

Loading