test.yml 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. name: Test Plugin Build
  2. on:
  3. push:
  4. branches: [ dev ]
  5. pull_request:
  6. branches: [ dev ]
  7. jobs:
  8. build-and-test:
  9. runs-on: ubuntu-latest
  10. strategy:
  11. matrix:
  12. node-version: [16.x, 18.x, 20.x]
  13. steps:
  14. - name: Checkout code
  15. uses: actions/checkout@v4
  16. - name: Setup Node.js ${{ matrix.node-version }}
  17. uses: actions/setup-node@v4
  18. with:
  19. node-version: ${{ matrix.node-version }}
  20. cache: 'npm'
  21. - name: Install dependencies
  22. run: npm ci
  23. - name: Check TypeScript compilation
  24. run: npm run compile
  25. - name: Run tests (compile check)
  26. run: npm test
  27. - name: Package extension
  28. run: npm run package
  29. - name: Upload package as artifact
  30. if: matrix.node-version == '20.x'
  31. uses: actions/upload-artifact@v4
  32. with:
  33. name: xmake-vscode-${{ matrix.node-version }}.vsix
  34. path: "*.vsix"
  35. retention-days: 30
  36. # Test on different platforms
  37. test-platforms:
  38. runs-on: ${{ matrix.os }}
  39. needs: build-and-test
  40. strategy:
  41. matrix:
  42. os: [ubuntu-latest, windows-latest, macos-latest]
  43. node-version: [20.x]
  44. steps:
  45. - name: Checkout code
  46. uses: actions/checkout@v4
  47. - name: Setup Node.js ${{ matrix.node-version }}
  48. uses: actions/setup-node@v4
  49. with:
  50. node-version: ${{ matrix.node-version }}
  51. cache: 'npm'
  52. - name: Install dependencies
  53. run: npm ci
  54. - name: Test compilation on ${{ matrix.os }}
  55. run: npm run compile
  56. - name: Package extension on ${{ matrix.os }}
  57. run: npm run package
  58. - name: Upload platform-specific package
  59. uses: actions/upload-artifact@v4
  60. with:
  61. name: xmake-vscode-${{ matrix.os }}.vsix
  62. path: "*.vsix"
  63. retention-days: 7