-
Notifications
You must be signed in to change notification settings - Fork 0
140 lines (133 loc) · 4.78 KB
/
Copy pathci.yml
File metadata and controls
140 lines (133 loc) · 4.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
name: CI
on:
push:
pull_request:
permissions:
contents: write
pull-requests: read
env:
CARGO_TERM_COLOR: always
CARGO_TARGET_DIR: target
jobs:
detect_changes:
name: Select CLI matrix
runs-on: ubuntu-latest
outputs:
os: ${{ steps.select.outputs.os }}
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
with:
fetch-depth: 0
- uses: dorny/paths-filter@d1c1ffe0248fe513906c8e24db8ea791d46f8590
id: changes
with:
filters: |
vm_jit:
- 'src/vm/jit/**'
- 'src/vm/native/**'
- 'src/vm/mod.rs'
- 'src/builtins/runtime/jit.rs'
- 'tests/jit/**'
- 'tests/jit_tests.rs'
- id: select
env:
VM_JIT_CHANGED: ${{ steps.changes.outputs.vm_jit }}
shell: bash
run: |
if [[ "$VM_JIT_CHANGED" == "true" ]]; then
echo 'os=["ubuntu-latest","macos-latest","windows-latest"]' >> "$GITHUB_OUTPUT"
else
echo 'os=["ubuntu-latest"]' >> "$GITHUB_OUTPUT"
fi
rust:
name: Rust lint and tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
with:
path: rustscript
- uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30
with:
components: rustfmt, clippy
- name: Format check
working-directory: rustscript
run: cargo fmt --all -- --check
- name: pd-vm-nostd tests
working-directory: rustscript
run: cargo test -p pd-vm-nostd
- name: Runtime-only dependency check
working-directory: rustscript
run: cargo check -p pd-vm --no-default-features --features runtime
- name: Clippy
working-directory: rustscript
run: cargo clippy --workspace --all-targets --all-features
- name: Tests
working-directory: rustscript
run: cargo test --workspace
pd-vm-cli:
name: pd-vm CLI (${{ matrix.os }})
needs: detect_changes
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: ${{ fromJSON(needs.detect_changes.outputs.os) }}
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
with:
path: rustscript
- uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30
- name: Build pd-vm CLI
working-directory: rustscript
run: cargo build -p pd-vm --bin pd-vm-run --release
- name: Stage pd-vm CLI artifact
working-directory: rustscript
shell: bash
run: |
mkdir -p dist
suffix=""
if [[ "${{ runner.os }}" == "Windows" ]]; then suffix=".exe"; fi
cp "target/release/pd-vm-run${suffix}" "dist/pd-vm-run-${{ runner.os }}-${{ runner.arch }}${suffix}"
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
with:
name: pd-vm-cli-${{ runner.os }}-${{ runner.arch }}
path: rustscript/dist/*
- name: Upload pd-vm CLI release asset
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@3bb12739c298aeb8a4eeaf626c5b8d85266b0e65
with:
files: rustscript/dist/*
vscode-extension:
name: VS Code extension
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
- uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30
with:
targets: wasm32-unknown-unknown
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
node-version: '22'
- name: Build language service wasm
run: cargo build -p pd-vm-wasm --target wasm32-unknown-unknown --release
- name: Stage language service wasm
shell: bash
run: |
mkdir -p vscode-rustscript/wasm
cp target/wasm32-unknown-unknown/release/pd_vm_wasm.wasm vscode-rustscript/wasm/pd_vm_wasm.wasm
- name: Package VS Code extension
working-directory: vscode-rustscript
run: |
mkdir -p dist
npx --yes @vscode/vsce package --out dist/rustscript-vscode.vsix
- name: Verify VS Code grammar registration
run: python3 scripts/verify_vscode_extension.py --vsix vscode-rustscript/dist/rustscript-vscode.vsix
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
with:
name: rustscript-vscode-extension
path: vscode-rustscript/dist/*.vsix
- name: Upload VS Code extension release asset
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@3bb12739c298aeb8a4eeaf626c5b8d85266b0e65
with:
files: vscode-rustscript/dist/*.vsix