fix(deps): update npm - - package.json #8398
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node | |
| # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions | |
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| permissions: | |
| pull-requests: write | |
| jobs: | |
| # Ubuntu build with MongoDB matrix (9 combinations: 3 Node × 3 MongoDB) | |
| build-ubuntu: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node-version: [20.x, 22.x, 24.x] | |
| mongodb-version: ['6.0', '7.0', '8.0'] | |
| steps: | |
| - name: Harden Runner | |
| uses: step-security/harden-runner@e3f713f2d8f53843e71c69a996d56f51aa9adfb9 # v2.14.1 | |
| with: | |
| egress-policy: audit | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| fetch-depth: 0 | |
| - name: Use Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| - name: Start MongoDB | |
| uses: supercharge/mongodb-github-action@315db7fe45ac2880b7758f1933e6e5d59afd5e94 # 1.12.1 | |
| with: | |
| mongodb-version: ${{ matrix.mongodb-version }} | |
| - name: Install dependencies | |
| run: npm ci | |
| # for now only check the types of the server | |
| # tsconfig isn't quite set up right to respect what vite accepts | |
| # for the frontend code | |
| - name: Check Types (Server) | |
| run: npm run check-types:server | |
| - name: Build TypeScript | |
| run: npm run build-ts | |
| - name: Test | |
| id: test | |
| run: | | |
| npm run test-coverage-ci | |
| npm run test-coverage-ci --workspaces --if-present | |
| - name: MongoDB Integration Tests | |
| env: | |
| RUN_MONGO_TESTS: 'true' | |
| GIT_PROXY_MONGO_CONNECTION_STRING: mongodb://localhost:27017/git-proxy-test | |
| run: npm run test:integration | |
| - name: Upload test coverage report | |
| uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2 | |
| with: | |
| files: ./coverage/lcov.info | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| - name: Build frontend | |
| run: npm run build-ui | |
| - name: Save build folder | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 | |
| with: | |
| name: build-ubuntu-node-${{ matrix.node-version }}-mongo-${{ matrix.mongodb-version }} | |
| if-no-files-found: error | |
| path: build | |
| - name: Download the build folders | |
| uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5 | |
| with: | |
| name: build-ubuntu-node-${{ matrix.node-version }}-mongo-${{ matrix.mongodb-version }} | |
| path: build | |
| - name: Run cypress test | |
| uses: cypress-io/github-action@f790eee7a50d9505912f50c2095510be7de06aa7 # v6.10.9 | |
| with: | |
| start: npm start & | |
| wait-on: 'http://localhost:3000' | |
| wait-on-timeout: 120 | |
| command: npm run cypress:run | |
| # Windows build - single combination for development support | |
| build-windows: | |
| runs-on: windows-latest | |
| steps: | |
| - name: Harden Runner | |
| uses: step-security/harden-runner@e3f713f2d8f53843e71c69a996d56f51aa9adfb9 # v2.14.1 | |
| with: | |
| egress-policy: audit | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| fetch-depth: 0 | |
| - name: Use Node.js 24.x | |
| uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 | |
| with: | |
| node-version: 24.x | |
| - name: Enable Windows Developer Mode | |
| shell: powershell | |
| run: | | |
| reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" /t REG_DWORD /f /v "AllowDevelopmentWithoutDevLicense" /d "1" | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Check Types (Server) | |
| run: npm run check-types:server | |
| - name: Build TypeScript | |
| run: npm run build-ts | |
| - name: Test | |
| id: test | |
| shell: bash | |
| run: | | |
| npm run test-coverage-ci | |
| npm run test-coverage-ci --workspaces --if-present | |
| - name: Build frontend | |
| run: npm run build-ui | |
| # Execute a final job to collect the results and report a single check status | |
| results: | |
| if: ${{ always() }} | |
| runs-on: ubuntu-latest | |
| name: build result | |
| needs: [build-ubuntu, build-windows] | |
| steps: | |
| - name: Check build results | |
| run: | | |
| ubuntu_result="${{ needs.build-ubuntu.result }}" | |
| windows_result="${{ needs.build-windows.result }}" | |
| if [[ ($ubuntu_result == "success" || $ubuntu_result == "skipped") && ($windows_result == "success" || $windows_result == "skipped") ]]; then | |
| echo "### ✅ All builds passed" >> $GITHUB_STEP_SUMMARY | |
| exit 0 | |
| else | |
| echo "### ❌ Some builds failed" >> $GITHUB_STEP_SUMMARY | |
| echo "- Ubuntu: $ubuntu_result" >> $GITHUB_STEP_SUMMARY | |
| echo "- Windows: $windows_result" >> $GITHUB_STEP_SUMMARY | |
| exit 1 | |
| fi | |
| - name: Parse failed matrix jobs | |
| if: needs.build-ubuntu.result == 'failure' || needs.build-windows.result == 'failure' | |
| run: | | |
| echo "## Failed Matrix Combinations" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "| OS | Node Version | MongoDB Version | Status |" >> $GITHUB_STEP_SUMMARY | |
| echo "|----|--------------|-----------------|--------|" >> $GITHUB_STEP_SUMMARY | |
| # Since we can't directly get individual matrix job statuses, | |
| # we'll note that the build job failed | |
| echo "| Multiple | Multiple | Multiple | ❌ Failed |" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "⚠️ Check the [build job logs](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) for details on which specific matrix combinations failed." >> $GITHUB_STEP_SUMMARY |