embark/azure-pipelines.yml
Michael Bradley, Jr ad01d1402c test: collect code coverage in the root of the monorepo
Implement scripts to collect coverage reports (JSON format) from all packages
in the monorepo that generate such reports. Reports are copied to
`<root>/.nyc_output/coverage-[pkg-dir-name].json`.

Implement scripts to generate a combined html report in `<root>/coverage`.

Adjust root `reset` and `clean` scripts to delete `<root>/.nyc_output` and
`<root>/coverage`.

Implement a script in `<root>/package.json` to generate a `text-lcov` report
and upload it to coveralls from CI builds. Remove coveralls from
`packages/embark`.

Supply `packages/embark` with an nyc configuration in its `package.json` and
have its `"test":` script generate both `json` and `html` reports.

Use nyc with `embarkjs`'s test suite: supply an nyc configuration in its
`package.json` and have its `"test":` script generate both `json` and `html`
reports.

Adjust `embarkjs`'s tests for more accurate coverage reporting.
2019-04-30 12:04:01 -04:00

103 lines
2.7 KiB
YAML

variables:
ipfsVersion: '0.4.19'
node8: '^8.12.0'
node10: '^10.0.0'
pythonVersion: '2.7.x'
yarnVersion: '1.12.3'
strategy:
matrix:
Node 8 / Linux:
nodeVersion: $(node8)
imageName: 'ubuntu-16.04'
Node 8 / macOS:
nodeVersion: $(node8)
imageName: 'macos-10.13'
Node 8 / Windows:
nodeVersion: $(node8)
imageName: 'vs2017-win2016'
Node 10 / Linux:
nodeVersion: $(node10)
imageName: 'ubuntu-16.04'
Node 10 / macOS:
nodeVersion: $(node10)
imageName: 'macos-10.13'
Node 10 / Windows:
nodeVersion: $(node10)
imageName: 'vs2017-win2016'
pool:
vmImage: $(imageName)
steps:
- task: NodeTool@0
displayName: 'Install Node.js'
inputs:
versionSpec: $(nodeVersion)
- task: UsepythonVersion@0
displayName: 'Install Python'
inputs:
architecture: x64
versionSpec: $(pythonVersion)
- bash: |
mkdir -p ../Downloads
cd ../Downloads
ARCHIVE_EXT="tar.gz"
if [[ "$AGENT_OS" = "Linux" ]]; then
OS="linux"
fi
if [[ "$AGENT_OS" = "Darwin" ]]; then
OS="darwin"
fi
if [[ "$AGENT_OS" = "Windows_NT" ]]; then
OS="windows"
ARCHIVE_EXT="zip"
fi
URL="https://dist.ipfs.io/go-ipfs/v${IPFSVERSION}/go-ipfs_v${IPFSVERSION}_${OS}-amd64.${ARCHIVE_EXT}"
curl -L -o "go-ipfs.${ARCHIVE_EXT}" "$URL"
if [[ "$AGENT_OS" = "Windows_NT" ]]; then
unzip go-ipfs.zip
else
tar xzvf go-ipfs.tar.gz
fi
displayName: 'Install IPFS'
- bash: |
export PATH="$(cd ../Downloads && pwd)/go-ipfs:${PATH}"
ipfs version
ipfs init
displayName: 'Initialize IPFS'
- bash: |
curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version "$YARNVERSION"
export PATH="${HOME}/.yarn/bin:${HOME}/.config/yarn/global/node_modules/.bin:${PATH}"
yarn --version
mkdir -p ../Downloads/Yarn
displayName: 'Install Yarn'
- bash: |
pushd "$PWD" &>/dev/null
cd ../Downloads
export PATH="${PWD}/go-ipfs:${PATH}"
export PATH="${HOME}/.yarn/bin:${HOME}/.config/yarn/global/node_modules/.bin:${PATH}"
yarn config set cache-folder "${PWD}/Yarn" &>/dev/null
popd &>/dev/null
npm run ci:full
npm run coveralls
condition: ne( variables['Agent.OS'], 'Windows_NT' )
displayName: 'Test (*nix)'
- powershell: |
pushd
cd ..\Downloads
$env:PATH="$($PWD.Path)\go-ipfs;$($env:PATH)"
$env:PATH="$($env:USERPROFILE)\.yarn\bin;$($env:USERPROFILE)\.config\yarn\global\node_modules\.bin;$($env:PATH)"
yarn config set cache-folder "$($PWD.Path)\Yarn" | out-null
popd
npm run ci:full
npm run coveralls
condition: eq( variables['Agent.OS'], 'Windows_NT' )
displayName: 'Test (Windows)'