profile
viewpoint
João Reis joaocgreis @janeasystems Portugal Microsoft Node.js team 🚀✨

JaneaSystems/build 0

Better build and test infra for Node.

joaocgreis/bftools 0

A collection of tools to help programming in brainf*ck, just for fun.

joaocgreis/boxstarter 0

Repeatable, reboot resilient windows environment installations made easy using Chocolatey packages

joaocgreis/choco 0

Chocolatey - the package manager for Windows

joaocgreis/ChocolateyPackages 0

Chocolatey packages maintained by me

joaocgreis/email 0

MX server management for iojs.org (and eventually nodejs.org)

joaocgreis/get-cursor-position 0

🐾 Get the cursor's current position in your terminal.

joaocgreis/gitignore 0

A collection of useful .gitignore templates

joaocgreis/GYP 0

Generate You Projects

issue commentnodejs/build

Platform Requirements for 15.x

Windows 2012 and VS 2019 for the build machine look good. For running, Windows 2008 is no longer supported, so only 2012R2 and above (BUILDING.md looks good, it's just the table above).

AshCripps

comment created time in 13 days

issue commentnodejs/build

Windows authenticode certification expiry

@mhdawson when we renewed 3 years ago I had to install the new certificate in every machine, so I don't think the private key makes any difference.

I can install the certificate when you have it, please update the secrets and let me know. Essentially, it's just remove the old one, install the new one, and test building to make sure everything is ok. Note this is only for the release machines.

rvagg

comment created time in 13 days

issue commentnodejs/node

Support ARM64 Windows desktop

I updated the main Windows test job so that ARM64 compilation runs every time, and can also run the tests if explicitly requested. First test job: https://ci.nodejs.org/view/All/job/node-test-commit-windows-fanned/37851/.

The next step is to update the job used for unofficial releases and start publishing them again. Note that for now there will be no MSI because WiX 3.14 is not yet released, but as soon as it is we should get the MSI as well.

@richard-townsend-arm I'm not sure what you're referring to. Building master/v14 is working well. Are you referring to backporting for v12? I don't think that needs to happen unless you want it to. Switching to clang-cl outside of a major bump would have to be only for ARM64, unless we're completely sure it does not cause issues building native modules for x86/x64.

jkunkee

comment created time in a month

PR closed nodejs/build

jenkins: add ARM64 Windows

Windows ARM64 cross-compilation support has recently been added to master/v14. This adds Windows ARM64 to the main Windows compile job in Jenkins. This allows us to move support for compilation for Windows ARM64 to Tier 2.

Running Node.js on ARM64 is still experimental, and we only have one machine connected to Jenkins at the moment. Thus, a checkbox is added in the main job to run the tests, disabled by default.

Test job: https://ci.nodejs.org/view/All/job/node-test-commit-windows-fanned-arm64/ . The changes in this job and the 3 subjobs that have the -arm64 suffix need to land on the main jobs simultaneously with this PR.

cc @nodejs/build @nodejs/platform-windows

+13 -2

6 comments

2 changed files

joaocgreis

pr closed time in a month

pull request commentnodejs/build

jenkins: add ARM64 Windows

Jenkins jobs updated.

Test run: https://ci.nodejs.org/view/All/job/node-test-commit-windows-fanned/37850/

joaocgreis

comment created time in a month

PR closed nodejs/node

win,msi: use x64 node executable when cross-compiling for arm64 build doc meta windows

<!-- Thank you for your pull request. Please provide a description above and review the requirements below.

Bug fixes and new features should include tests and possibly benchmarks.

Contributors guide: https://github.com/nodejs/node/blob/master/CONTRIBUTING.md -->

Builds further on https://github.com/nodejs/node/pull/33689

The last step to successfully create MSI installers for arm64 on a x64 host is to run the license2rtf script on the x64 host using a x64 Node executable. Based on @joaocgreis's comment in https://github.com/nodejs/node/pull/33689#pullrequestreview-426759240 I came up with some logic in vcbuild.bat which downloads the latest x64 Node executable if it's not present on the machine yet.

A variable called %x64_node_exe% can be passed by your CI pipeline so that the build machines don't have to download the x64 executable all the time.

IMPORTANT: when building an MSI for ARM64, WIX 3.14 or higher is required, as that version includes support for ARM64.

How to test

  • Run vcbuild.bat release msi arm64

Before applying this PR, the process fails with Failed to generate license.rtf (because the generated node.exe is for the arm64 architecture and therefore can't run on the x64 host).

After applying this PR, the process finishes successfully.

Refs: #25998 Refs: #32582

Checklist

<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->

  • [ ] make -j4 test (UNIX), or vcbuild test (Windows) passes
  • [ ] tests and/or benchmarks are included
  • [x] documentation is changed or added
  • [x] commit message follows commit guidelines

<!-- Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or

(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or

(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.

(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. -->

+25 -4

5 comments

3 changed files

dennisameling

pr closed time in a month

pull request commentnodejs/node

win,msi: use x64 node executable when cross-compiling for arm64

Landed in https://github.com/nodejs/node/commit/03293aa3a1e810c5ae6938cae41bf62ae418bb5f

Thanks @dennisameling!

dennisameling

comment created time in a month

push eventnodejs/node

Dennis Ameling

commit sha 03293aa3a1e810c5ae6938cae41bf62ae418bb5f

build,win: use x64 Node when building for ARM64 Uses x64 node executable for running .js files in arm64 cross-compilation scenarios. MSI can now be created by running `vcbuild.bat release msi arm64` Refs: https://github.com/nodejs/node/issues/25998 Refs: https://github.com/nodejs/node/issues/32582 PR-URL: https://github.com/nodejs/node/pull/34009 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: João Reis <reis@janeasystems.com>

view details

push time in a month

pull request commentnodejs/build

jenkins: add ARM64 Windows

Landed in https://github.com/nodejs/build/commit/b03b57cf8b16d4ee9b524b8ea2db94b683b7f891

Will update the Jenkins jobs.

joaocgreis

comment created time in a month

push eventnodejs/build

João Reis

commit sha b03b57cf8b16d4ee9b524b8ea2db94b683b7f891

jenkins: add ARM64 Windows PR-URL: https://github.com/nodejs/build/pull/2408 Reviewed-By: Rod Vagg <rod@vagg.org> Reviewed-By: Ash Cripps <ashley.cripps@ibm.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: James M Snell <jasnell@gmail.com>

view details

push time in a month

issue closednodejs/build

Truncated logs, non-working "Resume Build", and absence of a message posted to the PR with a link to the job

Seen with https://ci.nodejs.org/job/node-test-pull-request/32854/:

  • logs are truncated, so I cannot see what caused the build to fail
  • Resume Build doesn't seem to be doing anything
  • The CI does not comment with a link to the job on the PR

closed time in a month

gabrielschulhof

issue commentnodejs/build

Truncated logs, non-working "Resume Build", and absence of a message posted to the PR with a link to the job

This should be fixed now. The https://ci.nodejs.org/view/All/job/node-compile-windows/ saves very large artifacts, so the default rotation period of 21 days enforced by the backup server is too large for it. I've changed the job settings in Jenkins to only 10 days, specifically for this job. After running one job the free space in the CI server has gone up to 37%.

image

gabrielschulhof

comment created time in a month

pull request commentnodejs/build

jenkins: add ARM64 Windows

@sxa Visual Studio needs some optional components installed, listed in https://github.com/nodejs/node/blob/master/BUILDING.md#option-1-manual-install. In that list the first point mentions you need an ARM64 machine but that's not correct (a correction should land soon). At the moment, you can only build from x64.

Then, just add arm64 to vcbuild. It's not possible to run tests on x64, but other parameters should be compatible. Support for msi should land soon (https://github.com/nodejs/node/pull/34009).

joaocgreis

comment created time in 2 months

pull request commentnodejs/node

build: move compiling for Windows ARM64 to Tier 2

I agree this does not meet the definition of Tier 2 if we consider testing, but my goal is to have it only for compilation.

The Jenkins change in https://github.com/nodejs/build/pull/2408 makes compilation run on every PR, so issues compiling for ARM64 will be visible well before releases. Only running the tests with the compiled binary is behind an opt-in checkbox, and tests do not need to pass for PRs nor releases.

My objective here is to keep compilation working, as it is very easy to break. If compilation works, it is likely that the produced binary works and it is much easier to investigate and fix other issues with it.

joaocgreis

comment created time in 2 months

pull request commentnodejs/build

jenkins: add ARM64 Windows

Is the intention to leave the checkbox only at the fanned-arm64 job and its subjobs or does it get migrated all the way up the job call stack?

Only at the node-test-commit-windows-fanned job and subjobs. If someone wants to run tests on ARM64 it's easy and reasonable to use a dedicated run for it, only at the Windows level. Note the fanned-arm64 job is only for testing the changes until this lands. After, I plan to merge all the -arm64 jobs into the original ones.

And what's the path to a more permanent CI presence?

The plan is to have Windows ARM64 VMs on Azure as soon as they become available. There is no set date for that to happen, but we'd like to wait some time in order to avoid the laptops in offices option.

joaocgreis

comment created time in 2 months

Pull request review commentnodejs/node

win,msi: use x64 node executable when cross-compiling for arm64

 if errorlevel 1 echo Failed to sign exe&goto exit @rem Skip license.rtf generation if not requested. if not defined licensertf goto stage_package -%node_exe% tools\license2rtf.js < LICENSE > %config%\license.rtf+if "%target_arch%"=="arm64" if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
set "use_x64_node_exe=false"
if "%target_arch%"=="arm64" if "%PROCESSOR_ARCHITECTURE%"=="AMD64" set "use_x64_node_exe=true"
if "%use_x64_node_exe%"=="true" (

I completely missed this when reviewing, but CI failed because of this. We need to use a single if statement for the else to work properly.

dennisameling

comment created time in 2 months

Pull request review commentnodejs/node

win,msi: use x64 node executable when cross-compiling for arm64

 Optional requirements to build the MSI installer package:  * The [WiX Toolset v3.11](https://wixtoolset.org/releases/) and the   [Wix Toolset Visual Studio 2019 Extension](https://marketplace.visualstudio.com/items?itemName=WixToolset.WixToolsetVisualStudio2019Extension).+* The [WiX Toolset v3.14](https://wixtoolset.org/releases/) if+  building for Windows 10 on ARM (ARM64).  Optional requirements for compiling for Windows 10 on ARM (ARM64): -* ARM64 Windows build machine-  * Due to a GYP limitation, this is required to run compiled code-    generation tools (like V8's builtins and mksnapshot tools)+* ARM64 or x64 Windows build machine+  * ARM64 builds can be created on a x64 host by running `.\vcbuild arm64`

Just a small detail: AFAICT, native compilation does not work (would be happy to be proved wrong though). I think these lines about the build machine can simply be removed, if you agree.

dennisameling

comment created time in 2 months

PR opened nodejs/node

build: move compiling for Windows ARM64 to Tier 2 build dont-land-on-v10.x dont-land-on-v12.x windows

Support for cross-compiling for Windows ARM64 was added recently. This moves Windows ARM64 compilation to Tier 2.

We don't yet have reliable machines that we can connect to Jenkins to run CI, so it's too soon to move all Windows ARM64 to Tier 2. We already publish unofficial builds, however a regression has prevented us from publishing releases after v12.15.0. Moving to Tier 2 should prevent such regressions while we wait for reliable hardware for testing.

This depends on https://github.com/nodejs/build/pull/2408

cc @nodejs/build @nodejs/platform-windows

<!-- Thank you for your pull request. Please provide a description above and review the requirements below.

Bug fixes and new features should include tests and possibly benchmarks.

Contributors guide: https://github.com/nodejs/node/blob/master/CONTRIBUTING.md -->

Checklist

<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->

  • [x] make -j4 test (UNIX), or vcbuild test (Windows) passes
  • [x] documentation is changed or added
  • [x] commit message follows commit guidelines

<!-- Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or

(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or

(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.

(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. -->

+1 -4

0 comment

1 changed file

pr created time in 2 months

PR opened nodejs/build

jenkins: add ARM64 Windows

Windows ARM64 cross-compilation support has recently been added to master/v14. This adds Windows ARM64 to the main Windows compile job in Jenkins. This allows us to move support for compilation for Windows ARM64 to Tier 2.

Running Node.js on ARM64 is still experimental, and we only have one machine connected to Jenkins at the moment. Thus, a checkbox is added in the main job to run the tests, disabled by default.

Test job: https://ci.nodejs.org/view/All/job/node-test-commit-windows-fanned-arm64/ . The changes in this job and the 3 subjobs that have the -arm64 suffix need to land on the main jobs simultaneously with this PR.

cc @nodejs/build @nodejs/platform-windows

+13 -2

0 comment

2 changed files

pr created time in 2 months

create barnchJaneaSystems/node

branch : joaocgreis-K8B-ARM64-cc-support

created branch time in 2 months

push eventJaneaSystems/build

Ash Cripps

commit sha ad8657ca344363f56355e200fb047db9c1c54324

ansible: remove old aix61 hosts (#2380)

view details

Michael Dawson

commit sha b444f293fc903e506755ff20f14d42e56e05ac35

doc: add minutes for meeting 7 July 2020 (#2377) Signed-off-by: Michael Dawson <michael_dawson@ca.ibm.com> PR-URL: https://github.com/nodejs/build/pull/2377 Reviewed-By: Ash Cripps <ashley.cripps@ibm.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com>

view details

Ash Cripps

commit sha 40c08e80c69dd1cafaf395046b68b2908b080658

doc: fix typo in macos release notes (#2311) PR-URL: https://github.com/nodejs/build/pull/2311 Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>

view details

Richard Lau

commit sha b6c3488d0a64fdbc78492813c85c6946fef39a35

doc: remove node-chakracore from security matrix (#2399) The nodejs/node-chakracore team has been deleted and no longer exists. Remove from the captured normal security matrix. Refs: https://github.com/nodejs/admin/issues/526

view details

Richard Lau

commit sha bb5848a734a40d0e185c06d1698d429c0abc7c40

ansible: refactor install AdoptOpenJDK Java tasks (#2398) * ansible: refactor install AdoptOpenJDK Java tasks Replace several duplicated tasks for installing Java from builds provided by AdoptOpenJDK with a set of common tasks. Remove hardcoded Java release specific paths.

view details

Mary Marchini

commit sha 838d0ecf283f295c6d8e611a7f9d29229a546b87

docs: update .mailmap for mmarchini

view details

Mary Marchini

commit sha 0b6eceb654b71c39debe2b4cc23759583783d579

docs: update mmarchini contact info

view details

Richard Lau

commit sha 5416d2d64ab93a72e52794d1be7140a0ff7f3cdf

ansible: install openjdk via yum for IBM i (#2403) Install OpenJDK Java via the yum repository for IBM i.

view details

Ash Cripps

commit sha 06c83e72a359ff8b24e5b04bf071656f6325c2e3

Add Apple silicon macs (#2383) * ansible: add DTK macs * ansible: update scripts for macos 10.16/11.0 * jenkins: add osx11 to versionselector

view details

João Reis

commit sha 15f5d997b38daf1b688f71cc4ae53fa8002e7a5c

jenkins: add ARM64 Windows

view details

push time in 2 months

push eventJaneaSystems/build

João Reis

commit sha 63fd43129ca7a9ad56db047570953152fbf348ac

fixup! fixup! jenkins: add ARM64 Windows

view details

push time in 2 months

push eventJaneaSystems/build

João Reis

commit sha baa543c6817ade659a42a4b6a1713b849243ae98

fixup! fixup! jenkins: add ARM64 Windows

view details

push time in 2 months

push eventJaneaSystems/build

João Reis

commit sha 3227eb834ab1d21c7d946847a988290c7e7fc752

fixup! jenkins: add ARM64 Windows

view details

push time in 2 months

push eventJaneaSystems/build

João Reis

commit sha 74e1279c5a528f0a31817895d78945ac47f0d9f8

fixup! jenkins: add ARM64 Windows

view details

push time in 2 months

push eventJaneaSystems/build

João Reis

commit sha 977421a0ae58115b86e1195359c2ac18987ea323

jenkins: add ARM64 Windows

view details

push time in 2 months

create barnchJaneaSystems/build

branch : joaocgreis-K7M-arm64

created branch time in 2 months

issue commentnodejs/admin

cleanup chakracore teams and vm repo

I believe the teams can be removed. I just removed the Jenkins jobs, so they are no longer necessary there. They should be easy to bring back if the effort on Node-ChakraCore is to resume.

Trott

comment created time in 2 months

issue closednodejs/build

Remove chakracore CI jobs?

Given that the node-chakracore repository is now archived and that effort has been discontinued, the numerous chakracore related CI jobs can be cleaned up and removed, and the associated @nodejs/node-chakracore and @nodejs/node-chakracore-admins teams can be deleted.

closed time in 2 months

jasnell

issue commentnodejs/build

Remove chakracore CI jobs?

Removed 9 jobs from test and 1 from release. Had to update the backup script to support new and deleted jobs, so many older unrelated changes appear in these commits:

  • https://github.com/nodejs/jenkins-config-test/commit/2fd3bdef1f72cfe4ebc25aa43aceeb502e8398cf
  • https://github.com/nodejs/jenkins-config-release/commit/46ecbe91dad1f0f9809788b7dbcaf32febf5fb80

Confirmed the jobs were removed from disk by Jenkins.

jasnell

comment created time in 2 months

issue commentnodejs/build

Auditing @nodejs/platform-windows

stay

Trott

comment created time in 2 months

more