@jakubmazanec/carson-templates 2.3.0-unstable.4bf461a → 2.3.0-unstable.4d7b7cd
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/Dockerfile.ejs +15 -4
- package/templates/projects/remix-app/tsconfig.json.ejs +2 -1
- package/templates/projects/remix-app/tsconfig.typecheck.json.ejs +14 -7
- package/templates/workspace/.dockerignore.ejs +10 -0
- package/templates/workspace/.github/workflows/check-pull-request.yaml.ejs +2 -2
- package/templates/workspace/.github/workflows/release-pull-request.yaml.ejs +70 -23
- package/templates/workspace/.github/workflows/release.yaml.ejs +141 -63
- package/templates/workspace/turbo.json.ejs +4 -2
package/package.json
CHANGED
|
@@ -11,12 +11,13 @@ for (let project of workspace.projects) {
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
let copyFilesLines = ['COPY package-lock.json package.json /workspace/'];
|
|
14
|
+
let currentProject = project;
|
|
14
15
|
|
|
15
16
|
for (let project of workspace.projects) {
|
|
16
|
-
if (project.config.deployment?.appName) {
|
|
17
|
+
if (project.config.deployment?.appName && project.name === currentProject.name) {
|
|
17
18
|
copyFilesLines.push(`COPY --from=build /workspace/${project.relativePath}/build /workspace/${project.relativePath}/build`);
|
|
18
19
|
copyFilesLines.push(`COPY --from=build /workspace/${project.relativePath}/package.json /workspace/${project.relativePath}/package.json`);
|
|
19
|
-
} else {
|
|
20
|
+
} else if (!project.config.deployment?.appName) {
|
|
20
21
|
if (project.packageJson.bin) {
|
|
21
22
|
copyFilesLines.push(`COPY --from=build /workspace/${project.relativePath}/bin /workspace/${project.relativePath}/bin`);
|
|
22
23
|
}
|
|
@@ -56,7 +57,17 @@ RUN npm ci --include=dev --ignore-scripts
|
|
|
56
57
|
COPY --link . .
|
|
57
58
|
|
|
58
59
|
# Build
|
|
59
|
-
|
|
60
|
+
<%
|
|
61
|
+
if (project.config.deployment?.dbInstance) {
|
|
62
|
+
-%>
|
|
63
|
+
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
|
|
64
|
+
<%
|
|
65
|
+
} else {
|
|
66
|
+
-%>
|
|
67
|
+
RUN npm run build -- --filter=<%- project.name %>
|
|
68
|
+
<%
|
|
69
|
+
}
|
|
70
|
+
-%>
|
|
60
71
|
|
|
61
72
|
# Final stage for app image
|
|
62
73
|
FROM base
|
|
@@ -68,6 +79,6 @@ FROM base
|
|
|
68
79
|
RUN npm ci --omit=dev --ignore-scripts
|
|
69
80
|
|
|
70
81
|
# Start the server
|
|
71
|
-
WORKDIR /workspace
|
|
82
|
+
WORKDIR /workspace/<%- project.relativePath %>
|
|
72
83
|
EXPOSE 5000
|
|
73
84
|
ENTRYPOINT ["npm", "start"]
|
|
@@ -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) %>
|
|
@@ -9,7 +9,17 @@ let lines = [];
|
|
|
9
9
|
for (let project of workspace.projects) {
|
|
10
10
|
if (project.config.deployment?.appName) {
|
|
11
11
|
lines.push(`!${project.relativePath}/app/**`);
|
|
12
|
+
|
|
13
|
+
if (project.config.deployment?.dbInstance) {
|
|
14
|
+
lines.push(`!${project.relativePath}/dbschema/**`);
|
|
15
|
+
}
|
|
16
|
+
|
|
12
17
|
lines.push(`!${project.relativePath}/public/**`);
|
|
18
|
+
|
|
19
|
+
if (project.config.deployment?.dbInstance) {
|
|
20
|
+
lines.push(`!${project.relativePath}/edgedb.toml`);
|
|
21
|
+
}
|
|
22
|
+
|
|
13
23
|
lines.push(`!${project.relativePath}/env.d.ts`);
|
|
14
24
|
lines.push(`!${project.relativePath}/package.json`);
|
|
15
25
|
lines.push(`!${project.relativePath}/postcss.config.cjs`);
|
|
@@ -97,12 +97,12 @@ for (let project of workspace.projects) {
|
|
|
97
97
|
-%>
|
|
98
98
|
|
|
99
99
|
- name: Run tests
|
|
100
|
+
run: |
|
|
101
|
+
npm run test -- --filter=<%- project.name %>
|
|
100
102
|
env:
|
|
101
103
|
EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
|
|
102
104
|
EDGEDB_BRANCH: ${{ github.head_ref }}
|
|
103
105
|
EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
|
|
104
|
-
run: |
|
|
105
|
-
npm run codegen --workspace <%- project.name %>
|
|
106
106
|
<%
|
|
107
107
|
}
|
|
108
108
|
}
|
|
@@ -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.
|
|
@@ -47,28 +62,20 @@ jobs:
|
|
|
47
62
|
registry-url: 'https://registry.npmjs.org'
|
|
48
63
|
|
|
49
64
|
<%
|
|
50
|
-
if (workspace.projects.some((project) => project.config.deployment?.
|
|
65
|
+
if (workspace.projects.some((project) => project.config.deployment?.appName)) {
|
|
51
66
|
-%>
|
|
52
67
|
|
|
53
|
-
- uses:
|
|
54
|
-
with:
|
|
55
|
-
server-version: none
|
|
68
|
+
- uses: superfly/flyctl-actions/setup-flyctl@master
|
|
56
69
|
<%
|
|
57
70
|
}
|
|
58
71
|
|
|
59
|
-
|
|
60
|
-
if (project.config.deployment?.dbInstance) {
|
|
72
|
+
if (workspace.projects.some((project) => project.config.deployment?.dbInstance)) {
|
|
61
73
|
-%>
|
|
62
74
|
|
|
63
|
-
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
EDGEDB_BRANCH: ${{ github.head_ref }}
|
|
67
|
-
EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
|
|
68
|
-
run: |
|
|
69
|
-
edgedb project init --link --server-instance <%- project.config.deployment.dbInstance %> --project-dir <%- project.relativePath %>--non-interactive
|
|
75
|
+
- uses: edgedb/setup-edgedb@v1
|
|
76
|
+
with:
|
|
77
|
+
server-version: none
|
|
70
78
|
<%
|
|
71
|
-
}
|
|
72
79
|
}
|
|
73
80
|
-%>
|
|
74
81
|
|
|
@@ -90,7 +97,24 @@ for (let project of workspace.projects) {
|
|
|
90
97
|
git config --unset core.filemode
|
|
91
98
|
|
|
92
99
|
- name: Run tests
|
|
93
|
-
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
|
+
-%>
|
|
94
118
|
|
|
95
119
|
- name: Check for changes
|
|
96
120
|
run: |
|
|
@@ -107,7 +131,24 @@ for (let project of workspace.projects) {
|
|
|
107
131
|
git config --unset core.filemode
|
|
108
132
|
|
|
109
133
|
- name: Build packages
|
|
110
|
-
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
|
+
-%>
|
|
111
152
|
|
|
112
153
|
- name: Authenticate to npm registry
|
|
113
154
|
run: |
|
|
@@ -130,19 +171,25 @@ for (let project of workspace.projects) {
|
|
|
130
171
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
131
172
|
NPM_CONFIG_PROVENANCE: 'true' # must be string, not boolean
|
|
132
173
|
<%
|
|
133
|
-
|
|
174
|
+
for (let project of workspace.projects) {
|
|
175
|
+
if (project.config.deployment?.appName && project.config.deployment?.dbInstance) {
|
|
134
176
|
-%>
|
|
135
177
|
|
|
136
|
-
-
|
|
178
|
+
- name: Deploy <%- project.name %>
|
|
179
|
+
run: |
|
|
180
|
+
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"
|
|
181
|
+
env:
|
|
182
|
+
FLY_ACCESS_TOKEN: ${{ secrets.FLY_TOKEN }}
|
|
183
|
+
FLY_API_TOKEN: ${{ secrets.FLY_TOKEN }}
|
|
184
|
+
EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
|
|
185
|
+
EDGEDB_BRANCH: ${{ github.head_ref }}
|
|
186
|
+
EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
|
|
137
187
|
<%
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
for (let project of workspace.projects) {
|
|
141
|
-
if (project.config.deployment?.appName) {
|
|
188
|
+
} else if (project.config.deployment?.appName) {
|
|
142
189
|
-%>
|
|
143
190
|
|
|
144
191
|
- name: Deploy <%- project.name %>
|
|
145
|
-
run:
|
|
192
|
+
run: |
|
|
146
193
|
npm run deploy --workspace <%- project.name %> -- --app <%- project.config.deployment?.appName %>-unstable
|
|
147
194
|
env:
|
|
148
195
|
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: |
|
|
@@ -130,46 +197,25 @@ jobs:
|
|
|
130
197
|
git push --follow-tags
|
|
131
198
|
|
|
132
199
|
<%
|
|
133
|
-
if (workspace.projects.some((project) => project.config.deployment?.dbInstance)) {
|
|
134
|
-
-%>
|
|
135
|
-
|
|
136
|
-
- uses: edgedb/setup-edgedb@v1
|
|
137
|
-
with:
|
|
138
|
-
server-version: none
|
|
139
|
-
<%
|
|
140
|
-
}
|
|
141
|
-
|
|
142
200
|
for (let project of workspace.projects) {
|
|
143
|
-
if (project.config.deployment?.dbInstance) {
|
|
201
|
+
if (project.config.deployment?.appName && project.config.deployment?.dbInstance) {
|
|
144
202
|
-%>
|
|
145
203
|
|
|
146
|
-
- name:
|
|
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"
|
|
147
207
|
env:
|
|
208
|
+
FLY_ACCESS_TOKEN: ${{ secrets.FLY_TOKEN }}
|
|
209
|
+
FLY_API_TOKEN: ${{ secrets.FLY_TOKEN }}
|
|
148
210
|
EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
|
|
149
|
-
EDGEDB_BRANCH: ${{ github.
|
|
211
|
+
EDGEDB_BRANCH: ${{ github.head_ref }}
|
|
150
212
|
EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
|
|
151
|
-
run: |
|
|
152
|
-
edgedb project init --link --server-instance <%- project.config.deployment.dbInstance %> --project-dir <%- project.relativePath %>--non-interactive
|
|
153
|
-
edgedb migrate -I <%- project.config.deployment.dbInstance %>
|
|
154
|
-
<%
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
-%>
|
|
158
|
-
|
|
159
213
|
<%
|
|
160
|
-
if (
|
|
161
|
-
-%>
|
|
162
|
-
|
|
163
|
-
- uses: superfly/flyctl-actions/setup-flyctl@master
|
|
164
|
-
<%
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
for (let project of workspace.projects) {
|
|
168
|
-
if (project.config.deployment?.appName) {
|
|
214
|
+
} else if (project.config.deployment?.appName) {
|
|
169
215
|
-%>
|
|
170
216
|
|
|
171
217
|
- name: Deploy "<%- project.name %>"
|
|
172
|
-
run:
|
|
218
|
+
run: |
|
|
173
219
|
npm run deploy --workspace <%- project.name %>
|
|
174
220
|
env:
|
|
175
221
|
FLY_ACCESS_TOKEN: ${{ secrets.FLY_TOKEN }}
|
|
@@ -222,6 +268,24 @@ for (let project of workspace.projects) {
|
|
|
222
268
|
node-version: 20
|
|
223
269
|
registry-url: 'https://registry.npmjs.org'
|
|
224
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
|
+
|
|
225
289
|
- name: Install packages
|
|
226
290
|
run: npm ci
|
|
227
291
|
|
|
@@ -239,8 +303,42 @@ for (let project of workspace.projects) {
|
|
|
239
303
|
|
|
240
304
|
git config --unset core.filemode
|
|
241
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
|
+
|
|
323
|
+
- name: Run tests
|
|
324
|
+
run: npm test <%- appsWithDbFilter %>
|
|
325
|
+
|
|
326
|
+
<%
|
|
327
|
+
for (let project of workspace.projects) {
|
|
328
|
+
if (project.config.deployment?.dbInstance) {
|
|
329
|
+
-%>
|
|
330
|
+
|
|
242
331
|
- name: Run tests
|
|
243
|
-
run:
|
|
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
|
+
-%>
|
|
244
342
|
|
|
245
343
|
- name: Check for changes
|
|
246
344
|
run: |
|
|
@@ -257,7 +355,7 @@ for (let project of workspace.projects) {
|
|
|
257
355
|
git config --unset core.filemode
|
|
258
356
|
|
|
259
357
|
- name: Build packages
|
|
260
|
-
run: npm run build
|
|
358
|
+
run: npm run build <%- appsWithDbFilter %>
|
|
261
359
|
|
|
262
360
|
- name: Update documentation
|
|
263
361
|
run: |
|
|
@@ -290,45 +388,25 @@ for (let project of workspace.projects) {
|
|
|
290
388
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
291
389
|
NPM_CONFIG_PROVENANCE: 'true' # must be string, not boolean
|
|
292
390
|
<%
|
|
293
|
-
if (workspace.projects.some((project) => project.config.deployment?.dbInstance)) {
|
|
294
|
-
-%>
|
|
295
|
-
|
|
296
|
-
- uses: edgedb/setup-edgedb@v1
|
|
297
|
-
with:
|
|
298
|
-
server-version: none
|
|
299
|
-
<%
|
|
300
|
-
}
|
|
301
|
-
|
|
302
391
|
for (let project of workspace.projects) {
|
|
303
|
-
if (project.config.deployment?.dbInstance) {
|
|
392
|
+
if (project.config.deployment?.appName && project.config.deployment?.dbInstance) {
|
|
304
393
|
-%>
|
|
305
394
|
|
|
306
|
-
- name:
|
|
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"
|
|
307
398
|
env:
|
|
399
|
+
FLY_ACCESS_TOKEN: ${{ secrets.FLY_TOKEN }}
|
|
400
|
+
FLY_API_TOKEN: ${{ secrets.FLY_TOKEN }}
|
|
308
401
|
EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
|
|
309
|
-
EDGEDB_BRANCH: ${{ github.
|
|
402
|
+
EDGEDB_BRANCH: ${{ github.head_ref }}
|
|
310
403
|
EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
|
|
311
|
-
run: |
|
|
312
|
-
edgedb project init --link --server-instance <%- project.config.deployment.dbInstance %> --project-dir <%- project.relativePath %>--non-interactive
|
|
313
|
-
edgedb migrate -I <%- project.config.deployment.dbInstance %>
|
|
314
404
|
<%
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
-%>
|
|
318
|
-
<%
|
|
319
|
-
if (workspace.projects.some((project) => project.config.deployment?.appName)) {
|
|
320
|
-
-%>
|
|
321
|
-
|
|
322
|
-
- uses: superfly/flyctl-actions/setup-flyctl@master
|
|
323
|
-
<%
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
for (let project of workspace.projects) {
|
|
327
|
-
if (project.config.deployment?.appName) {
|
|
405
|
+
} else if (project.config.deployment?.appName) {
|
|
328
406
|
-%>
|
|
329
407
|
|
|
330
408
|
- name: Deploy "<%- project.name %>"
|
|
331
|
-
run:
|
|
409
|
+
run: |
|
|
332
410
|
npm run deploy --workspace <%- project.name %> -- --app <%- project.config.deployment?.appName %>-next
|
|
333
411
|
env:
|
|
334
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)) {
|