@nrwl/workspace 14.0.0-beta.1 → 14.0.0-beta.4

Sign up to get free protection for your applications and to get access to all the features.
package/.eslintrc.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "extends": "../../.eslintrc",
3
+ "rules": {},
4
+ "overrides": [
5
+ {
6
+ "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
7
+ "rules": {}
8
+ },
9
+ {
10
+ "files": ["**/*.ts"],
11
+ "excludedFiles": ["./src/migrations/**", "./src/utils/**"],
12
+ "rules": {
13
+ "no-restricted-imports": [
14
+ "error",
15
+ "@nrwl/workspace",
16
+ "@angular-devkit/core",
17
+ "@angular-devkit/architect",
18
+ "@angular-devkit/schematics"
19
+ ]
20
+ }
21
+ }
22
+ ],
23
+ "ignorePatterns": ["!**/*"]
24
+ }
package/generators.json CHANGED
@@ -141,6 +141,12 @@
141
141
  "schema": "./src/generators/npm-package/schema.json",
142
142
  "description": "Create a minimal NPM package.",
143
143
  "x-type": "library"
144
+ },
145
+
146
+ "ci-workflow": {
147
+ "factory": "./src/generators/ci-workflow/ci-workflow#ciWorkflowGenerator",
148
+ "schema": "./src/generators/ci-workflow/schema.json",
149
+ "description": "Generete a CI workflow."
144
150
  }
145
151
  }
146
152
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nrwl/workspace",
3
- "version": "14.0.0-beta.1",
3
+ "version": "14.0.0-beta.4",
4
4
  "description": "Smart, Fast and Extensible Build System.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -32,26 +32,26 @@
32
32
  "requirements": {},
33
33
  "migrations": "./migrations.json",
34
34
  "packageGroup": {
35
- "@nrwl/angular": "14.0.0-beta.1",
36
- "@nrwl/cypress": "14.0.0-beta.1",
37
- "@nrwl/devkit": "14.0.0-beta.1",
38
- "@nrwl/eslint-plugin-nx": "14.0.0-beta.1",
39
- "@nrwl/express": "14.0.0-beta.1",
40
- "@nrwl/jest": "14.0.0-beta.1",
41
- "@nrwl/linter": "14.0.0-beta.1",
42
- "@nrwl/nest": "14.0.0-beta.1",
43
- "@nrwl/next": "14.0.0-beta.1",
44
- "@nrwl/node": "14.0.0-beta.1",
45
- "@nrwl/nx-plugin": "14.0.0-beta.1",
46
- "@nrwl/react": "14.0.0-beta.1",
47
- "@nrwl/storybook": "14.0.0-beta.1",
48
- "@nrwl/web": "14.0.0-beta.1",
49
- "@nrwl/js": "14.0.0-beta.1",
50
- "@nrwl/cli": "14.0.0-beta.1",
35
+ "@nrwl/angular": "14.0.0-beta.4",
36
+ "@nrwl/cypress": "14.0.0-beta.4",
37
+ "@nrwl/devkit": "14.0.0-beta.4",
38
+ "@nrwl/eslint-plugin-nx": "14.0.0-beta.4",
39
+ "@nrwl/express": "14.0.0-beta.4",
40
+ "@nrwl/jest": "14.0.0-beta.4",
41
+ "@nrwl/linter": "14.0.0-beta.4",
42
+ "@nrwl/nest": "14.0.0-beta.4",
43
+ "@nrwl/next": "14.0.0-beta.4",
44
+ "@nrwl/node": "14.0.0-beta.4",
45
+ "@nrwl/nx-plugin": "14.0.0-beta.4",
46
+ "@nrwl/react": "14.0.0-beta.4",
47
+ "@nrwl/storybook": "14.0.0-beta.4",
48
+ "@nrwl/web": "14.0.0-beta.4",
49
+ "@nrwl/js": "14.0.0-beta.4",
50
+ "@nrwl/cli": "14.0.0-beta.4",
51
51
  "@nrwl/nx-cloud": "latest",
52
- "@nrwl/react-native": "14.0.0-beta.1",
53
- "@nrwl/detox": "14.0.0-beta.1",
54
- "nx": "14.0.0-beta.1"
52
+ "@nrwl/react-native": "14.0.0-beta.4",
53
+ "@nrwl/detox": "14.0.0-beta.4",
54
+ "nx": "14.0.0-beta.4"
55
55
  }
56
56
  },
