code-qa.yml 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  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. check-translations:
  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: Verify all translations are complete
  41. run: node scripts/find-missing-translations.js
  42. knip:
  43. runs-on: ubuntu-latest
  44. steps:
  45. - name: Checkout code
  46. uses: actions/checkout@v4
  47. - name: Setup Node.js
  48. uses: actions/setup-node@v4
  49. with:
  50. node-version: '18'
  51. cache: 'npm'
  52. - name: Install dependencies
  53. run: npm run install:all
  54. - name: Run knip checks
  55. run: npm run knip
  56. test-extension:
  57. runs-on: ubuntu-latest
  58. steps:
  59. - name: Checkout code
  60. uses: actions/checkout@v4
  61. - name: Setup Node.js
  62. uses: actions/setup-node@v4
  63. with:
  64. node-version: '18'
  65. cache: 'npm'
  66. - name: Install dependencies
  67. run: npm run install:all
  68. - name: Run unit tests
  69. run: npx jest --silent
  70. test-webview:
  71. runs-on: ubuntu-latest
  72. steps:
  73. - name: Checkout code
  74. uses: actions/checkout@v4
  75. - name: Setup Node.js
  76. uses: actions/setup-node@v4
  77. with:
  78. node-version: '18'
  79. cache: 'npm'
  80. - name: Install dependencies
  81. run: npm run install:all
  82. - name: Run unit tests
  83. working-directory: webview-ui
  84. run: npx jest --silent
  85. unit-test:
  86. needs: [test-extension, test-webview]
  87. runs-on: ubuntu-latest
  88. steps:
  89. - name: NO-OP
  90. run: echo "All unit tests passed."
  91. check-openrouter-api-key:
  92. runs-on: ubuntu-latest
  93. outputs:
  94. exists: ${{ steps.openrouter-api-key-check.outputs.defined }}
  95. steps:
  96. - name: Check if OpenRouter API key exists
  97. id: openrouter-api-key-check
  98. shell: bash
  99. run: |
  100. if [ "${{ secrets.OPENROUTER_API_KEY }}" != '' ]; then
  101. echo "defined=true" >> $GITHUB_OUTPUT;
  102. else
  103. echo "defined=false" >> $GITHUB_OUTPUT;
  104. fi
  105. integration-test:
  106. runs-on: ubuntu-latest
  107. needs: [check-openrouter-api-key]
  108. if: needs.check-openrouter-api-key.outputs.exists == 'true'
  109. steps:
  110. - name: Checkout code
  111. uses: actions/checkout@v4
  112. - name: Setup Node.js
  113. uses: actions/setup-node@v4
  114. with:
  115. node-version: '18'
  116. cache: 'npm'
  117. - name: Install dependencies
  118. run: npm run install:all
  119. - name: Create .env.local file
  120. working-directory: e2e
  121. run: echo "OPENROUTER_API_KEY=${{ secrets.OPENROUTER_API_KEY }}" > .env.local
  122. - name: Run integration tests
  123. working-directory: e2e
  124. run: xvfb-run -a npm run ci