From 00f3ef67a67684258735b7a2e181f7699da15f9d Mon Sep 17 00:00:00 2001 From: Douglas Christopher Wilson Date: Sat, 13 Jul 2019 21:55:53 -0400 Subject: [PATCH] build: restructure CI build steps --- .travis.yml | 55 +++++++++++++++++++++++++++++++++++++++------------- appveyor.yml | 42 ++++++++++++++++++++++++++++----------- 2 files changed, 73 insertions(+), 24 deletions(-) diff --git a/.travis.yml b/.travis.yml index eb5bcfb..29ff517 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,20 +20,49 @@ cache: directories: - node_modules before_install: - # Skip updating shrinkwrap / lock - - "npm config set shrinkwrap false" - + # Configure npm + - | + # Skip updating shrinkwrap / lock + npm config set shrinkwrap false # Setup Node.js version-specific dependencies - - "test $TRAVIS_NODE_VERSION != '0.8' || npm rm --save-dev istanbul" - - "test $(echo $TRAVIS_NODE_VERSION | cut -d. -f1) -ge 6 || npm rm --save-dev $(grep -E '\"eslint\\S*\"' package.json | cut -d'\"' -f2)" - + - | + # istanbul for coverage + # - remove for Node.js < 0.10 + if [[ "$(cut -d. -f1 <<< "$TRAVIS_NODE_VERSION")" -eq 0 && "$(cut -d. -f2 <<< "$TRAVIS_NODE_VERSION")" -lt 10 ]]; then + npm rm --silent --save-dev istanbul + fi + - | + # eslint for linting + # - remove on Node.js < 6 + if [[ "$(cut -d. -f1 <<< "$TRAVIS_NODE_VERSION")" -lt 6 ]]; then + node -pe 'Object.keys(require("./package").devDependencies).join("\n")' | \ + grep -E '^eslint(-|$)' | \ + xargs npm rm --save-dev + fi # Update Node.js modules - - "test ! -d node_modules || npm prune" - - "test ! -d node_modules || npm rebuild" + - | + # Prune and rebuild node_modules + if [[ -d node_modules ]]; then + npm prune + npm rebuild + fi script: - # Run test script, depending on istanbul install - - "test ! -z $(npm -ps ls istanbul) || npm test" - - "test -z $(npm -ps ls istanbul) || npm run-script test-ci" - - "test -z $(npm -ps ls eslint) || npm run-script lint" + # Run test script + - | + if npm -ps ls istanbul | grep -q istanbul; then + npm run test-ci + else + npm test + fi + # Run linting + - | + if npm -ps ls eslint | grep -q eslint; then + npm run lint + fi after_script: - - "test -e ./coverage/lcov.info && npm install coveralls@2 && cat ./coverage/lcov.info | coveralls" + - | + # Upload coverage to coveralls + if [[ -f ./coverage/lcov.info ]]; then + npm install --save-dev coveralls@2.13.3 + coveralls < ./coverage/lcov.info + fi diff --git a/appveyor.yml b/appveyor.yml index 813d3b7..00e29d2 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -18,21 +18,41 @@ environment: cache: - node_modules install: + # Install Node.js - ps: >- try { Install-Product node $env:nodejs_version -ErrorAction Stop } catch { Update-NodeJsInstallation (Get-NodeJsLatestBuild $env:nodejs_version) } - - npm config set shrinkwrap false - - if "%nodejs_version%" equ "0.8" npm config set strict-ssl false - - if "%nodejs_version%" equ "0.8" npm rm --save-dev istanbul - - for /f tokens^=2^ delims^=^" %%m in ('findstr /r /c:"eslint[^ ]" package.json') do call npm rm --save-dev %%m - - if exist node_modules npm prune - - if exist node_modules npm rebuild + # Configure npm + - ps: | + # Skip updating shrinkwrap / lock + npm config set shrinkwrap false + # Skip SSL validation on Node.js < 0.10 + if ([int]$env:nodejs_version.split(".")[0] -eq 0 -and [int]$env:nodejs_version.split(".")[1] -lt 10) { + npm config set strict-ssl false + } + # Setup Node.js version-specific dependencies + - ps: | + # Remove coverage dependency + npm rm --silent --save-dev istanbul + # Remove lint dependencies + cmd.exe /c "node -pe `"Object.keys(require('./package').devDependencies).join('\n')`"" | ` + sls "^eslint(-|$)" | ` + %{ npm rm --silent --save-dev $_ } + # Update Node.js modules + - ps: | + # Prune & rebuild node_modules + if (Test-Path -Path node_modules) { + npm prune + npm rebuild + } + # Install Node.js modules - npm install build: off test_script: - - node --version - - npm --version - - set npm_test_command=test - - for /f %%l in ('npm -ps ls istanbul') do set npm_test_command=test-ci - - npm run %npm_test_command% + # Output version data + - ps: | + node --version + npm --version + # Run test script + - npm test version: "{build}"