@jakubmazanec/carson-templates 2.2.1 → 2.3.0-unstable.03df558
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/templates/projects/remix-app/.eslintrc.cjs.ejs +8 -1
- package/templates/projects/remix-app/Dockerfile.ejs +12 -1
- package/templates/projects/remix-app/edgedb.toml.ejs +7 -0
- package/templates/projects/remix-app/tsconfig.json.ejs +2 -1
- package/templates/projects/remix-app/tsconfig.typecheck.json.ejs +14 -7
- package/templates/workspace/.github/workflows/check-pull-request.yaml.ejs +44 -1
- package/templates/workspace/.github/workflows/release-pull-request.yaml.ejs +83 -9
- package/templates/workspace/.github/workflows/release.yaml.ejs +152 -20
- package/templates/workspace/turbo.json.ejs +4 -2
package/package.json
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
to: '.eslintrc.cjs'
|
|
3
3
|
strategy: overwrite
|
|
4
4
|
---
|
|
5
|
+
<%
|
|
6
|
+
let lintIgnorePatterns = [
|
|
7
|
+
...LINT_IGNORE_PATTERNS,
|
|
8
|
+
'dbschema/edgeql-js/',
|
|
9
|
+
'dbschema/interfaces.*',
|
|
10
|
+
];
|
|
11
|
+
-%>
|
|
5
12
|
/**
|
|
6
13
|
* DO NOT EDIT!
|
|
7
14
|
* This file was autogenerated by Carson.
|
|
@@ -17,5 +24,5 @@ module.exports = {
|
|
|
17
24
|
'@jakubmazanec/eslint-config/nodejs',
|
|
18
25
|
'@jakubmazanec/eslint-config/prettier',
|
|
19
26
|
],
|
|
20
|
-
ignorePatterns: <%- JSON.stringify(
|
|
27
|
+
ignorePatterns: <%- JSON.stringify(lintIgnorePatterns, null, 2) %>,
|
|
21
28
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
to: 'Dockerfile'
|
|
3
|
+
if: <%- Boolean(project.config.deployment?.appName) %>
|
|
3
4
|
strategy: overwrite
|
|
4
5
|
---
|
|
5
6
|
<%
|
|
@@ -55,7 +56,17 @@ RUN npm ci --include=dev --ignore-scripts
|
|
|
55
56
|
COPY --link . .
|
|
56
57
|
|
|
57
58
|
# Build
|
|
58
|
-
|
|
59
|
+
<%
|
|
60
|
+
if (project.config.deployment?.dbInstance) {
|
|
61
|
+
-%>
|
|
62
|
+
RUN --mount=type=secret,id=EDGEDB_INSTANCE --mount=type=secret,id=EDGEDB_SECRET_KEY EDGEDB_INSTANCE="$(cat /run/secrets/EDGEDB_INSTANCE)" EDGEDB_SECRET_KEY="$(cat /run/secrets/EDGEDB_SECRET_KEY)" npm run build
|
|
63
|
+
<%
|
|
64
|
+
} else {
|
|
65
|
+
-%>
|
|
66
|
+
RUN npm run build -- --filter=<%- project.name %>
|
|
67
|
+
<%
|
|
68
|
+
}
|
|
69
|
+
-%>
|
|
59
70
|
|
|
60
71
|
# Final stage for app image
|
|
61
72
|
FROM base
|
|
@@ -12,8 +12,9 @@ let tsconfig = lodash.merge(
|
|
|
12
12
|
noEmit: true,
|
|
13
13
|
resolveJsonModule: true,
|
|
14
14
|
rootDir: '.',
|
|
15
|
+
exactOptionalPropertyTypes: project.config.deployment?.dbInstance ? false : true, // TODO: when EdgeDB client supports `exactOptionalPropertyTypes: true`, remove this line
|
|
15
16
|
},
|
|
16
|
-
include: ['./
|
|
17
|
+
include: project.config.deployment?.dbInstance ? ['./app/**/*', './dbschema/**/*', './*'] : ['./app/**/*', './*'],
|
|
17
18
|
references: getReferences(workspace, project),
|
|
18
19
|
},
|
|
19
20
|
project.config.overrides?.tsconfig ?? {},
|
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
to: 'tsconfig.typecheck.json'
|
|
3
3
|
strategy: overwrite
|
|
4
4
|
---
|
|
5
|
+
<%
|
|
6
|
+
let tsconfig = lodash.merge(
|
|
7
|
+
{
|
|
8
|
+
extends: './tsconfig.json',
|
|
9
|
+
compilerOptions: {
|
|
10
|
+
composite: false,
|
|
11
|
+
},
|
|
12
|
+
include: project.config.deployment?.dbInstance ? ['./app/**/*', './dbschema/**/*', './tests/**/*', './*'] : ['./app/**/*', './tests/**/*', './*'],
|
|
13
|
+
references: getReferences(workspace, project),
|
|
14
|
+
},
|
|
15
|
+
project.config.overrides?.tsconfig ?? {},
|
|
16
|
+
);
|
|
17
|
+
-%>
|
|
5
18
|
//
|
|
6
19
|
// DO NOT EDIT!
|
|
7
20
|
// This file was autogenerated by Carson.
|
|
@@ -10,10 +23,4 @@ strategy: overwrite
|
|
|
10
23
|
// Run `npx carson update workspace` to regenerate.
|
|
11
24
|
//
|
|
12
25
|
|
|
13
|
-
|
|
14
|
-
"extends": "./tsconfig.json",
|
|
15
|
-
"compilerOptions": {
|
|
16
|
-
"composite": false
|
|
17
|
-
},
|
|
18
|
-
"include": ["./app/**/*", "./tests/**/*", "./*"]
|
|
19
|
-
}
|
|
26
|
+
<%- JSON.stringify(tsconfig, null, 2) %>
|
|
@@ -2,6 +2,21 @@
|
|
|
2
2
|
to: '.github/workflows/check-pull-request.yaml'
|
|
3
3
|
strategy: overwrite
|
|
4
4
|
---
|
|
5
|
+
<%
|
|
6
|
+
let appsWithDb = [];
|
|
7
|
+
|
|
8
|
+
for (let project of workspace.projects) {
|
|
9
|
+
if (project.config.deployment?.dbInstance) {
|
|
10
|
+
appsWithDb.push(project.name);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
let appsWithDbFilter = appsWithDb.map((name) => `--filter=!${name}`).join(' ');
|
|
15
|
+
|
|
16
|
+
if (appsWithDbFilter) {
|
|
17
|
+
appsWithDbFilter = `-- ${appsWithDbFilter}`;
|
|
18
|
+
}
|
|
19
|
+
-%>
|
|
5
20
|
#
|
|
6
21
|
# DO NOT EDIT!
|
|
7
22
|
# This file was autogenerated by Carson.
|
|
@@ -45,6 +60,17 @@ jobs:
|
|
|
45
60
|
with:
|
|
46
61
|
node-version: 20
|
|
47
62
|
|
|
63
|
+
<%
|
|
64
|
+
if (workspace.projects.some((project) => project.config.deployment?.dbInstance)) {
|
|
65
|
+
-%>
|
|
66
|
+
|
|
67
|
+
- uses: edgedb/setup-edgedb@v1
|
|
68
|
+
with:
|
|
69
|
+
server-version: none
|
|
70
|
+
<%
|
|
71
|
+
}
|
|
72
|
+
-%>
|
|
73
|
+
|
|
48
74
|
- name: Install packages
|
|
49
75
|
run: npm ci
|
|
50
76
|
|
|
@@ -63,7 +89,24 @@ jobs:
|
|
|
63
89
|
git config --unset core.filemode
|
|
64
90
|
|
|
65
91
|
- name: Run tests
|
|
66
|
-
run: npm test
|
|
92
|
+
run: npm test <%- appsWithDbFilter %>
|
|
93
|
+
|
|
94
|
+
<%
|
|
95
|
+
for (let project of workspace.projects) {
|
|
96
|
+
if (project.config.deployment?.dbInstance) {
|
|
97
|
+
-%>
|
|
98
|
+
|
|
99
|
+
- name: Run tests
|
|
100
|
+
run: |
|
|
101
|
+
npm run test -- --filter=<%- project.name %>
|
|
102
|
+
env:
|
|
103
|
+
EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
|
|
104
|
+
EDGEDB_BRANCH: ${{ github.head_ref }}
|
|
105
|
+
EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
|
|
106
|
+
<%
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
-%>
|
|
67
110
|
|
|
68
111
|
- name: Check for changes
|
|
69
112
|
run: |
|
|
@@ -2,6 +2,21 @@
|
|
|
2
2
|
to: '.github/workflows/release-pull-request.yaml'
|
|
3
3
|
strategy: overwrite
|
|
4
4
|
---
|
|
5
|
+
<%
|
|
6
|
+
let appsWithDb = [];
|
|
7
|
+
|
|
8
|
+
for (let project of workspace.projects) {
|
|
9
|
+
if (project.config.deployment?.dbInstance) {
|
|
10
|
+
appsWithDb.push(project.name);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
let appsWithDbFilter = appsWithDb.map((name) => `--filter=!${name}`).join(' ');
|
|
15
|
+
|
|
16
|
+
if (appsWithDbFilter) {
|
|
17
|
+
appsWithDbFilter = `-- ${appsWithDbFilter}`;
|
|
18
|
+
}
|
|
19
|
+
-%>
|
|
5
20
|
#
|
|
6
21
|
# DO NOT EDIT!
|
|
7
22
|
# This file was autogenerated by Carson.
|
|
@@ -46,6 +61,24 @@ jobs:
|
|
|
46
61
|
node-version: 20
|
|
47
62
|
registry-url: 'https://registry.npmjs.org'
|
|
48
63
|
|
|
64
|
+
<%
|
|
65
|
+
if (workspace.projects.some((project) => project.config.deployment?.appName)) {
|
|
66
|
+
-%>
|
|
67
|
+
|
|
68
|
+
- uses: superfly/flyctl-actions/setup-flyctl@master
|
|
69
|
+
<%
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (workspace.projects.some((project) => project.config.deployment?.dbInstance)) {
|
|
73
|
+
-%>
|
|
74
|
+
|
|
75
|
+
- uses: edgedb/setup-edgedb@v1
|
|
76
|
+
with:
|
|
77
|
+
server-version: none
|
|
78
|
+
<%
|
|
79
|
+
}
|
|
80
|
+
-%>
|
|
81
|
+
|
|
49
82
|
- name: Install packages
|
|
50
83
|
run: npm ci
|
|
51
84
|
|
|
@@ -64,7 +97,24 @@ jobs:
|
|
|
64
97
|
git config --unset core.filemode
|
|
65
98
|
|
|
66
99
|
- name: Run tests
|
|
67
|
-
run: npm test
|
|
100
|
+
run: npm test <%- appsWithDbFilter %>
|
|
101
|
+
|
|
102
|
+
<%
|
|
103
|
+
for (let project of workspace.projects) {
|
|
104
|
+
if (project.config.deployment?.dbInstance) {
|
|
105
|
+
-%>
|
|
106
|
+
|
|
107
|
+
- name: Run tests
|
|
108
|
+
run: |
|
|
109
|
+
npm run test -- --filter=<%- project.name %>
|
|
110
|
+
env:
|
|
111
|
+
EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
|
|
112
|
+
EDGEDB_BRANCH: ${{ github.head_ref }}
|
|
113
|
+
EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
|
|
114
|
+
<%
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
-%>
|
|
68
118
|
|
|
69
119
|
- name: Check for changes
|
|
70
120
|
run: |
|
|
@@ -81,7 +131,24 @@ jobs:
|
|
|
81
131
|
git config --unset core.filemode
|
|
82
132
|
|
|
83
133
|
- name: Build packages
|
|
84
|
-
run: npm run build
|
|
134
|
+
run: npm run build <%- appsWithDbFilter %>
|
|
135
|
+
|
|
136
|
+
<%
|
|
137
|
+
for (let project of workspace.projects) {
|
|
138
|
+
if (project.config.deployment?.dbInstance) {
|
|
139
|
+
-%>
|
|
140
|
+
|
|
141
|
+
- name: Build <%- project.name %>
|
|
142
|
+
run: |
|
|
143
|
+
npm run build -- --filter=<%- project.name %>
|
|
144
|
+
env:
|
|
145
|
+
EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
|
|
146
|
+
EDGEDB_BRANCH: ${{ github.head_ref }}
|
|
147
|
+
EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
|
|
148
|
+
<%
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
-%>
|
|
85
152
|
|
|
86
153
|
- name: Authenticate to npm registry
|
|
87
154
|
run: |
|
|
@@ -104,19 +171,26 @@ jobs:
|
|
|
104
171
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
105
172
|
NPM_CONFIG_PROVENANCE: 'true' # must be string, not boolean
|
|
106
173
|
<%
|
|
107
|
-
|
|
174
|
+
for (let project of workspace.projects) {
|
|
175
|
+
if (project.config.deployment?.appName && project.config.deployment?.dbInstance) {
|
|
108
176
|
-%>
|
|
109
177
|
|
|
110
|
-
-
|
|
178
|
+
- name: Deploy <%- project.name %>
|
|
179
|
+
run: |
|
|
180
|
+
echo $EDGEDB_INSTANCE
|
|
181
|
+
npm run deploy --workspace <%- project.name %> -- --app <%- project.config.deployment?.appName %>-unstable --build-secret EDGEDB_INSTANCE=$EDGEDB_INSTANCE --build-secret EDGEDB_SECRET_KEY=$EDGEDB_SECRET_KEY
|
|
182
|
+
env:
|
|
183
|
+
FLY_ACCESS_TOKEN: ${{ secrets.FLY_TOKEN }}
|
|
184
|
+
FLY_API_TOKEN: ${{ secrets.FLY_TOKEN }}
|
|
185
|
+
EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
|
|
186
|
+
EDGEDB_BRANCH: ${{ github.head_ref }}
|
|
187
|
+
EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
|
|
111
188
|
<%
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
for (let project of workspace.projects) {
|
|
115
|
-
if (project.config.deployment?.appName) {
|
|
189
|
+
} else if (project.config.deployment?.appName) {
|
|
116
190
|
-%>
|
|
117
191
|
|
|
118
192
|
- name: Deploy <%- project.name %>
|
|
119
|
-
run:
|
|
193
|
+
run: |
|
|
120
194
|
npm run deploy --workspace <%- project.name %> -- --app <%- project.config.deployment?.appName %>-unstable
|
|
121
195
|
env:
|
|
122
196
|
FLY_ACCESS_TOKEN: ${{ secrets.FLY_TOKEN }}
|
|
@@ -2,6 +2,21 @@
|
|
|
2
2
|
to: '.github/workflows/release.yaml'
|
|
3
3
|
strategy: overwrite
|
|
4
4
|
---
|
|
5
|
+
<%
|
|
6
|
+
let appsWithDb = [];
|
|
7
|
+
|
|
8
|
+
for (let project of workspace.projects) {
|
|
9
|
+
if (project.config.deployment?.dbInstance) {
|
|
10
|
+
appsWithDb.push(project.name);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
let appsWithDbFilter = appsWithDb.map((name) => `--filter=!${name}`).join(' ');
|
|
15
|
+
|
|
16
|
+
if (appsWithDbFilter) {
|
|
17
|
+
appsWithDbFilter = `-- ${appsWithDbFilter}`;
|
|
18
|
+
}
|
|
19
|
+
-%>
|
|
5
20
|
#
|
|
6
21
|
# DO NOT EDIT!
|
|
7
22
|
# This file was autogenerated by Carson.
|
|
@@ -43,6 +58,24 @@ jobs:
|
|
|
43
58
|
node-version: 20
|
|
44
59
|
registry-url: 'https://registry.npmjs.org'
|
|
45
60
|
|
|
61
|
+
<%
|
|
62
|
+
if (workspace.projects.some((project) => project.config.deployment?.appName)) {
|
|
63
|
+
-%>
|
|
64
|
+
|
|
65
|
+
- uses: superfly/flyctl-actions/setup-flyctl@master
|
|
66
|
+
<%
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (workspace.projects.some((project) => project.config.deployment?.dbInstance)) {
|
|
70
|
+
-%>
|
|
71
|
+
|
|
72
|
+
- uses: edgedb/setup-edgedb@v1
|
|
73
|
+
with:
|
|
74
|
+
server-version: none
|
|
75
|
+
<%
|
|
76
|
+
}
|
|
77
|
+
-%>
|
|
78
|
+
|
|
46
79
|
- name: Install packages
|
|
47
80
|
run: npm ci
|
|
48
81
|
|
|
@@ -60,8 +93,42 @@ jobs:
|
|
|
60
93
|
|
|
61
94
|
git config --unset core.filemode
|
|
62
95
|
|
|
96
|
+
<%
|
|
97
|
+
for (let project of workspace.projects) {
|
|
98
|
+
if (project.config.deployment?.dbInstance) {
|
|
99
|
+
-%>
|
|
100
|
+
|
|
101
|
+
- name: Migrate "<%- project.name %>"
|
|
102
|
+
run: |
|
|
103
|
+
edgedb migrate
|
|
104
|
+
env:
|
|
105
|
+
EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
|
|
106
|
+
EDGEDB_BRANCH: ${{ github.ref_name }}
|
|
107
|
+
EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
|
|
108
|
+
<%
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
-%>
|
|
112
|
+
|
|
63
113
|
- name: Run tests
|
|
64
|
-
run: npm test
|
|
114
|
+
run: npm test <%- appsWithDbFilter %>
|
|
115
|
+
|
|
116
|
+
<%
|
|
117
|
+
for (let project of workspace.projects) {
|
|
118
|
+
if (project.config.deployment?.dbInstance) {
|
|
119
|
+
-%>
|
|
120
|
+
|
|
121
|
+
- name: Run tests
|
|
122
|
+
run: |
|
|
123
|
+
npm run test -- --filter=<%- project.name %>
|
|
124
|
+
env:
|
|
125
|
+
EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
|
|
126
|
+
EDGEDB_BRANCH: ${{ github.head_ref }}
|
|
127
|
+
EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
|
|
128
|
+
<%
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
-%>
|
|
65
132
|
|
|
66
133
|
- name: Check for changes
|
|
67
134
|
run: |
|
|
@@ -78,7 +145,7 @@ jobs:
|
|
|
78
145
|
git config --unset core.filemode
|
|
79
146
|
|
|
80
147
|
- name: Build packages
|
|
81
|
-
run: npm run build
|
|
148
|
+
run: npm run build <%- appsWithDbFilter %>
|
|
82
149
|
|
|
83
150
|
- name: Authenticate to npm registry
|
|
84
151
|
run: |
|
|
@@ -128,20 +195,27 @@ jobs:
|
|
|
128
195
|
- name: Push changes
|
|
129
196
|
run: |
|
|
130
197
|
git push --follow-tags
|
|
198
|
+
|
|
131
199
|
<%
|
|
132
|
-
|
|
200
|
+
for (let project of workspace.projects) {
|
|
201
|
+
if (project.config.deployment?.appName && project.config.deployment?.dbInstance) {
|
|
133
202
|
-%>
|
|
134
203
|
|
|
135
|
-
-
|
|
204
|
+
- name: Deploy "<%- project.name %>"
|
|
205
|
+
run: |
|
|
206
|
+
npm run deploy --workspace <%- project.name %> -- --build-secret EDGEDB_INSTANCE=$EDGEDB_INSTANCE --build-secret EDGEDB_SECRET_KEY=$EDGEDB_SECRET_KEY
|
|
207
|
+
env:
|
|
208
|
+
FLY_ACCESS_TOKEN: ${{ secrets.FLY_TOKEN }}
|
|
209
|
+
FLY_API_TOKEN: ${{ secrets.FLY_TOKEN }}
|
|
210
|
+
EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
|
|
211
|
+
EDGEDB_BRANCH: ${{ github.head_ref }}
|
|
212
|
+
EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
|
|
136
213
|
<%
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
for (let project of workspace.projects) {
|
|
140
|
-
if (project.config.deployment?.appName) {
|
|
214
|
+
} else if (project.config.deployment?.appName) {
|
|
141
215
|
-%>
|
|
142
216
|
|
|
143
|
-
- name: Deploy <%- project.name %>
|
|
144
|
-
run:
|
|
217
|
+
- name: Deploy "<%- project.name %>"
|
|
218
|
+
run: |
|
|
145
219
|
npm run deploy --workspace <%- project.name %>
|
|
146
220
|
env:
|
|
147
221
|
FLY_ACCESS_TOKEN: ${{ secrets.FLY_TOKEN }}
|
|
@@ -194,6 +268,24 @@ for (let project of workspace.projects) {
|
|
|
194
268
|
node-version: 20
|
|
195
269
|
registry-url: 'https://registry.npmjs.org'
|
|
196
270
|
|
|
271
|
+
<%
|
|
272
|
+
if (workspace.projects.some((project) => project.config.deployment?.appName)) {
|
|
273
|
+
-%>
|
|
274
|
+
|
|
275
|
+
- uses: superfly/flyctl-actions/setup-flyctl@master
|
|
276
|
+
<%
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
if (workspace.projects.some((project) => project.config.deployment?.dbInstance)) {
|
|
280
|
+
-%>
|
|
281
|
+
|
|
282
|
+
- uses: edgedb/setup-edgedb@v1
|
|
283
|
+
with:
|
|
284
|
+
server-version: none
|
|
285
|
+
<%
|
|
286
|
+
}
|
|
287
|
+
-%>
|
|
288
|
+
|
|
197
289
|
- name: Install packages
|
|
198
290
|
run: npm ci
|
|
199
291
|
|
|
@@ -211,8 +303,42 @@ for (let project of workspace.projects) {
|
|
|
211
303
|
|
|
212
304
|
git config --unset core.filemode
|
|
213
305
|
|
|
306
|
+
<%
|
|
307
|
+
for (let project of workspace.projects) {
|
|
308
|
+
if (project.config.deployment?.dbInstance) {
|
|
309
|
+
-%>
|
|
310
|
+
|
|
311
|
+
- name: Migrate "<%- project.name %>"
|
|
312
|
+
env:
|
|
313
|
+
EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
|
|
314
|
+
EDGEDB_BRANCH: ${{ github.ref_name }}
|
|
315
|
+
EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
|
|
316
|
+
run: |
|
|
317
|
+
edgedb migrate
|
|
318
|
+
<%
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
-%>
|
|
322
|
+
|
|
214
323
|
- name: Run tests
|
|
215
|
-
run: npm test
|
|
324
|
+
run: npm test <%- appsWithDbFilter %>
|
|
325
|
+
|
|
326
|
+
<%
|
|
327
|
+
for (let project of workspace.projects) {
|
|
328
|
+
if (project.config.deployment?.dbInstance) {
|
|
329
|
+
-%>
|
|
330
|
+
|
|
331
|
+
- name: Run tests
|
|
332
|
+
run: |
|
|
333
|
+
npm run test -- --filter=<%- project.name %>
|
|
334
|
+
env:
|
|
335
|
+
EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
|
|
336
|
+
EDGEDB_BRANCH: ${{ github.head_ref }}
|
|
337
|
+
EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
|
|
338
|
+
<%
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
-%>
|
|
216
342
|
|
|
217
343
|
- name: Check for changes
|
|
218
344
|
run: |
|
|
@@ -229,7 +355,7 @@ for (let project of workspace.projects) {
|
|
|
229
355
|
git config --unset core.filemode
|
|
230
356
|
|
|
231
357
|
- name: Build packages
|
|
232
|
-
run: npm run build
|
|
358
|
+
run: npm run build <%- appsWithDbFilter %>
|
|
233
359
|
|
|
234
360
|
- name: Update documentation
|
|
235
361
|
run: |
|
|
@@ -262,19 +388,25 @@ for (let project of workspace.projects) {
|
|
|
262
388
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
263
389
|
NPM_CONFIG_PROVENANCE: 'true' # must be string, not boolean
|
|
264
390
|
<%
|
|
265
|
-
|
|
391
|
+
for (let project of workspace.projects) {
|
|
392
|
+
if (project.config.deployment?.appName && project.config.deployment?.dbInstance) {
|
|
266
393
|
-%>
|
|
267
394
|
|
|
268
|
-
-
|
|
395
|
+
- name: Deploy "<%- project.name %>"
|
|
396
|
+
run: |
|
|
397
|
+
npm run deploy --workspace <%- project.name %> -- --app <%- project.config.deployment?.appName %>-next --build-secret EDGEDB_INSTANCE=$EDGEDB_INSTANCE --build-secret EDGEDB_SECRET_KEY=$EDGEDB_SECRET_KEY
|
|
398
|
+
env:
|
|
399
|
+
FLY_ACCESS_TOKEN: ${{ secrets.FLY_TOKEN }}
|
|
400
|
+
FLY_API_TOKEN: ${{ secrets.FLY_TOKEN }}
|
|
401
|
+
EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
|
|
402
|
+
EDGEDB_BRANCH: ${{ github.head_ref }}
|
|
403
|
+
EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
|
|
269
404
|
<%
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
for (let project of workspace.projects) {
|
|
273
|
-
if (project.config.deployment?.appName) {
|
|
405
|
+
} else if (project.config.deployment?.appName) {
|
|
274
406
|
-%>
|
|
275
407
|
|
|
276
|
-
- name: Deploy <%- project.name %>
|
|
277
|
-
run:
|
|
408
|
+
- name: Deploy "<%- project.name %>"
|
|
409
|
+
run: |
|
|
278
410
|
npm run deploy --workspace <%- project.name %> -- --app <%- project.config.deployment?.appName %>-next
|
|
279
411
|
env:
|
|
280
412
|
FLY_ACCESS_TOKEN: ${{ secrets.FLY_TOKEN }}
|
|
@@ -8,7 +8,7 @@ let turboConfig = {
|
|
|
8
8
|
pipeline: {
|
|
9
9
|
build: {
|
|
10
10
|
dependsOn: ['^build', 'codegen'],
|
|
11
|
-
outputs: [`${BUILD_DIRECTORY}
|
|
11
|
+
outputs: [`${BUILD_DIRECTORY}/**`, 'app/**'],
|
|
12
12
|
},
|
|
13
13
|
clean: {
|
|
14
14
|
cache: false,
|
|
@@ -33,7 +33,7 @@ let turboConfig = {
|
|
|
33
33
|
outputs: [],
|
|
34
34
|
},
|
|
35
35
|
test: {
|
|
36
|
-
dependsOn: ['^build', 'typecheck', 'lint'],
|
|
36
|
+
dependsOn: ['^build', 'codegen', 'typecheck', 'lint'],
|
|
37
37
|
outputs: ['coverage/**'],
|
|
38
38
|
},
|
|
39
39
|
typecheck: {
|
|
@@ -41,6 +41,7 @@ let turboConfig = {
|
|
|
41
41
|
outputs: [],
|
|
42
42
|
},
|
|
43
43
|
},
|
|
44
|
+
globalEnv: workspace.projects.some((project) => project.config.deployment?.dbInstance) ? ['EDGEDB_INSTANCE', 'EDGEDB_BRANCH', 'EDGEDB_SECRET_KEY'] : [],
|
|
44
45
|
globalDependencies: [
|
|
45
46
|
'.editorconfig',
|
|
46
47
|
'.eslintrc.cjs',
|
|
@@ -49,6 +50,7 @@ let turboConfig = {
|
|
|
49
50
|
'tsconfig.json',
|
|
50
51
|
'tsconfig.typecheck.json',
|
|
51
52
|
],
|
|
53
|
+
|
|
52
54
|
};
|
|
53
55
|
|
|
54
56
|
if (workspace.projects.find((project) => project.name === LINTER_CONFIG_PACKAGE_NAME)) {
|