code-qa.yml 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  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. check-translations:
  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: Verify all translations are complete
  30. run: node scripts/find-missing-translations.js
  31. knip:
  32. runs-on: ubuntu-latest
  33. steps:
  34. - name: Checkout code
  35. uses: actions/checkout@v4
  36. - name: Install pnpm
  37. uses: pnpm/action-setup@v4
  38. with:
  39. version: ${{ env.PNPM_VERSION }}
  40. - name: Setup Node.js
  41. uses: actions/setup-node@v4
  42. with:
  43. node-version: ${{ env.NODE_VERSION }}
  44. cache: 'pnpm'
  45. - name: Install dependencies
  46. run: pnpm install
  47. - name: Run knip checks
  48. run: pnpm knip
  49. compile:
  50. runs-on: ubuntu-latest
  51. steps:
  52. - name: Checkout code
  53. uses: actions/checkout@v4
  54. - name: Install pnpm
  55. uses: pnpm/action-setup@v4
  56. with:
  57. version: ${{ env.PNPM_VERSION }}
  58. - name: Setup Node.js
  59. uses: actions/setup-node@v4
  60. with:
  61. node-version: ${{ env.NODE_VERSION }}
  62. cache: 'pnpm'
  63. - name: Install dependencies
  64. run: pnpm install
  65. - name: Lint
  66. run: pnpm lint
  67. - name: Check types
  68. run: pnpm check-types
  69. platform-unit-test:
  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. run: pnpm test
  90. check-openrouter-api-key:
  91. runs-on: ubuntu-latest
  92. outputs:
  93. exists: ${{ steps.openrouter-api-key-check.outputs.defined }}
  94. steps:
  95. - name: Check if OpenRouter API key exists
  96. id: openrouter-api-key-check
  97. shell: bash
  98. run: |
  99. if [ "${{ secrets.OPENROUTER_API_KEY }}" != '' ]; then
  100. echo "defined=true" >> $GITHUB_OUTPUT;
  101. else
  102. echo "defined=false" >> $GITHUB_OUTPUT;
  103. fi
  104. integration-test:
  105. runs-on: ubuntu-latest
  106. needs: [check-openrouter-api-key]
  107. if: needs.check-openrouter-api-key.outputs.exists == 'true'
  108. steps:
  109. - name: Checkout code
  110. uses: actions/checkout@v4
  111. - name: Install pnpm
  112. uses: pnpm/action-setup@v4
  113. with:
  114. version: ${{ env.PNPM_VERSION }}
  115. - name: Setup Node.js
  116. uses: actions/setup-node@v4
  117. with:
  118. node-version: ${{ env.NODE_VERSION }}
  119. cache: 'pnpm'
  120. - name: Install dependencies
  121. run: pnpm install
  122. - name: Create .env.local file
  123. working-directory: apps/vscode-e2e
  124. run: echo "OPENROUTER_API_KEY=${{ secrets.OPENROUTER_API_KEY }}" > .env.local
  125. - name: Run integration tests
  126. working-directory: apps/vscode-e2e
  127. run: xvfb-run -a pnpm test:ci
  128. unit-test:
  129. needs: [platform-unit-test] # [platform-unit-test, integration-test]
  130. runs-on: ubuntu-latest
  131. steps:
  132. - name: NO-OP
  133. run: echo "All tests passed."