-
Notifications
You must be signed in to change notification settings - Fork 0
feat: Comprehensive quality improvements, CI/CD, and v1.0.0 preparation #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 1 commit
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
a104ab2
chore: prepare for v1.0.0 release
tsironis 01f20d6
feat: add release-please automation and OIDC provenance publishing
tsironis 0baef0e
test: add tests for debug.ts and server.ts to meet coverage threshold
tsironis 2dad51c
fix: remove no-op replace in getRuntimeDir
tsironis a341ac9
fix: resolve e2e test failures across all browsers
tsironis File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,44 @@ | ||
| version: 2 | ||
| updates: | ||
| # Enable version updates for npm | ||
| - package-ecosystem: "npm" | ||
| directory: "/" | ||
| schedule: | ||
| interval: "weekly" | ||
| day: "monday" | ||
| open-pull-requests-limit: 10 | ||
| reviewers: | ||
| - "grnet-developers" | ||
| assignees: | ||
| - "grnet-developers" | ||
| commit-message: | ||
| prefix: "deps" | ||
| include: "scope" | ||
| labels: | ||
| - "dependencies" | ||
| - "npm" | ||
| versioning-strategy: increase | ||
|
|
||
| # Allow production dependencies only | ||
| allow: | ||
| - dependency-type: "production" | ||
| ignore: | ||
| # Ignore major version updates for stability | ||
| - dependency-name: "react" | ||
| update-types: ["version-update:semver-major"] | ||
| - dependency-name: "react-dom" | ||
| update-types: ["version-update:semver-major"] | ||
|
|
||
| # Enable version updates for GitHub Actions | ||
| - package-ecosystem: "github-actions" | ||
| directory: "/" | ||
| schedule: | ||
| interval: "weekly" | ||
| day: "monday" | ||
| open-pull-requests-limit: 5 | ||
| labels: | ||
| - "dependencies" | ||
| - "github-actions" | ||
| commit-message: | ||
| prefix: "ci" | ||
| include: "scope" | ||
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,157 @@ | ||
| name: Automated Tests | ||
|
|
||
| on: | ||
| push: | ||
| branches: [main, develop] | ||
| pull_request: | ||
| branches: [main, develop] | ||
| schedule: | ||
| - cron: '0 0 * * 0' # Weekly on Sunday | ||
|
|
||
| jobs: | ||
| test: | ||
| name: Test Suite | ||
| runs-on: ubuntu-latest | ||
|
|
||
| strategy: | ||
| matrix: | ||
| node-version: [20.x, 22.x] | ||
|
|
||
| steps: | ||
| - name: Checkout code | ||
| uses: actions/checkout@v4 | ||
|
|
||
| - name: Setup Node.js ${{ matrix.node-version }} | ||
| uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: ${{ matrix.node-version }} | ||
| cache: 'npm' | ||
|
|
||
| - name: Install dependencies | ||
| run: npm ci | ||
|
|
||
| - name: Run tests with coverage | ||
| run: npm run test:coverage | ||
|
|
||
| - name: Check coverage thresholds | ||
| run: | | ||
| COVERAGE=$(cat coverage/coverage-summary.json | jq '.total.lines.pct') | ||
| echo "Test Coverage: ${COVERAGE}%" | ||
| if (( $(echo "$COVERAGE < 80" | bc -l) )); then | ||
| echo "❌ Coverage $COVERAGE% is below 80% threshold" | ||
| exit 1 | ||
| fi | ||
| echo "✅ Coverage $COVERAGE% meets threshold" | ||
|
|
||
| - name: Upload coverage to Codecov | ||
| uses: codecov/codecov-action@v4 | ||
| with: | ||
| token: ${{ secrets.CODECOV_TOKEN }} | ||
| files: ./coverage/lcov.info | ||
| flags: unittests | ||
| name: codecov-umbrella | ||
|
|
||
| - name: Archive coverage reports | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: coverage-report-node-${{ matrix.node-version }} | ||
| path: coverage/ | ||
| retention-days: 30 | ||
|
|
||
| test-windows: | ||
| name: Test Suite (Windows) | ||
| runs-on: windows-latest | ||
|
|
||
| steps: | ||
| - name: Checkout code | ||
| uses: actions/checkout@v4 | ||
|
|
||
| - name: Setup Node.js | ||
| uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: 22.x | ||
| cache: 'npm' | ||
|
|
||
| - name: Install dependencies | ||
| run: npm ci | ||
|
|
||
| - name: Run tests | ||
| run: npm test | ||
|
|
||
| test-macos: | ||
| name: Test Suite (macOS) | ||
| runs-on: macos-latest | ||
|
|
||
| steps: | ||
| - name: Checkout code | ||
| uses: actions/checkout@v4 | ||
|
|
||
| - name: Setup Node.js | ||
| uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: 22.x | ||
| cache: 'npm' | ||
|
|
||
| - name: Install dependencies | ||
| run: npm ci | ||
|
|
||
| - name: Run tests | ||
| run: npm test | ||
|
|
||
| e2e-tests: | ||
| name: E2E Test Suite | ||
| runs-on: ubuntu-latest | ||
|
|
||
| strategy: | ||
| matrix: | ||
| node-version: [20.x, 22.x] | ||
| browser: [chromium, firefox, webkit] | ||
| fail-fast: false | ||
|
|
||
| steps: | ||
| - name: Checkout code | ||
| uses: actions/checkout@v4 | ||
|
|
||
| - name: Setup Node.js ${{ matrix.node-version }} | ||
| uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: ${{ matrix.node-version }} | ||
| cache: 'npm' | ||
|
|
||
| - name: Install dependencies | ||
| run: npm ci | ||
|
|
||
| - name: Install Playwright Browsers | ||
| run: npx playwright install --with-deps ${{ matrix.browser }} | ||
|
|
||
| - name: Build the project | ||
| run: npm run build | ||
|
|
||
| - name: Run E2E tests | ||
| run: npm run test:e2e -- --project=${{ matrix.browser }} | ||
| env: | ||
| CI: true | ||
|
|
||
| - name: Upload Playwright Report | ||
| uses: actions/upload-artifact@v4 | ||
| if: always() | ||
| with: | ||
| name: playwright-report-${{ matrix.node-version }}-${{ matrix.browser }} | ||
| path: playwright-report/ | ||
| retention-days: 30 | ||
|
|
||
| - name: Upload Test Results | ||
| uses: actions/upload-artifact@v4 | ||
| if: always() | ||
| with: | ||
| name: test-results-${{ matrix.node-version }}-${{ matrix.browser }} | ||
| path: test-results/ | ||
| retention-days: 30 | ||
|
|
||
| - name: Upload Playwright Screenshots | ||
| uses: actions/upload-artifact@v4 | ||
| if: failure() | ||
| with: | ||
| name: screenshots-${{ matrix.node-version }}-${{ matrix.browser }} | ||
| path: test-results/ | ||
| retention-days: 30 |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,109 @@ | ||
| name: CI | ||
|
|
||
| on: | ||
| push: | ||
| branches: [main, develop] | ||
| pull_request: | ||
| branches: [main, develop] | ||
|
|
||
| jobs: | ||
| build: | ||
| name: Build & Test | ||
| runs-on: ubuntu-latest | ||
|
|
||
| strategy: | ||
| matrix: | ||
| node-version: [20.x, 22.x] | ||
|
|
||
| steps: | ||
| - name: Checkout code | ||
| uses: actions/checkout@v4 | ||
|
|
||
| - name: Setup Node.js ${{ matrix.node-version }} | ||
| uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: ${{ matrix.node-version }} | ||
| cache: 'npm' | ||
|
|
||
| - name: Install dependencies | ||
| run: npm ci | ||
|
|
||
| - name: Run TypeScript compiler | ||
| run: npm run build | ||
|
|
||
| - name: Run tests | ||
| run: npm test -- --coverage | ||
|
|
||
| - name: Upload coverage reports | ||
| uses: codecov/codecov-action@v4 | ||
| with: | ||
| token: ${{ secrets.CODECOV_TOKEN }} | ||
| files: ./coverage/lcov.info | ||
| flags: unittests | ||
| name: codecov-umbrella | ||
| fail_ci_if_error: false | ||
|
|
||
| - name: Check test coverage thresholds | ||
| run: | | ||
| COVERAGE=$(cat coverage/coverage-summary.json | jq '.total.lines.pct') | ||
| if (( $(echo "$COVERAGE < 80" | bc -l) )); then | ||
| echo "Coverage $COVERAGE% is below 80% threshold" | ||
| exit 1 | ||
| fi | ||
| echo "Coverage $COVERAGE% meets threshold" | ||
|
|
||
| lint: | ||
| name: Lint & Type Check | ||
| runs-on: ubuntu-latest | ||
|
|
||
| steps: | ||
| - name: Checkout code | ||
| uses: actions/checkout@v4 | ||
|
|
||
| - name: Setup Node.js | ||
| uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: 22.x | ||
| cache: 'npm' | ||
|
|
||
| - name: Install dependencies | ||
| run: npm ci | ||
|
|
||
| - name: Run TypeScript type check | ||
| run: npx tsc --noEmit | ||
|
|
||
| - name: Check for security vulnerabilities | ||
| run: npm audit --audit-level=moderate | ||
|
|
||
| security: | ||
| name: Security Scanning | ||
| runs-on: ubuntu-latest | ||
| permissions: | ||
| contents: read | ||
| security-events: write | ||
| actions: read | ||
|
|
||
| steps: | ||
| - name: Checkout code | ||
| uses: actions/checkout@v4 | ||
|
|
||
| - name: Setup Node.js | ||
| uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: 22.x | ||
| cache: 'npm' | ||
|
|
||
| - name: Run npm audit | ||
| run: npm audit --production | ||
| continue-on-error: true | ||
|
|
||
| - name: Initialize CodeQL | ||
| uses: github/codeql-action/init@v3 | ||
| with: | ||
| languages: javascript | ||
|
|
||
| - name: Autobuild | ||
| uses: github/codeql-action/autobuild@v3 | ||
|
|
||
| - name: Perform CodeQL Analysis | ||
| uses: github/codeql-action/analyze@v3 |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| name: Dependency Review | ||
|
|
||
| on: | ||
| pull_request: | ||
| branches: [main, develop] | ||
|
|
||
| permissions: | ||
| contents: read | ||
|
|
||
| jobs: | ||
| dependency-review: | ||
| name: Dependency Review | ||
| runs-on: ubuntu-latest | ||
|
|
||
| steps: | ||
| - name: Checkout code | ||
| uses: actions/checkout@v4 | ||
|
|
||
| - name: Dependency Review | ||
| uses: actions/dependency-review-action@v4 | ||
| with: | ||
| fail-on-severity: moderate | ||
| deny-licenses: GPL-3.0, AGPL-3.0 |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be replaced with
CODEOWNERSfile - see https://github.blog/changelog/2025-04-29-dependabot-reviewers-configuration-option-being-replaced-by-code-owners/