Fix flaky Node.js CI with cache (#1443)
This commit is contained in:
7
.github/workflows/node-ci.yml
vendored
7
.github/workflows/node-ci.yml
vendored
@@ -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: |
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user