Преглед изворни кода

fix: Migrations do not run (#4395)

* move migrations files to package root

* update Dockerfile and docker-entrypoint.sh

* move mongoose-utils to @growi/core

* remove unnecessary line

* update Dockerfile and docker-entrypoint.sh

* restore migrations dir

* get migrationsDir from env vars

* remove unnecessary line
Yuki Takei пре 4 година
родитељ
комит
712932825d
24 измењених фајлова са 25 додато и 31 уклоњено
  1. 1 0
      packages/app/.env.production
  2. 2 4
      packages/app/config/migrate.js
  3. 2 7
      packages/app/docker/Dockerfile
  4. 1 1
      packages/app/docker/docker-entrypoint.sh
  5. 1 1
      packages/app/src/migrations/20180926134048-make-email-unique.js
  6. 1 1
      packages/app/src/migrations/20181019114028-abolish-page-group-relation.js
  7. 1 1
      packages/app/src/migrations/20190618104011-add-config-app-installed.js
  8. 1 1
      packages/app/src/migrations/20200402160380-remove-deleteduser-from-relationgroup.js
  9. 1 1
      packages/app/src/migrations/20200620203632-normalize-locale-id.js
  10. 1 1
      packages/app/src/migrations/20210420160380-convert-double-to-date.js
  11. 1 1
      packages/app/src/migrations/20210906194521-slack-app-integration-set-default-value.js
  12. 1 1
      packages/app/src/migrations/20210913153942-migrate-slack-app-integration-schema.js
  13. 1 1
      packages/app/src/server/console.js
  14. 1 1
      packages/app/src/server/crowi/index.js
  15. 1 1
      packages/app/src/server/models/config.ts
  16. 1 1
      packages/app/src/server/models/editor-settings.ts
  17. 1 1
      packages/app/src/server/models/password-reset-order.ts
  18. 1 1
      packages/app/src/server/models/update-post.ts
  19. 2 2
      packages/app/src/test/config/migrate.test.js
  20. 1 1
      packages/app/src/test/global-setup.js
  21. 1 1
      packages/app/src/test/setup.js
  22. 0 1
      packages/app/tsconfig.build.server.json
  23. 1 0
      packages/core/src/index.js
  24. 0 0
      packages/core/src/utils/mongoose-utils.ts

+ 1 - 0
packages/app/.env.production

@@ -3,3 +3,4 @@
 ## https://nextjs.org/docs/basic-features/environment-variables
 ## https://nextjs.org/docs/basic-features/environment-variables
 ##
 ##
 FORMAT_NODE_LOG=false
 FORMAT_NODE_LOG=false
+MIGRATIONS_DIR=dist/migrations/

+ 2 - 4
packages/app/config/migrate.js

@@ -5,9 +5,7 @@
  * @author Yuki Takei <yuki@weseek.co.jp>
  * @author Yuki Takei <yuki@weseek.co.jp>
  */
  */
 
 
-import mongoose from 'mongoose';
-
-import { initMongooseGlobalSettings, getMongoUri, mongoOptions } from '~/server/util/mongoose-utils';
+import { initMongooseGlobalSettings, getMongoUri, mongoOptions } from '@growi/core';
 
 
 const { URL } = require('url');
 const { URL } = require('url');
 
 
@@ -27,6 +25,6 @@ const mongodb = {
 module.exports = {
 module.exports = {
   mongoUri,
   mongoUri,
   mongodb,
   mongodb,
-  migrationsDir: 'src/migrations/',
+  migrationsDir: process.env.MIGRATIONS_DIR || 'src/migrations/',
   changelogCollectionName: 'migrations',
   changelogCollectionName: 'migrations',
 };
 };

+ 2 - 7
packages/app/docker/Dockerfile

@@ -140,11 +140,6 @@ RUN set -eux; \
 # verify that the binary works
 # verify that the binary works
 	gosu nobody true
 	gosu nobody true
 
 
-# Add Tini
-ENV TINI_VERSION v0.19.0
-ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini
-RUN chmod +x /tini
-
 COPY --from=deps-resolver-prod --chown=node:node \
 COPY --from=deps-resolver-prod --chown=node:node \
   ${appDir}/node_modules.tar ${appDir}/
   ${appDir}/node_modules.tar ${appDir}/
 COPY --from=builder --chown=node:node \
 COPY --from=builder --chown=node:node \
@@ -168,5 +163,5 @@ WORKDIR ${appDir}/packages/app
 VOLUME /data
 VOLUME /data
 EXPOSE 3000
 EXPOSE 3000
 
 
-ENTRYPOINT ["/tini", "-e", "143", "--", "/docker-entrypoint.sh"]
-CMD ["node", "-r", "dotenv-flow/config", "--expose_gc", "dist/server/app.js"]
+ENTRYPOINT ["/docker-entrypoint.sh"]
+CMD ["yarn preserver && node -r dotenv-flow/config --expose_gc dist/server/app.js"]

+ 1 - 1
packages/app/docker/docker-entrypoint.sh

@@ -11,4 +11,4 @@ fi
 chown -R node:node /data/uploads
 chown -R node:node /data/uploads
 chown -h node:node ./public/uploads
 chown -h node:node ./public/uploads
 
 
-gosu node $@
+exec gosu node /bin/bash -c "$@"

+ 1 - 1
packages/app/src/migrations/20180926134048-make-email-unique.js

@@ -1,8 +1,8 @@
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
+import { getModelSafely } from '@growi/core';
 import config from '^/config/migrate';
 import config from '^/config/migrate';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
-import { getModelSafely } from '~/server/util/mongoose-utils';
 
 
 const logger = loggerFactory('growi:migrate:make-email-unique');
 const logger = loggerFactory('growi:migrate:make-email-unique');
 
 

+ 1 - 1
packages/app/src/migrations/20181019114028-abolish-page-group-relation.js

@@ -1,8 +1,8 @@
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
+import { getModelSafely } from '@growi/core';
 import config from '^/config/migrate';
 import config from '^/config/migrate';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
-import { getModelSafely } from '~/server/util/mongoose-utils';
 
 
 const logger = loggerFactory('growi:migrate:abolish-page-group-relation');
 const logger = loggerFactory('growi:migrate:abolish-page-group-relation');
 
 

+ 1 - 1
packages/app/src/migrations/20190618104011-add-config-app-installed.js

@@ -1,9 +1,9 @@
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
+import { getModelSafely } from '@growi/core';
 import Config from '~/server/models/config';
 import Config from '~/server/models/config';
 import config from '^/config/migrate';
 import config from '^/config/migrate';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
-import { getModelSafely } from '~/server/util/mongoose-utils';
 
 
 const logger = loggerFactory('growi:migrate:add-config-app-installed');
 const logger = loggerFactory('growi:migrate:add-config-app-installed');
 
 

+ 1 - 1
packages/app/src/migrations/20200402160380-remove-deleteduser-from-relationgroup.js

@@ -1,8 +1,8 @@
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
+import { getModelSafely } from '@growi/core';
 import config from '^/config/migrate';
 import config from '^/config/migrate';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
-import { getModelSafely } from '~/server/util/mongoose-utils';
 
 
 const logger = loggerFactory('growi:migrate:remove-deleteduser-from-relationgroup');
 const logger = loggerFactory('growi:migrate:remove-deleteduser-from-relationgroup');
 
 

+ 1 - 1
packages/app/src/migrations/20200620203632-normalize-locale-id.js

@@ -1,9 +1,9 @@
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
+import { getModelSafely } from '@growi/core';
 import Config from '~/server/models/config';
 import Config from '~/server/models/config';
 import config from '^/config/migrate';
 import config from '^/config/migrate';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
-import { getModelSafely } from '~/server/util/mongoose-utils';
 
 
 const logger = loggerFactory('growi:migrate:normalize-locale-id');
 const logger = loggerFactory('growi:migrate:normalize-locale-id');
 
 

+ 1 - 1
packages/app/src/migrations/20210420160380-convert-double-to-date.js

@@ -1,7 +1,7 @@
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
+import { getModelSafely } from '@growi/core';
 import config from '^/config/migrate';
 import config from '^/config/migrate';
-import { getModelSafely } from '~/server/util/mongoose-utils';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
 const logger = loggerFactory('growi:migrate:remove-crowi-lauout');
 const logger = loggerFactory('growi:migrate:remove-crowi-lauout');

+ 1 - 1
packages/app/src/migrations/20210906194521-slack-app-integration-set-default-value.js

@@ -1,7 +1,7 @@
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
 import { defaultSupportedCommandsNameForBroadcastUse, defaultSupportedCommandsNameForSingleUse } from '@growi/slack';
 import { defaultSupportedCommandsNameForBroadcastUse, defaultSupportedCommandsNameForSingleUse } from '@growi/slack';
-import { getModelSafely } from '~/server/util/mongoose-utils';
+import { getModelSafely } from '@growi/core';
 import config from '^/config/migrate';
 import config from '^/config/migrate';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 

+ 1 - 1
packages/app/src/migrations/20210913153942-migrate-slack-app-integration-schema.js

@@ -1,9 +1,9 @@
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 import { defaultSupportedCommandsNameForBroadcastUse, defaultSupportedCommandsNameForSingleUse } from '@growi/slack';
 import { defaultSupportedCommandsNameForBroadcastUse, defaultSupportedCommandsNameForSingleUse } from '@growi/slack';
 
 
+import { getModelSafely } from '@growi/core';
 import config from '^/config/migrate';
 import config from '^/config/migrate';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
-import { getModelSafely } from '~/server/util/mongoose-utils';
 
 
 
 
 const logger = loggerFactory('growi:migrate:update-configs-for-slackbot');
 const logger = loggerFactory('growi:migrate:update-configs-for-slackbot');

+ 1 - 1
packages/app/src/server/console.js

@@ -2,7 +2,7 @@ const repl = require('repl');
 const fs = require('fs');
 const fs = require('fs');
 const path = require('path');
 const path = require('path');
 const mongoose = require('mongoose');
 const mongoose = require('mongoose');
-const { initMongooseGlobalSettings, getMongoUri, mongoOptions } = require('~/server/util/mongoose-utils');
+const { initMongooseGlobalSettings, getMongoUri, mongoOptions } = require('@growi/core');
 
 
 const models = require('./models');
 const models = require('./models');
 
 

+ 1 - 1
packages/app/src/server/crowi/index.js

@@ -3,13 +3,13 @@
 import path from 'path';
 import path from 'path';
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
+import { initMongooseGlobalSettings, getMongoUri, mongoOptions } from '@growi/core';
 import pkg from '^/package.json';
 import pkg from '^/package.json';
 
 
 import CdnResourcesService from '~/services/cdn-resources-service';
 import CdnResourcesService from '~/services/cdn-resources-service';
 import InterceptorManager from '~/services/interceptor-manager';
 import InterceptorManager from '~/services/interceptor-manager';
 import Xss from '~/services/xss';
 import Xss from '~/services/xss';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
-import { initMongooseGlobalSettings, getMongoUri, mongoOptions } from '~/server/util/mongoose-utils';
 import { projectRoot } from '~/utils/project-dir-utils';
 import { projectRoot } from '~/utils/project-dir-utils';
 
 
 import ConfigManager from '../service/config-manager';
 import ConfigManager from '../service/config-manager';

+ 1 - 1
packages/app/src/server/models/config.ts

@@ -1,7 +1,7 @@
 import { Types, Schema } from 'mongoose';
 import { Types, Schema } from 'mongoose';
 import uniqueValidator from 'mongoose-unique-validator';
 import uniqueValidator from 'mongoose-unique-validator';
 
 
-import { getOrCreateModel } from '../util/mongoose-utils';
+import { getOrCreateModel } from '@growi/core';
 
 
 export interface Config {
 export interface Config {
   _id: Types.ObjectId;
   _id: Types.ObjectId;

+ 1 - 1
packages/app/src/server/models/editor-settings.ts

@@ -1,7 +1,7 @@
 import {
 import {
   Schema, Model, Document,
   Schema, Model, Document,
 } from 'mongoose';
 } from 'mongoose';
-import { getOrCreateModel } from '../util/mongoose-utils';
+import { getOrCreateModel } from '@growi/core';
 
 
 
 
 export interface ILintRule {
 export interface ILintRule {

+ 1 - 1
packages/app/src/server/models/password-reset-order.ts

@@ -4,7 +4,7 @@ import mongoose, {
 
 
 import uniqueValidator from 'mongoose-unique-validator';
 import uniqueValidator from 'mongoose-unique-validator';
 import crypto from 'crypto';
 import crypto from 'crypto';
-import { getOrCreateModel } from '../util/mongoose-utils';
+import { getOrCreateModel } from '@growi/core';
 
 
 const ObjectId = mongoose.Schema.Types.ObjectId;
 const ObjectId = mongoose.Schema.Types.ObjectId;
 
 

+ 1 - 1
packages/app/src/server/models/update-post.ts

@@ -3,7 +3,7 @@
 import {
 import {
   Types, Schema, Model, Document,
   Types, Schema, Model, Document,
 } from 'mongoose';
 } from 'mongoose';
-import { getOrCreateModel } from '../util/mongoose-utils';
+import { getOrCreateModel } from '@growi/core';
 
 
 export interface IUpdatePost {
 export interface IUpdatePost {
   pathPattern: string
   pathPattern: string

+ 2 - 2
packages/app/src/test/config/migrate.test.js

@@ -16,7 +16,7 @@ describe('config/migrate.js', () => {
       const initMongooseGlobalSettingsMock = jest.fn();
       const initMongooseGlobalSettingsMock = jest.fn();
 
 
       // mock for mongoose-utils
       // mock for mongoose-utils
-      jest.doMock('~/server/util/mongoose-utils', () => {
+      jest.doMock('@growi/core', () => {
         return {
         return {
           initMongooseGlobalSettings: initMongooseGlobalSettingsMock,
           initMongooseGlobalSettings: initMongooseGlobalSettingsMock,
           getMongoUri: () => {
           getMongoUri: () => {
@@ -27,7 +27,7 @@ describe('config/migrate.js', () => {
 
 
       const { mongoUri, mongodb } = require('^/config/migrate');
       const { mongoUri, mongodb } = require('^/config/migrate');
 
 
-      jest.dontMock('~/server/util/mongoose-utils');
+      jest.dontMock('@growi/core');
 
 
       expect(initMongooseGlobalSettingsMock).toHaveBeenCalledTimes(1);
       expect(initMongooseGlobalSettingsMock).toHaveBeenCalledTimes(1);
       expect(mongoUri).toBe(MONGO_URI);
       expect(mongoUri).toBe(MONGO_URI);

+ 1 - 1
packages/app/src/test/global-setup.js

@@ -9,7 +9,7 @@ import 'tsconfig-paths/register';
 
 
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
-import { initMongooseGlobalSettings, getMongoUri, mongoOptions } from '~/server/util/mongoose-utils';
+import { initMongooseGlobalSettings, getMongoUri, mongoOptions } from '@growi/core';
 
 
 // check env
 // check env
 if (process.env.NODE_ENV !== 'test') {
 if (process.env.NODE_ENV !== 'test') {

+ 1 - 1
packages/app/src/test/setup.js

@@ -7,7 +7,7 @@
 
 
 const mongoose = require('mongoose');
 const mongoose = require('mongoose');
 
 
-const { initMongooseGlobalSettings, getMongoUri, mongoOptions } = require('~/server/util/mongoose-utils');
+const { initMongooseGlobalSettings, getMongoUri, mongoOptions } = require('@growi/core');
 
 
 mongoose.Promise = global.Promise;
 mongoose.Promise = global.Promise;
 
 

+ 0 - 1
packages/app/tsconfig.build.server.json

@@ -22,7 +22,6 @@
     "src/client",
     "src/client",
     "src/components",
     "src/components",
     "src/linter-checker",
     "src/linter-checker",
-    "src/migrations",
     "src/styles",
     "src/styles",
     "src/styles-hackmd",
     "src/styles-hackmd",
     "src/test"
     "src/test"

+ 1 - 0
packages/core/src/index.js

@@ -14,6 +14,7 @@ import * as _templateChecker from './utils/template-checker';
 
 
 export * from './plugin/interfaces/plugin-definition-v4';
 export * from './plugin/interfaces/plugin-definition-v4';
 export * from './models/devided-page-path';
 export * from './models/devided-page-path';
+export * from './utils/mongoose-utils';
 
 
 // export utils
 // export utils
 export const pathUtils = _pathUtils;
 export const pathUtils = _pathUtils;

+ 0 - 0
packages/app/src/server/util/mongoose-utils.ts → packages/core/src/utils/mongoose-utils.ts