improve Node.js setup on GitHub Actions (#4775)
authorAlex Lam S.L <alexlamsl@gmail.com>
Sun, 14 Mar 2021 22:25:33 +0000 (22:25 +0000)
committerGitHub <noreply@github.com>
Sun, 14 Mar 2021 22:25:33 +0000 (06:25 +0800)
.github/workflows/build.yml
.github/workflows/ci.yml
.github/workflows/ufuzz.yml
test/release/install.sh [new file with mode: 0755]

index 7ef68a7..10cef9d 100644 (file)
@@ -36,20 +36,5 @@ jobs:
       - name: Perform uglify, build & test
         shell: bash
         run: |
-          git clone --branch v1.6.0 --depth 1 https://github.com/jasongin/nvs.git ~/.nvs
-          while ! timeout 60 bash -c '. ~/.nvs/nvs.sh add $NODE && nvs use $NODE'; do
-            cd ~/.nvs
-            while !(git clean -xdf); do echo "'git clean' failed - retrying..."; done
-            cd -
-          done
-          . ~/.nvs/nvs.sh --version
-          nvs use $NODE
-          node --version
-          npm config set audit false
-          npm config set optional false
-          npm config set save false
-          npm config set strict-ssl false
-          npm config set update-notifier false
-          npm --version
-          while !(npm install); do echo "'npm install' failed - retrying..."; done
+          . ./test/release/install.sh
           ./test/release/$SCRIPT $OPTIONS
index 60db779..b1bbd93 100644 (file)
@@ -29,20 +29,5 @@ jobs:
       - name: Perform tests
         shell: bash
         run: |
-          git clone --branch v1.6.0 --depth 1 https://github.com/jasongin/nvs.git ~/.nvs
-          while ! timeout 60 bash -c '. ~/.nvs/nvs.sh add $NODE && nvs use $NODE'; do
-            cd ~/.nvs
-            while !(git clean -xdf); do echo "'git clean' failed - retrying..."; done
-            cd -
-          done
-          . ~/.nvs/nvs.sh --version
-          nvs use $NODE
-          node --version
-          npm config set audit false
-          npm config set optional false
-          npm config set save false
-          npm config set strict-ssl false
-          npm config set update-notifier false
-          npm --version
-          while !(npm install); do echo "'npm install' failed - retrying..."; done
+          . ./test/release/install.sh
           node test/$TYPE
index 910dbd5..285d046 100644 (file)
@@ -30,33 +30,10 @@ jobs:
       NODE: ${{ matrix.node }}
     steps:
       - uses: actions/checkout@v2
-      - name: Install GNU Core Utilities
-        if: ${{ startsWith(matrix.os, 'macos') }}
-        env:
-          HOMEBREW_NO_BOTTLE_SOURCE_FALLBACK: 1
-          HOMEBREW_NO_INSTALL_CLEANUP: 1
-        shell: bash
-        run: |
-          while !(brew install coreutils); do echo "'brew install' failed - retrying..."; done
       - name: Perform fuzzing
         shell: bash
         run: |
-          git clone --branch v1.6.0 --depth 1 https://github.com/jasongin/nvs.git ~/.nvs
-          while ! timeout 60 bash -c '. ~/.nvs/nvs.sh add $NODE && nvs use $NODE'; do
-            cd ~/.nvs
-            while !(git clean -xdf); do echo "'git clean' failed - retrying..."; done
-            cd -
-          done
-          . ~/.nvs/nvs.sh --version
-          nvs use $NODE
-          node --version
-          npm config set audit false
-          npm config set optional false
-          npm config set save false
-          npm config set strict-ssl false
-          npm config set update-notifier false
-          npm --version
-          while !(npm install); do echo "'npm install' failed - retrying..."; done
+          . ./test/release/install.sh
           if [[ $CAUSE == "schedule" ]]; then
             node test/ufuzz/job $BASE_URL $TOKEN $RUN_NUM
           else
diff --git a/test/release/install.sh b/test/release/install.sh
new file mode 100755 (executable)
index 0000000..2c5f4d3
--- /dev/null
@@ -0,0 +1,33 @@
+if command -v timeout &> /dev/null; then NATIVE=1; fi
+timeout() {
+    T=$1
+    shift
+    shift
+    shift
+    expect <<EOF
+set timeout $T
+spawn -noecho sh -c "$@"
+expect timeout { exit 124 } eof
+catch wait ret
+exit [lindex \$ret 3]
+EOF
+    return $?
+}
+if [ $NATIVE ]; then unset -f timeout; fi
+
+git clone --branch v1.6.0 --depth 1 https://github.com/jasongin/nvs.git ~/.nvs
+while ! timeout 60 bash -c ". ~/.nvs/nvs.sh add $NODE && nvs use $NODE"; do
+    cd ~/.nvs
+    while !(git clean -xdf); do echo "'git clean' failed - retrying..."; done
+    cd -
+done
+. ~/.nvs/nvs.sh --version
+nvs use $NODE
+node --version
+npm config set audit false
+npm config set optional false
+npm config set save false
+npm config set strict-ssl false
+npm config set update-notifier false
+npm --version
+while !(npm install); do echo "'npm install' failed - retrying..."; done