name: Test Plugin Build on: push: branches: [ dev ] pull_request: branches: [ dev ] jobs: build-and-test: runs-on: ubuntu-latest strategy: matrix: node-version: [16.x, 18.x, 20.x] steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'npm' - name: Install dependencies run: npm ci - name: Check TypeScript compilation run: npm run compile - name: Run tests (compile check) run: npm test - name: Package extension run: npm run package - name: Upload package as artifact if: matrix.node-version == '20.x' uses: actions/upload-artifact@v4 with: name: xmake-vscode-${{ matrix.node-version }}.vsix path: "*.vsix" retention-days: 30 # Test on different platforms test-platforms: runs-on: ${{ matrix.os }} needs: build-and-test strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] node-version: [20.x] steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'npm' - name: Install dependencies run: npm ci - name: Test compilation on ${{ matrix.os }} run: npm run compile - name: Package extension on ${{ matrix.os }} run: npm run package - name: Upload platform-specific package uses: actions/upload-artifact@v4 with: name: xmake-vscode-${{ matrix.os }}.vsix path: "*.vsix" retention-days: 7