From 1c44705685a38d0eecf239786514c250d8ef778f Mon Sep 17 00:00:00 2001 From: Bart Louwers Date: Tue, 1 Aug 2023 12:38:06 +0200 Subject: [PATCH] Fix flaky Node.js CI with cache (#1443) --- .github/workflows/node-ci.yml | 7 +++++++ platform/node/CMakeLists.txt | 1 + platform/node/cmake/module.cmake | 33 +++++++++++--------------------- 3 files changed, 19 insertions(+), 22 deletions(-) diff --git a/.github/workflows/node-ci.yml b/.github/workflows/node-ci.yml index fcaaf607d..876d36980 100644 --- a/.github/workflows/node-ci.yml +++ b/.github/workflows/node-ci.yml @@ -169,6 +169,13 @@ jobs: ${{ matrix.runs-on }}-${{ env.BUILDTYPE }}-${{ github.job }}-${{ github.ref }} ${{ matrix.runs-on }}-${{ env.BUILDTYPE }}-${{ github.job }} + - name: Cache cmake-node-module deps + uses: actions/cache@v3 + with: + # downloaded with platform/node/cmake/module.cmake + path: build/headers + key: ${{ runner.os }}-${{ runner.arch }}-cmake-node-module-deps + - name: Configure maplibre-native (MacOS) if: runner.os == 'MacOS' run: | diff --git a/platform/node/CMakeLists.txt b/platform/node/CMakeLists.txt index 68767b15b..58ee0545f 100644 --- a/platform/node/CMakeLists.txt +++ b/platform/node/CMakeLists.txt @@ -1,5 +1,6 @@ set(NODE_MODULE_MINIMUM_ABI 83) # Minimum supported Node.js version: 14 set(NODE_MODULE_CACHE_DIR ${CMAKE_SOURCE_DIR}/build/headers) + include(${CMAKE_CURRENT_LIST_DIR}/cmake/module.cmake) add_node_module( diff --git a/platform/node/cmake/module.cmake b/platform/node/cmake/module.cmake index 796590316..7e41e617d 100644 --- a/platform/node/cmake/module.cmake +++ b/platform/node/cmake/module.cmake @@ -15,28 +15,17 @@ function(_node_module_download _TYPE _URL _FILE) string(RANDOM LENGTH 32 _TMP) set(_TMP "${CMAKE_BINARY_DIR}/${_TMP}") message(STATUS "[Node.js] Downloading ${_TYPE}...") - - set(_RETRIES 5) - foreach(_RETRY_NUMBER 1 RANGE ${_RETRIES}) - file(DOWNLOAD "${_URL}" "${_TMP}" STATUS _STATUS TLS_VERIFY ON) - list(GET _STATUS 0 _STATUS_CODE) - - if(NOT _STATUS_CODE EQUAL 0) - file(REMOVE "${_TMP}") - list(GET _STATUS 1 _STATUS_MESSAGE) - - if(_RETRY_NUMBER EQUAL ${_RETRIES}) - message(FATAL_ERROR "[Node.js] Failed to download ${_TYPE}: ${_STATUS_MESSAGE}") - else() - message(WARNING "[Node.js] Failed to download ${_TYPE}: ${_STATUS_MESSAGE}. Trying again...") - endif() - else() - get_filename_component(_DIR "${_FILE}" DIRECTORY) - file(MAKE_DIRECTORY "${_DIR}") - file(RENAME "${_TMP}" "${_FILE}") - break() - endif() - endforeach() + file(DOWNLOAD "${_URL}" "${_TMP}" STATUS _STATUS TLS_VERIFY ON) + list(GET _STATUS 0 _STATUS_CODE) + if(NOT _STATUS_CODE EQUAL 0) + file(REMOVE "${_TMP}") + list(GET _STATUS 1 _STATUS_MESSAGE) + message(FATAL_ERROR "[Node.js] Failed to download ${_TYPE}: ${_STATUS_MESSAGE}") + else() + get_filename_component(_DIR "${_FILE}" DIRECTORY) + file(MAKE_DIRECTORY "${_DIR}") + file(RENAME "${_TMP}" "${_FILE}") + endif() endfunction()