code-qa.yml 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. name: Code QA Roo Code
  2. on:
  3. workflow_dispatch:
  4. push:
  5. branches: [main]
  6. pull_request:
  7. types: [opened, reopened, ready_for_review, synchronize]
  8. branches: [main]
  9. jobs:
  10. compile:
  11. runs-on: ubuntu-latest
  12. steps:
  13. - name: Checkout code
  14. uses: actions/checkout@v4
  15. - name: Setup Node.js
  16. uses: actions/setup-node@v4
  17. with:
  18. node-version: '18'
  19. cache: 'npm'
  20. - name: Install dependencies
  21. run: npm run install:all
  22. - name: Compile
  23. run: npm run compile
  24. - name: Check types
  25. run: npm run check-types
  26. - name: Lint
  27. run: npm run lint
  28. unit-test:
  29. runs-on: ubuntu-latest
  30. steps:
  31. - name: Checkout code
  32. uses: actions/checkout@v4
  33. - name: Setup Node.js
  34. uses: actions/setup-node@v4
  35. with:
  36. node-version: '18'
  37. cache: 'npm'
  38. - name: Install dependencies
  39. run: npm run install:all
  40. - name: Run unit tests
  41. run: npm test
  42. integration-test:
  43. # https://stackoverflow.com/questions/72925899/github-actions-detect-if-secret-exists
  44. env:
  45. OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
  46. if: ${{ env.OPENROUTER_API_KEY != '' }}
  47. strategy:
  48. matrix:
  49. os: [ubuntu-latest] # macos-latest, windows-latest
  50. runs-on: ${{ matrix.os }}
  51. steps:
  52. - name: Checkout code
  53. uses: actions/checkout@v4
  54. - name: Setup Node.js
  55. uses: actions/setup-node@v4
  56. with:
  57. node-version: '18'
  58. cache: 'npm'
  59. - name: Create env.integration file
  60. run: echo "OPENROUTER_API_KEY=${{ secrets.OPENROUTER_API_KEY }}" > .env.integration
  61. - name: Install dependencies
  62. run: npm run install:all
  63. - run: xvfb-run -a npm run test:integration
  64. if: runner.os == 'Linux'
  65. - run: npm run test:integration
  66. if: runner.os != 'Linux'