Browse Source

chore(create): Attempt to prevent segfault in CI

The macOS/Node 14.x task of the "Publish & Install" workflow fairly regularly fails with:

```
/Users/runner/work/_temp/293061da-8333-472e-993c-d3db8e417d62.sh: line 5:  6714 Segmentation fault: 11  npx @vendure/create@ci test-app --ci --use-npm --log-level info

##[error]Process completed with exit code 139.
```

So I'm adding some more waiting to see if that helps. Not very scientific I know.
Michael Bromley 5 years ago
parent
commit
f163f199da
1 changed files with 15 additions and 8 deletions
  1. 15 8
      packages/create/src/create-vendure-app.ts

+ 15 - 8
packages/create/src/create-vendure-app.ts

@@ -38,7 +38,7 @@ program
     .version(packageJson.version)
     .arguments('<project-directory>')
     .usage(`${chalk.green('<project-directory>')} [options]`)
-    .action((name) => {
+    .action(name => {
         projectName = name;
     })
     .option(
@@ -124,7 +124,7 @@ async function createApp(
         {
             title: 'Installing dependencies',
             task: (() => {
-                return new Observable((subscriber) => {
+                return new Observable(subscriber => {
                     subscriber.next('Creating package.json');
                     fs.writeFileSync(
                         path.join(root, 'package.json'),
@@ -145,14 +145,14 @@ async function createApp(
                             }
                         })
                         .then(() => subscriber.complete())
-                        .catch((err) => subscriber.error(err));
+                        .catch(err => subscriber.error(err));
                 });
             }) as any,
         },
         {
             title: 'Generating app scaffold',
-            task: (ctx) => {
-                return new Observable((subscriber) => {
+            task: ctx => {
+                return new Observable(subscriber => {
                     fs.ensureDirSync(path.join(root, 'src'));
                     const assetPath = (fileName: string) => path.join(__dirname, '../assets', fileName);
                     const srcPathScript = (fileName: string): string =>
@@ -187,13 +187,13 @@ async function createApp(
                             subscriber.next(`Copied email templates`);
                             subscriber.complete();
                         })
-                        .catch((err) => subscriber.error(err));
+                        .catch(err => subscriber.error(err));
                 });
             },
         },
         {
             title: 'Initializing server',
-            task: async (ctx) => {
+            task: async ctx => {
                 try {
                     if (usingTs) {
                         // register ts-node so that the config file can be loaded
@@ -249,8 +249,15 @@ async function createApp(
                         app = await populate(bootstrapFn, initialDataPath);
                     }
                     // Pause to ensure the worker jobs have time to complete.
-                    await new Promise((resolve) => setTimeout(resolve, isCi ? 20000 : 2000));
+                    if (isCi) {
+                        console.log('[CI] Pausing before close...');
+                    }
+                    await new Promise(resolve => setTimeout(resolve, isCi ? 30000 : 2000));
                     await app.close();
+                    if (isCi) {
+                        console.log('[CI] Pausing after close...');
+                        await new Promise(resolve => setTimeout(resolve, 10000));
+                    }
                 } catch (e) {
                     console.log(e);
                     throw e;