57
57
  "peerDependencies": {
@@ -84,9 +84,9 @@
84
84
  "minimatch": "3.0.4",
85
85
  "enquirer": "~2.3.6",
86
86
  "tslib": "^2.3.0",
87
- "nx": "14.0.0-beta.1",
88
- "@nrwl/devkit": "14.0.0-beta.1",
89
- "@nrwl/jest": "14.0.0-beta.1",
90
- "@nrwl/linter": "14.0.0-beta.1"
87
+ "nx": "14.0.0-beta.4",
88
+ "@nrwl/devkit": "14.0.0-beta.4",
89
+ "@nrwl/jest": "14.0.0-beta.4",
90
+ "@nrwl/linter": "14.0.0-beta.4"
91
91
  }
92
92
  }
@@ -0,0 +1,6 @@
1
+ import { Tree } from '@nrwl/devkit';
2
+ export interface Schema {
3
+ name?: string;
4
+ ci: 'github' | 'azure' | 'circleci';
5
+ }
6
+ export declare function ciWorkflowGenerator(host: Tree, schema: Schema): Promise<void>;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ciWorkflowGenerator = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const devkit_1 = require("@nrwl/devkit");
6
+ const default_base_1 = require("../../utilities/default-base");
7
+ function ciWorkflowGenerator(host, schema) {
8
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
9
+ const ci = schema.ci;
10
+ const options = normalizeOptions(schema);
11
+ const nxJson = (0, devkit_1.readJson)(host, 'nx.json');
12
+ const nxCloudUsed = Object.values(nxJson.tasksRunnerOptions).find((r) => r.runner == '@nrwl/nx-cloud');
13
+ if (!nxCloudUsed) {
14
+ throw new Error('This workspace is not connected to Nx Cloud.');
15
+ }
16
+ (0, devkit_1.generateFiles)(host, (0, devkit_1.joinPathFragments)(__dirname, 'files', ci), '', options);
17
+ yield (0, devkit_1.formatFiles)(host);
18
+ });
19
+ }
20
+ exports.ciWorkflowGenerator = ciWorkflowGenerator;
21
+ function normalizeOptions(options) {
22
+ const { name: workflowName, fileName: workflowFileName } = (0, devkit_1.names)(options.name || 'CI');
23
+ const { exec: packageManagerPrefix, ciInstall: packageManagerInstall } = (0, devkit_1.getPackageManagerCommand)();
24
+ return {
25
+ workflowName,
26
+ workflowFileName,
27
+ packageManagerInstall,
28
+ packageManagerPrefix,
29
+ mainBranch: (0, default_base_1.deduceDefaultBase)(),
30
+ tmpl: '',
31
+ };
32
+ }
33
+ //# sourceMappingURL=ci-workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-workflow.js","sourceRoot":"","sources":["../../../../../../packages/workspace/src/generators/ci-workflow/ci-workflow.ts"],"names":[],"mappings":";;;;AAAA,yCASsB;AACtB,+DAAiE;AAOjE,SAAsB,mBAAmB,CAAC,IAAU,EAAE,MAAc;;QAClE,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAEzC,MAAM,MAAM,GAAwB,IAAA,iBAAQ,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAC/D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,gBAAgB,CACpC,CAAC;QACF,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;SACjE;QAED,IAAA,sBAAa,EAAC,IAAI,EAAE,IAAA,0BAAiB,EAAC,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC5E,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CAAA;AAdD,kDAcC;AAWD,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,IAAA,cAAK,EAC9D,OAAO,CAAC,IAAI,IAAI,IAAI,CACrB,CAAC;IACF,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,SAAS,EAAE,qBAAqB,EAAE,GACpE,IAAA,iCAAwB,GAAE,CAAC;IAC7B,OAAO;QACL,YAAY;QACZ,gBAAgB;QAChB,qBAAqB;QACrB,oBAAoB;QACpB,UAAU,EAAE,IAAA,gCAAiB,GAAE;QAC/B,IAAI,EAAE,EAAE;KACT,CAAC;AACJ,CAAC"}
@@ -0,0 +1,60 @@
1
+ name: <%= workflowName %>
2
+
3
+ trigger:
4
+ - <%= mainBranch %>
5
+ pr:
6
+ - <%= mainBranch %>
7
+
8
+ variables:
9
+ CI: 'true'
10
+ NX_CLOUD_DISTRIBUTED_EXECUTION: 'true'
11
+ ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
12
+ NX_BRANCH: $(System.PullRequest.PullRequestNumber)
13
+ TARGET_BRANCH: $[replace(variables['System.PullRequest.TargetBranch'],'refs/heads/','origin/')]
14
+ BASE_SHA: $(git merge-base $(TARGET_BRANCH) HEAD)
15
+ ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
16
+ NX_BRANCH: $(Build.SourceBranchName)
17
+ BASE_SHA: $(git rev-parse HEAD~1)
18
+ HEAD_SHA: $(git rev-parse HEAD)
19
+
20
+ jobs:
21
+ - job: agents
22
+ strategy:
23
+ parallel: 3
24
+ displayName: Nx Cloud Agent
25
+ pool:
26
+ vmImage: 'ubuntu-latest'
27
+ steps:
28
+ <% if(packageManagerPrefix == 'pnpm exec'){ %>
29
+ - script: npm install --prefix=$HOME/.local -g pnpm@6.32.4
30
+ displayName: Install PNPM
31
+ <% } %>- script: <%= packageManagerInstall %>
32
+ displayName: NPM Install Dependencies
33
+ - script: npx nx-cloud start-agent
34
+ displayName: Start Nx-Cloud agent
35
+
36
+ - job: main
37
+ displayName: Nx Cloud Main
38
+ pool:
39
+ vmImage: 'ubuntu-latest'
40
+ steps:
41
+ <% if(packageManagerPrefix == 'pnpm exec'){ %>
42
+ - script: npm install --prefix=$HOME/.local -g pnpm@6.32.4
43
+ displayName: Install PNPM
44
+ <% } %>- script: <%= packageManagerInstall %>
45
+ displayName: NPM Install Dependencies
46
+ - script: <%= packageManagerPrefix %> nx-cloud start-ci-run
47
+ displayName: Start CI run
48
+ - script: <%= packageManagerPrefix %> nx-cloud record -- <%= packageManagerPrefix %> nx workspace-lint
49
+ displayName: Run workspace lint
50
+ - script: <%= packageManagerPrefix %> nx-cloud record -- <%= packageManagerPrefix %> nx format:check --base=$(BASE_SHA) --head=$(HEAD_SHA)
51
+ displayName: Check format
52
+ - script: <%= packageManagerPrefix %> nx affected --base=$(BASE_SHA) --head=$(HEAD_SHA) --target=lint --parallel=3
53
+ displayName: Run lint
54
+ - script: <%= packageManagerPrefix %> nx affected --base=$(BASE_SHA) --head=$(HEAD_SHA) --target=test --parallel=3 --ci --code-coverage
55
+ displayName: Run test
56
+ - script: <%= packageManagerPrefix %> nx affected --base=$(BASE_SHA) --head=$(HEAD_SHA) --target=build --parallel=3
57
+ displayName: Run build
58
+ - script: <%= packageManagerPrefix %> nx-cloud stop-all-agents
59
+ condition: always()
60
+ displayName: Stop all Nx-Cloud agents
@@ -0,0 +1,76 @@
1
+ version: 2.1
2
+
3
+ orbs:
4
+ nx: nrwl/nx@1.4.0
5
+
6
+ jobs:
7
+ agent:
8
+ docker:
9
+ - image: cimg/node:lts-browsers
10
+ parameters:
11
+ ordinal:
12
+ type: integer
13
+ steps:
14
+ - checkout
15
+ <% if(packageManagerPrefix == 'pnpm exec'){ %>
16
+ - run:
17
+ name: Install PNPM
18
+ command: npm install --prefix=$HOME/.local -g pnpm@6.32.4
19
+ <% } %>- run:
20
+ name: Install dependencies
21
+ command: <%= packageManagerInstall %>
22
+ - run:
23
+ name: Start the agent << parameters.ordinal >>
24
+ command: <%= packageManagerPrefix %> nx-cloud start-agent
25
+ no_output_timeout: 60m
26
+ main:
27
+ docker:
28
+ - image: cimg/node:lts-browsers
29
+ environment:
30
+ NX_CLOUD_DISTRIBUTED_EXECUTION: 'true'
31
+ steps:
32
+ - checkout
33
+ <% if(packageManagerPrefix == 'pnpm exec'){ %>
34
+ - run:
35
+ name: Install PNPM
36
+ command: npm install --prefix=$HOME/.local -g pnpm@6.32.4
37
+ <% } %>- run:
38
+ name: Install dependencies
39
+ command: <%= packageManagerInstall %>
40
+ - nx/set-shas:
41
+ main-branch-name: '<%= mainBranch %>'
42
+ - run:
43
+ name: Initialize the Nx Cloud distributed CI run
44
+ command: <%= packageManagerPrefix %> nx-cloud start-ci-run
45
+ - run:
46
+ name: Run workspace lint
47
+ command: <%= packageManagerPrefix %> nx-cloud record -- <%= packageManagerPrefix %> nx workspace-lint
48
+ - run:
49
+ name: Check format
50
+ command: <%= packageManagerPrefix %> nx-cloud record -- <%= packageManagerPrefix %> nx format:check --base=$NX_BASE --head=$NX_HEAD
51
+ - run:
52
+ name: Run lint
53
+ command: <%= packageManagerPrefix %> nx affected --base=$NX_BASE --head=$NX_HEAD --target=lint --parallel=3
54
+ - run:
55
+ name: Run test
56
+ command: <%= packageManagerPrefix %> nx affected --base=$NX_BASE --head=$NX_HEAD --target=test --parallel=3 --ci --code-coverage
57
+ - run:
58
+ name: Run build
59
+ command: <%= packageManagerPrefix %> nx affected --base=$NX_BASE --head=$NX_HEAD --target=build --parallel=3
60
+ - run:
61
+ name: Stop all agents
62
+ command: <%= packageManagerPrefix %> nx-cloud stop-all-agents
63
+ when: always
64
+
65
+ workflows:
66
+ version: 2
67
+
68
+ <%= workflowFileName %>:
69
+ jobs:
70
+ - agent:
71
+ name: Nx Cloud Agent << matrix.ordinal >>
72
+ matrix:
73
+ parameters:
74
+ ordinal: [1, 2, 3]
75
+ - main:
76
+ name: Nx Cloud Main
@@ -0,0 +1,26 @@
1
+ name: <%= workflowName %>
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - <%= mainBranch %>
7
+ pull_request:
8
+
9
+ jobs:
10
+ main:
11
+ name: Nx Cloud - Main Job
12
+ uses: nrwl/ci/.github/workflows/nx-cloud-main.yml@v0.2
13
+ with:
14
+ parallel-commands: |
15
+ <%= packageManagerPrefix %> nx-cloud record -- <%= packageManagerPrefix %> nx workspace-lint
16
+ <%= packageManagerPrefix %> nx-cloud record -- <%= packageManagerPrefix %> nx format:check
17
+ parallel-commands-on-agents: |
18
+ <%= packageManagerPrefix %> nx affected --target=lint --parallel=3
19
+ <%= packageManagerPrefix %> nx affected --target=test --parallel=3 --ci --code-coverage
20
+ <%= packageManagerPrefix %> nx affected --target=build --parallel=3
21
+
22
+ agents:
23
+ name: Nx Cloud - Agents
24
+ uses: nrwl/ci/.github/workflows/nx-cloud-agents.yml@v0.2
25
+ with:
26
+ number-of-agents: 3
@@ -0,0 +1,36 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "NxWorkspaceCIWorkflow",
4
+ "title": "Generate a CI workflow.",
5
+ "description": "Generate a CI workflow.",
6
+ "cli": "nx",
7
+ "type": "object",
8
+ "properties": {
9
+ "ci": {
10
+ "type": "string",
11
+ "description": "CI provider.",
12
+ "enum": ["github", "circleci", "azure"],
13
+ "x-prompt": {
14
+ "message": "What is your target CI provider?",
15
+ "type": "list",
16
+ "items": [
17
+ { "value": "github", "label": "Github Actions" },
18
+ { "value": "circleci", "label": "Circle CI" },
19
+ { "value": "azure", "label": "Azure DevOps" }
20
+ ]
21
+ }
22
+ },
23
+ "name": {
24
+ "type": "string",
25
+ "description": "Workflow name.",
26
+ "$default": {
27
+ "$source": "argv",
28
+ "index": 0
29
+ },
30
+ "default": "CI",
31
+ "x-prompt": "How should we name your workflow?",
32
+ "pattern": "^[a-zA-Z].*$"
33
+ }
34
+ },
35
+ "required": ["ci"]
36
+ }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.eslintConfigPrettierVersion = exports.eslintVersion = exports.typescriptESLintVersion = exports.tslintVersion = exports.prettierVersion = exports.typescriptVersion = exports.angularCliVersion = exports.nxVersion = void 0;
4
- exports.nxVersion = '14.0.0-beta.1';
4
+ exports.nxVersion = '14.0.0-beta.4';
5
5
  exports.angularCliVersion = '~13.3.0';
6
6
  exports.typescriptVersion = '~4.6.2';
7
7
  exports.prettierVersion = '^2.5.1';