code-qa.yml 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  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. env:
  10. NODE_VERSION: 20.18.1
  11. PNPM_VERSION: 10.8.1
  12. jobs:
  13. compile:
  14. runs-on: ubuntu-latest
  15. steps:
  16. - name: Checkout code
  17. uses: actions/checkout@v4
  18. - name: Install pnpm
  19. uses: pnpm/action-setup@v4
  20. with:
  21. version: ${{ env.PNPM_VERSION }}
  22. - name: Setup Node.js
  23. uses: actions/setup-node@v4
  24. with:
  25. node-version: ${{ env.NODE_VERSION }}
  26. cache: 'pnpm'
  27. - name: Install dependencies
  28. run: pnpm install
  29. - name: Check types
  30. run: pnpm check-types
  31. - name: Lint
  32. run: pnpm lint
  33. check-translations:
  34. runs-on: ubuntu-latest
  35. steps:
  36. - name: Checkout code
  37. uses: actions/checkout@v4
  38. - name: Install pnpm
  39. uses: pnpm/action-setup@v4
  40. with:
  41. version: ${{ env.PNPM_VERSION }}
  42. - name: Setup Node.js
  43. uses: actions/setup-node@v4
  44. with:
  45. node-version: ${{ env.NODE_VERSION }}
  46. cache: 'pnpm'
  47. - name: Install dependencies
  48. run: pnpm install
  49. - name: Verify all translations are complete
  50. run: node scripts/find-missing-translations.js
  51. knip:
  52. runs-on: ubuntu-latest
  53. steps:
  54. - name: Checkout code
  55. uses: actions/checkout@v4
  56. - name: Install pnpm
  57. uses: pnpm/action-setup@v4
  58. with:
  59. version: ${{ env.PNPM_VERSION }}
  60. - name: Setup Node.js
  61. uses: actions/setup-node@v4
  62. with:
  63. node-version: ${{ env.NODE_VERSION }}
  64. cache: 'pnpm'
  65. - name: Install dependencies
  66. run: pnpm install
  67. - name: Run knip checks
  68. run: pnpm knip
  69. test-extension:
  70. runs-on: ${{ matrix.os }}
  71. strategy:
  72. matrix:
  73. os: [ubuntu-latest, windows-latest]
  74. steps:
  75. - name: Checkout code
  76. uses: actions/checkout@v4
  77. - name: Install pnpm
  78. uses: pnpm/action-setup@v4
  79. with:
  80. version: ${{ env.PNPM_VERSION }}
  81. - name: Setup Node.js
  82. uses: actions/setup-node@v4
  83. with:
  84. node-version: ${{ env.NODE_VERSION }}
  85. cache: 'pnpm'
  86. - name: Install dependencies
  87. run: pnpm install
  88. - name: Run unit tests
  89. working-directory: src
  90. run: pnpm test
  91. test-webview:
  92. runs-on: ${{ matrix.os }}
  93. strategy:
  94. matrix:
  95. os: [ubuntu-latest, windows-latest]
  96. steps:
  97. - name: Checkout code
  98. uses: actions/checkout@v4
  99. - name: Install pnpm
  100. uses: pnpm/action-setup@v4
  101. with:
  102. version: ${{ env.PNPM_VERSION }}
  103. - name: Setup Node.js
  104. uses: actions/setup-node@v4
  105. with:
  106. node-version: ${{ env.NODE_VERSION }}
  107. cache: 'pnpm'
  108. - name: Install dependencies
  109. run: pnpm install
  110. - name: Run unit tests
  111. working-directory: webview-ui
  112. run: pnpm test
  113. unit-test:
  114. needs: [test-extension, test-webview]
  115. runs-on: ubuntu-latest
  116. steps:
  117. - name: NO-OP
  118. run: echo "All unit tests passed."
  119. check-openrouter-api-key:
  120. runs-on: ubuntu-latest
  121. outputs:
  122. exists: ${{ steps.openrouter-api-key-check.outputs.defined }}
  123. steps:
  124. - name: Check if OpenRouter API key exists
  125. id: openrouter-api-key-check
  126. shell: bash
  127. run: |
  128. if [ "${{ secrets.OPENROUTER_API_KEY }}" != '' ]; then
  129. echo "defined=true" >> $GITHUB_OUTPUT;
  130. else
  131. echo "defined=false" >> $GITHUB_OUTPUT;
  132. fi
  133. integration-test:
  134. runs-on: ubuntu-latest
  135. needs: [check-openrouter-api-key]
  136. if: needs.check-openrouter-api-key.outputs.exists == 'true'
  137. steps:
  138. - name: Checkout code
  139. uses: actions/checkout@v4
  140. - name: Install pnpm
  141. uses: pnpm/action-setup@v4
  142. with:
  143. version: ${{ env.PNPM_VERSION }}
  144. - name: Setup Node.js
  145. uses: actions/setup-node@v4
  146. with:
  147. node-version: ${{ env.NODE_VERSION }}
  148. cache: 'pnpm'
  149. - name: Install dependencies
  150. run: pnpm install
  151. - name: Create .env.local file
  152. working-directory: apps/vscode-e2e
  153. run: echo "OPENROUTER_API_KEY=${{ secrets.OPENROUTER_API_KEY }}" > .env.local
  154. - name: Run integration tests
  155. working-directory: apps/vscode-e2e
  156. run: xvfb-run -a pnpm test:ci