From 8e31d92c453e9f24868ec11eaf48c0c09fd0bcc2 Mon Sep 17 00:00:00 2001 From: Merlin Beutlberger Date: Fri, 14 Jun 2019 16:24:25 +0200 Subject: [PATCH 1/2] [INTERNAL] Set up CI with Azure Pipelines --- .gitignore | 3 +++ .travis.yml | 16 ++------------ README.md | 2 +- azure-pipelines.yml | 50 ++++++++++++++++++++++++++++++++++++++++++ package-lock.json | 53 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 6 ++++- 6 files changed, 114 insertions(+), 16 deletions(-) create mode 100644 azure-pipelines.yml diff --git a/.gitignore b/.gitignore index 0bae7c16..052409d7 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,9 @@ coverage # nyc test coverage .nyc_output +# CI (Azure Pipelines) xUnit test results +test-results.xml + # IDEs .vscode/ *.~vsdx diff --git a/.travis.yml b/.travis.yml index 78a9124d..ae651868 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,21 +1,9 @@ language: node_js # don't install any environment node_js: -- "11" +- "lts/*" -os: -- linux -- osx -- windows - -matrix: - include: - - os: linux - node_js: - - "10" - - os: linux - node_js: - - "8" +script: npm run coverage after_script: - if [[ "$TRAVIS_OS_NAME" == "linux" && diff --git a/README.md b/README.md index 0367ab35..821aa228 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ > UI5 specific file system abstraction > Part of the [UI5 Tooling](https://github.com/SAP/ui5-tooling) -[![Travis CI Build Status](https://travis-ci.org/SAP/ui5-fs.svg?branch=master)](https://travis-ci.org/SAP/ui5-fs) +[![Build Status](https://dev.azure.com/sap/opensource/_apis/build/status/SAP.ui5-fs?branchName=master)](https://dev.azure.com/sap/opensource/_build/latest?definitionId=36&branchName=master) [![npm Package Version](https://badge.fury.io/js/%40ui5%2Ffs.svg)](https://www.npmjs.com/package/@ui5/fs) [![Coverage Status](https://coveralls.io/repos/github/SAP/ui5-fs/badge.svg)](https://coveralls.io/github/SAP/ui5-fs) [![Dependency Status](https://david-dm.org/SAP/ui5-fs/master.svg)](https://david-dm.org/SAP/ui5-fs/master) diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 00000000..a18da297 --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,50 @@ +# Node.js +# Build a general Node.js project with npm. +# Add steps that analyze code, save build artifacts, deploy, and more: +# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript + +trigger: +- master + +strategy: + matrix: + linux_node_8: + imageName: 'ubuntu-16.04' + node_version: 8.x + linux_node_10: + imageName: 'ubuntu-16.04' + node_version: 10.x + linux_node_latest: + imageName: 'ubuntu-16.04' + node_version: 11.x + mac_node_latest: + imageName: 'macos-10.13' + node_version: 11.x + windows_node_latest: + imageName: 'vs2017-win2016' + node_version: 11.x + +pool: + vmImage: $(imageName) + +steps: +- task: NodeTool@0 + inputs: + versionSpec: $(node_version) + displayName: 'Install Node.js' + +- script: npm ci +- script: npm run test-azure + +- task: PublishTestResults@2 + condition: succeededOrFailed() + inputs: + testResultsFormat: 'JUnit' + testResultsFiles: '$(System.DefaultWorkingDirectory)/test-results.xml' + +- task: PublishCodeCoverageResults@1 + condition: succeededOrFailed() + inputs: + codeCoverageTool: 'cobertura' + summaryFileLocation: '$(System.DefaultWorkingDirectory)/coverage/cobertura-coverage.xml' + diff --git a/package-lock.json b/package-lock.json index f043632b..33556aa8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2165,6 +2165,12 @@ "is-obj": "^1.0.0" } }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, "duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", @@ -6304,6 +6310,34 @@ "readable-stream": "^2" } }, + "tap-xunit": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tap-xunit/-/tap-xunit-2.4.1.tgz", + "integrity": "sha512-qcZStDtjjYjMKAo7QNiCtOW256g3tuSyCSe5kNJniG1Q2oeOExJq4vm8CwboHZURpkXAHvtqMl4TVL7mcbMVVA==", + "dev": true, + "requires": { + "duplexer": "~0.1.1", + "minimist": "~1.2.0", + "tap-parser": "~1.2.2", + "through2": "~2.0.0", + "xmlbuilder": "~4.2.0", + "xtend": "~4.0.0" + }, + "dependencies": { + "tap-parser": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-1.2.2.tgz", + "integrity": "sha1-Xi9pcGEfB5x8+FfeHceqG0gN56U=", + "dev": true, + "requires": { + "events-to-array": "^1.0.1", + "inherits": "~2.0.1", + "js-yaml": "^3.2.7", + "readable-stream": "^2" + } + } + } + }, "temp-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", @@ -6414,6 +6448,16 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, "time-zone": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", @@ -6978,6 +7022,15 @@ "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", "dev": true }, + "xmlbuilder": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz", + "integrity": "sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU=", + "dev": true, + "requires": { + "lodash": "^4.0.0" + } + }, "xmlcreate": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.1.tgz", diff --git a/package.json b/package.json index 3a52fb67..3457d5df 100644 --- a/package.json +++ b/package.json @@ -19,13 +19,16 @@ }, "scripts": { "test": "npm run lint && npm run jsdoc-generate && npm run coverage", + "test-azure": "npm run lint && npm run jsdoc-generate && npm run coverage-xunit", "lint": "eslint ./", "unit": "rimraf test/tmp && ava", "unit-verbose": "rimraf test/tmp && cross-env UI5_LOG_LVL=verbose ava --verbose --serial", "unit-watch": "rimraf test/tmp && ava --watch", "unit-nyan": "rimraf test/tmp && ava --tap | tnyan", + "unit-xunit": "rimraf test/tmp && ava --tap | tap-xunit --dontUseCommentsAsTestNames=true > test-results.xml", "unit-inspect": "cross-env UI5_LOG_LVL=verbose node --inspect-brk node_modules/ava/profile.js", "coverage": "nyc npm run unit", + "coverage-xunit": "nyc --reporter=text --reporter=text-summary --reporter=cobertura npm run unit-xunit", "jsdoc": "npm run jsdoc-generate && opn jsdocs/index.html", "jsdoc-generate": "node_modules/.bin/jsdoc -c ./jsdoc.json ./lib/ || (echo 'Error during JSDoc generation! Check log.' && exit 1)", "preversion": "npm test", @@ -119,7 +122,8 @@ "opn-cli": "^4.1.0", "rimraf": "^2.6.3", "sinon": "^7.3.2", - "tap-nyan": "^1.1.0" + "tap-nyan": "^1.1.0", + "tap-xunit": "^2.4.1" }, "resolutions": { "dir-glob": "2.0.0" From 235adb5c773d84eb2b313c14ae2ab38e60bd4abc Mon Sep 17 00:00:00 2001 From: Merlin Beutlberger Date: Fri, 14 Jun 2019 16:27:15 +0200 Subject: [PATCH 2/2] [INTERNAL] package.json: Remove obsolete dir-glob Yarn resolution --- package.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/package.json b/package.json index 3457d5df..0478b453 100644 --- a/package.json +++ b/package.json @@ -124,8 +124,5 @@ "sinon": "^7.3.2", "tap-nyan": "^1.1.0", "tap-xunit": "^2.4.1" - }, - "resolutions": { - "dir-glob": "2.0.0" } }