diff --git a/.github/tsc.json b/.github/tsc.json new file mode 100644 index 0000000000000..158f7e83d3a1b --- /dev/null +++ b/.github/tsc.json @@ -0,0 +1,18 @@ +{ + "problemMatcher": [ + { + "owner": "tsc", + "pattern": [ + { + "regexp": "^(?:\\s+\\d+\\>)?([^\\s].*)\\((\\d+),(\\d+)\\)\\s*:\\s+(error|warning|info)\\s+(\\w{1,2}\\d+)\\s*:\\s*(.*)$", + "file": 1, + "line": 2, + "column": 3, + "severity": 4, + "code": 5, + "message": 6 + } + ] + } + ] +} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 251303b0c952b..2a08d7bd3d183 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,12 +30,19 @@ jobs: run: | npm uninstall typescript --no-save npm uninstall tslint --no-save - - name: npm install and test - run: | - npm install - npm update - npm test - + - run: npm install + - run: npm update + + # Re: https://github.com/actions/setup-node/pull/125 + - name: Register Problem Matcher for TSC + run: echo "##[add-matcher].github/tsc.json" + + - name: Tests + run: npm test -- --no-lint + + - name: Linter + run: npm run lint:ci + - name: Validate the browser can import TypeScript run: gulp test-browser-integration \ No newline at end of file diff --git a/Gulpfile.js b/Gulpfile.js index 095ea5025c4d0..41f193261e990 100644 --- a/Gulpfile.js +++ b/Gulpfile.js @@ -354,7 +354,6 @@ const eslint = (folder) => async () => { "node_modules/eslint/bin/eslint", "--cache", "--cache-location", `${folder}/.eslintcache`, - "--format", "autolinkable-stylish", "--rulesdir", "scripts/eslint/built/rules", "--ext", ".ts", ]; @@ -363,11 +362,19 @@ const eslint = (folder) => async () => { args.push("--fix"); } + // Use stylish format on CI, so that it can be picked up by GH Action's rule matchers + if (cmdLineOptions.ci) { + args.push("--format", "stylish"); + } + else { + args.push("--format", "autolinkable-stylish"); + } + args.push(folder); log(`Linting: ${args.join(" ")}`); return exec(process.execPath, args); -} +}; const lintScripts = eslint("scripts"); lintScripts.displayName = "lint-scripts";