fix(deps): update npm - - package.json #9121
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: | |
| build-ubuntu: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node-version: [22.x, 24.x] | |
| mongodb-version: ['6.0', '7.0', '8.0'] | |
| steps: | |
| - name: Harden Runner | |
| uses: step-security/harden-runner@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0 | |
| 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@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.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 --no-fund | |
| # 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@1af58845a975a7985b0beb0cbe6fbbb71a41dbad # v5.5.3 | |
| with: | |
| files: ./coverage/lcov.info | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| - name: Build frontend | |
| run: npm run build-ui | |
| - name: Run cypress test | |
| uses: cypress-io/github-action@4c06c48f3ffea349b7189aa06dfcda47a9fa7b92 # v7.1.8 | |
| with: | |
| # skip the action's internal npm ci — dependencies are already installed above | |
| install: false | |
| 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@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0 | |
| 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@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.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 --no-fund | |
| - 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 |