Просмотр исходного кода

Merge pull request #10266 from weseek/support/170650-support-mongodb-v8-in-devcontainer

support: MongoDB v8 in DevContainer
Yuki Takei 7 месяцев назад
Родитель
Сommit
81183b6fae

+ 1 - 1
.devcontainer/compose.yml

@@ -15,7 +15,7 @@ services:
     - opentelemetry-collector-dev-setup_default
 
   mongo:
-    image: mongo:6.0
+    image: mongo:8.0
     restart: unless-stopped
     ports:
       - 27017

+ 5 - 3
.github/workflows/ci-app.yml

@@ -93,10 +93,11 @@ jobs:
     strategy:
       matrix:
         node-version: [20.x]
+        mongodb-version: ['6.0', '8.0']
 
     services:
       mongodb:
-        image: mongo:6.0
+        image: mongo:${{ matrix.mongodb-version }}
         ports:
           - 27017/tcp
 
@@ -135,7 +136,7 @@ jobs:
       - name: Upload coverage report as artifact
         uses: actions/upload-artifact@v4
         with:
-          name: Coverage Report
+          name: coverage-mongo${{ matrix.mongodb-version }}
           path: |
             apps/app/coverage
             packages/remark-growi-directive/coverage
@@ -157,10 +158,11 @@ jobs:
     strategy:
       matrix:
         node-version: [20.x]
+        mongodb-version: ['6.0', '8.0']
 
     services:
       mongodb:
-        image: mongo:6.0
+        image: mongo:${{ matrix.mongodb-version }}
         ports:
           - 27017/tcp
 

+ 11 - 6
.github/workflows/reusable-app-prod.yml

@@ -107,13 +107,17 @@ jobs:
     needs: [build-prod]
     runs-on: ubuntu-latest
 
+    strategy:
+      matrix:
+        mongodb-version: ['6.0', '8.0']
+
     services:
       mongodb:
-        image: mongo:6.0
+        image: mongo:${{ matrix.mongodb-version }}
         ports:
         - 27017/tcp
       elasticsearch:
-        image: docker.elastic.co/elasticsearch/elasticsearch:7.17.1
+        image: docker.elastic.co/elasticsearch/elasticsearch:9.0.1
         ports:
         - 9200/tcp
         env:
@@ -182,14 +186,15 @@ jobs:
       matrix:
         browser: [chromium, firefox, webkit]
         shard: [1/2, 2/2]
+        mongodb-version: ['6.0', '8.0']
 
     services:
       mongodb:
-        image: mongo:6.0
+        image: mongo:${{ matrix.mongodb-version }}
         ports:
         - 27017/tcp
       elasticsearch:
-        image: docker.elastic.co/elasticsearch/elasticsearch:7.17.1
+        image: docker.elastic.co/elasticsearch/elasticsearch:9.0.1
         ports:
         - 9200/tcp
         env:
@@ -279,7 +284,7 @@ jobs:
       uses: actions/upload-artifact@v4
       if: always()
       with:
-        name: blob-report-${{ matrix.browser }}-${{ steps.shard-id.outputs.shard_id }}
+        name: blob-report-${{ matrix.browser }}-mongo${{ matrix.mongodb-version }}-${{ steps.shard-id.outputs.shard_id }}
         path: ./apps/app/blob-report
         retention-days: 30
 
@@ -288,7 +293,7 @@ jobs:
       if: failure()
       with:
         type: ${{ job.status }}
-        job_name: '*Node CI for growi - run-playwright*'
+        job_name: '*Node CI for growi - run-playwright (${{ matrix.browser }}, MongoDB ${{ matrix.mongodb-version }})*'
         channel: '#ci'
         isCompactMode: true
         url: ${{ secrets.SLACK_WEBHOOK_URL }}

+ 3 - 3
CLAUDE.md

@@ -63,15 +63,15 @@ GROWI is a team collaboration software using markdown - a wiki platform with hie
 - **Authentication**: Passport.js with multiple strategies (local, LDAP, OAuth, SAML)
 - **Real-time Features**: Socket.io for collaborative editing and notifications
 - **Editor**: Custom markdown editor with collaborative editing using Yjs
-- **Database**: MongoDB 6.0+ with migration system using migrate-mongo
+- **Database**: MongoDB 8.0+ with migration system using migrate-mongo
 - **Package Manager**: pnpm with workspace support
 - **Build System**: Turborepo for monorepo orchestration
 
 ### Development Dependencies
 - Node.js v20.x or v22.x
 - pnpm 10.x  
-- MongoDB 6.0+
-- Optional: Redis 3.x, Elasticsearch 7.x/8.x (for full-text search)
+- MongoDB v6.x or v8.x
+- Optional: Redis 3.x, Elasticsearch 7.x/8.x/9.x (for full-text search)
 
 ## File Organization Patterns
 

+ 1 - 1
README.md

@@ -85,7 +85,7 @@ See [GROWI Docs: Environment Variables](https://docs.growi.org/en/admin-guide/ad
 - npm 10.x
 - pnpm 10.x
 - [Turborepo](https://turbo.build/repo)
-- MongoDB 6.0 or above
+- MongoDB v6.x or v8.x
 
 ### Optional Dependencies
 

+ 1 - 1
README_JP.md

@@ -85,7 +85,7 @@ Crowi からの移行は **[こちら](https://docs.growi.org/en/admin-guide/mig
 - npm 10.x
 - pnpm 10.x
 - [Turborepo](https://turbo.build/repo)
-- MongoDB 6.0 以上
+- MongoDB v6.x or v8.x
 
 ### オプションの依存関係
 

+ 7 - 4
bin/data-migrations/README.md

@@ -9,17 +9,20 @@ git clone https://github.com/weseek/growi
 cd growi/bin/data-migrations
 
 NETWORK=growi_devcontainer_default
-MONGO_URI=mongodb://growi_devcontainer_mongo_1/growi
+MONGO_URI=mongodb://growi-devcontainer_mongo-1/growi
 
 docker run --rm \
   --network $NETWORK \
   -v "$(pwd)"/src:/opt \
   -w /opt \
   -e MIGRATION_MODULE=v60x \
-  mongo:6.0 \
+  mongo:8.0 \
   /bin/mongosh $MONGO_URI index.js
 ```
 
+> **Note**
+> This script uses MongoDB 8.0 Docker image, but mongosh has backward compatibility and can connect to any MongoDB server version 4.2 or greater. See [MongoDB Shell documentation](https://www.mongodb.com/docs/mongodb-shell/install/) for details.
+
 ## Variables
 | Variable              | Description                                                                    | Default |
 | --------------------- | ------------------------------------------------------------------------------ | ------- |
@@ -81,12 +84,12 @@ git clone https://github.com/weseek/growi
 cd growi/bin/data-migrations
 
 NETWORK=growi_devcontainer_default \
-MONGO_URI=mongodb://growi_devcontainer_mongo_1/growi \
+MONGO_URI=mongodb://growi-devcontainer_mongo-1/growi
 docker run --rm \
   --network $NETWORK \
   -v "$(pwd)"/src:/opt \
   -w /opt \
   -e MIGRATION_MODULE=custom \
-  mongo:6.0 \
+  mongo:8.0 \
   /bin/mongosh $MONGO_URI index.js
 ```