Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
116 changes: 116 additions & 0 deletions .github/workflows/vscode-extension.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
name: VS Code Extension CI

on:
push:
branches: [main, 'feature/**']
paths: ['vscode-rf-skills/**']
pull_request:
paths: ['vscode-rf-skills/**']

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20, 22]
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}

- name: Install dependencies
run: npm ci
working-directory: vscode-rf-skills

- name: Lint
run: npm run lint
working-directory: vscode-rf-skills

- name: Type check
run: npm run check-types
working-directory: vscode-rf-skills

- name: Compile
run: npm run compile
working-directory: vscode-rf-skills

test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 20

- uses: actions/setup-python@v5
with:
python-version: '3.12'

- name: Install Robot Framework
run: pip install robotframework

- name: Install dependencies
run: npm ci
working-directory: vscode-rf-skills

- name: Compile
run: npm run compile
working-directory: vscode-rf-skills

- name: Run tests
run: xvfb-run -a npm test
working-directory: vscode-rf-skills

validate-snippets:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 20

- name: Validate snippet JSON files
run: |
exit_code=0
for f in vscode-rf-skills/snippets/*.json; do
echo "Validating $f..."
if ! node -e "JSON.parse(require('fs').readFileSync('$f', 'utf8'))"; then
echo "FAIL: $f is not valid JSON"
exit_code=1
fi
done
if [ "$exit_code" -eq 0 ]; then
echo "All snippet files are valid JSON"
fi
exit $exit_code

package:
needs: [build, validate-snippets]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 20

- name: Install dependencies
run: npm ci
working-directory: vscode-rf-skills

- name: Build for production
run: npm run package
working-directory: vscode-rf-skills

- name: Create VSIX package
run: npx vsce package --no-dependencies
working-directory: vscode-rf-skills

- uses: actions/upload-artifact@v4
with:
name: vsix-package
path: vscode-rf-skills/*.vsix
Loading
Loading