Skip to content

Commit a99d176

Browse files
ci(NODE-4204): add support for latest node version in CI (#530)
1 parent 9c6a4b3 commit a99d176

File tree

2 files changed

+61
-26
lines changed

2 files changed

+61
-26
lines changed

.evergreen/config.yml

Lines changed: 15 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -19,34 +19,13 @@ functions:
1919
- command: git.get_project
2020
params:
2121
directory: src
22-
- command: shell.exec
22+
- command: subprocess.exec
2323
params:
2424
working_dir: src
25-
script: |
26-
# Get the current unique version of this checkout
27-
if [ "${is_patch}" = "true" ]; then
28-
CURRENT_VERSION=$(git describe)-patch-${version_id}
29-
else
30-
CURRENT_VERSION=latest
31-
fi
32-
export PROJECT_DIRECTORY="$(pwd)"
33-
34-
# get the latest version of node for given major version
35-
NODE_VERSION=$(curl -sL nodejs.org/download/release/latest-v${NODE_MAJOR_VERSION}.x/SHASUMS256.txt -o - | head -n 1 | tr -s ' ' | cut -d' ' -f2 | cut -d- -f2 | cut -dv -f2)
36-
echo "LATEST NODE ${NODE_MAJOR_VERSION}.x = $NODE_VERSION"
37-
38-
cat <<EOT > expansion.yml
39-
CURRENT_VERSION: "$CURRENT_VERSION"
40-
PROJECT_DIRECTORY: "$PROJECT_DIRECTORY"
41-
NODE_VERSION: "$NODE_VERSION"
42-
PREPARE_SHELL: |
43-
set -o errexit
44-
set -o xtrace
45-
export PROJECT_DIRECTORY="$PROJECT_DIRECTORY"
46-
export NODE_VERSION="$NODE_VERSION"
47-
EOT
48-
# See what we've done
49-
cat expansion.yml
25+
binary: bash
26+
add_expansions_to_env: true
27+
args:
28+
- .evergreen/setup-environment.sh
5029
- command: expansions.update
5130
params:
5231
file: src/expansion.yml
@@ -122,6 +101,16 @@ tasks:
122101
- func: run tests
123102
vars:
124103
TEST_TARGET: node
104+
- name: node-tests-latest
105+
tags: ["node"]
106+
commands:
107+
- func: fetch source
108+
vars:
109+
NODE_MAJOR_VERSION: latest
110+
- func: install dependencies
111+
- func: run tests
112+
vars:
113+
TEST_TARGET: node
125114
- name: web-tests
126115
tags: ["web"]
127116
commands:

.evergreen/setup-environment.sh

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#! /usr/bin/env bash
2+
3+
if [ -z "$NODE_MAJOR_VERSION" ]; then
4+
echo "NODE_MAJOR_VERSION environment variable must be specified"
5+
exit 1
6+
fi
7+
8+
# Get the current unique version of this checkout
9+
if [ "${is_patch}" = "true" ]; then
10+
CURRENT_VERSION=$(git describe)-patch-${version_id}
11+
else
12+
CURRENT_VERSION=latest
13+
fi
14+
export PROJECT_DIRECTORY="$(pwd)"
15+
16+
latest_version_for_node_major() {
17+
local __NODE_MAJOR_VERSION=$1
18+
local NODE_DOWNLOAD_URI="https://nodejs.org/download/release/latest-v${__NODE_MAJOR_VERSION}.x/SHASUMS256.txt"
19+
20+
if [ $__NODE_MAJOR_VERSION == 'latest' ]
21+
then
22+
NODE_DOWNLOAD_URI="https://nodejs.org/download/release/latest/SHASUMS256.txt"
23+
fi
24+
25+
# check that the requested version does exist
26+
curl --silent --fail $NODE_DOWNLOAD_URI &> /dev/null
27+
28+
echo $(curl --retry 8 --retry-delay 5 --max-time 50 --silent -o- $NODE_DOWNLOAD_URI | head -n 1 | awk '{print $2};' | cut -d- -f2)
29+
}
30+
31+
NODE_VERSION=$(latest_version_for_node_major $NODE_MAJOR_VERSION)
32+
33+
echo "LATEST NODE ${NODE_MAJOR_VERSION}.x = $NODE_VERSION"
34+
35+
cat <<EOT > expansion.yml
36+
CURRENT_VERSION: "$CURRENT_VERSION"
37+
PROJECT_DIRECTORY: "$PROJECT_DIRECTORY"
38+
NODE_VERSION: "$NODE_VERSION"
39+
PREPARE_SHELL: |
40+
set -o errexit
41+
set -o xtrace
42+
export PROJECT_DIRECTORY="$PROJECT_DIRECTORY"
43+
export NODE_VERSION="$NODE_VERSION"
44+
EOT
45+
# See what we've done
46+
cat expansion.yml

0 commit comments

Comments
 (0)