Skip to content

Commit 728ce93

Browse files
committed
[#90242] CI: add Windows runner
1 parent 94d30c4 commit 728ce93

File tree

1 file changed

+174
-21
lines changed

1 file changed

+174
-21
lines changed

.github/workflows/test.yml

Lines changed: 174 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,12 @@ env:
1919
jobs:
2020
build-zephyr-binaries:
2121
name: Build Zephyr Binaries
22-
runs-on: ubuntu-22.04
22+
strategy:
23+
matrix:
24+
os:
25+
- ubuntu-22.04
26+
- windows-2025
27+
runs-on: ${{ matrix.os }}
2328
steps:
2429
- name: Checkout
2530
uses: actions/checkout@v4
@@ -30,9 +35,18 @@ jobs:
3035
python-version: '3.12'
3136

3237
- name: Install Dependencies
38+
shell: bash
3339
run: |
34-
sudo apt-get -qqy update
35-
sudo apt-get install -qqy cmake ninja-build
40+
if [ "${{ runner.os }}" = "Linux" ]; then
41+
sudo apt-get -qqy update
42+
sudo apt-get install -qqy cmake ninja-build
43+
elif [ "${{ runner.os }}" = "Windows" ]; then
44+
choco feature enable -n allowGlobalConfirmation
45+
choco install ninja cmake
46+
else
47+
echo "Unknown runner!"
48+
exit 1
49+
fi
3650
3751
- name: Setup Zephyr project
3852
uses: zephyrproject-rtos/action-zephyr-setup@v1
@@ -41,6 +55,7 @@ jobs:
4155
toolchains: arm-zephyr-eabi
4256

4357
- name: Build Zephyr
58+
shell: bash
4459
run: |
4560
mkdir -p artifacts/zephyr_binaries
4661
for example in examples/*/zephyr; do
@@ -52,87 +67,225 @@ jobs:
5267
- name: Upload Zephyr binaries
5368
uses: actions/upload-artifact@v4
5469
with:
55-
name: zephyr_binaries-${{ github.run_id }}
70+
name: zephyr_binaries-${{ runner.os }}-${{ github.run_id }}
5671
path: artifacts/zephyr_binaries
5772

73+
build-systemc:
74+
name: Build SystemC
75+
strategy:
76+
matrix:
77+
os:
78+
- ubuntu-22.04
79+
- windows-2025
80+
runs-on: ${{ matrix.os }}
81+
steps:
82+
- uses: actions/checkout@v4
83+
with:
84+
submodules: true
85+
86+
- name: Install dependencies
87+
shell: bash
88+
run: |
89+
if [ "${{ runner.os }}" = "Linux" ]; then
90+
sudo apt-get -qqy update
91+
sudo apt-get install -qqy cmake
92+
elif [ "${{ runner.os }}" = "Windows" ]; then
93+
choco feature enable -n allowGlobalConfirmation
94+
choco install cmake
95+
else
96+
echo "Unknown runner!"
97+
exit 1
98+
fi
99+
100+
- name: Set CMake generator
101+
if: runner.os == 'Windows'
102+
shell: bash
103+
run: |
104+
export CMAKE_GENERATOR="Visual Studio 17 2022"
105+
106+
- name: Build library
107+
shell: bash
108+
run: |
109+
mkdir -p build
110+
pushd build
111+
cmake ../systemc -DBUILD_SHARED_LIBS=OFF \
112+
-DCMAKE_CXX_STANDARD=14 \
113+
-DCMAKE_POLICY_VERSION_MINIMUM="3.5"
114+
115+
cmake --build . -j $(nproc)
116+
popd
117+
118+
- name: Upload library (Linux)
119+
if: runner.os == 'Linux'
120+
uses: actions/upload-artifact@v4
121+
with:
122+
name: ${{ runner.os }}-${{ github.run_id }}-libsystemc.a
123+
path: build/src/libsystemc.a
124+
125+
- name: Upload library (Windows)
126+
if: runner.os == 'Windows'
127+
uses: actions/upload-artifact@v4
128+
with:
129+
name: ${{ runner.os }}-${{ github.run_id }}-libsystemc.lib
130+
path: build/src/Debug/systemc.lib
131+
58132
build-examples:
59133
name: Build Examples
60-
runs-on: ubuntu-22.04
134+
needs: build-systemc
135+
strategy:
136+
matrix:
137+
os:
138+
- ubuntu-22.04
139+
- windows-2025
140+
runs-on: ${{ matrix.os }}
61141
steps:
62142
- uses: actions/checkout@v4
143+
with:
144+
submodules: true
145+
146+
- name: Download SystemC library (Linux)
147+
if: runner.os == 'Linux'
148+
uses: actions/download-artifact@v4
149+
with:
150+
name: ${{ runner.os }}-${{ github.run_id }}-libsystemc.a
151+
path: artifacts/systemc
152+
153+
- name: Download SystemC library (Windows)
154+
if: runner.os == 'Windows'
155+
uses: actions/download-artifact@v4
156+
with:
157+
name: ${{ runner.os }}-${{ github.run_id }}-libsystemc.lib
158+
path: artifacts/systemc
63159

64160
- name: Install dependencies
161+
shell: bash
65162
run: |
66-
sudo apt-get -qqy update
67-
sudo apt-get install -qqy libsystemc libsystemc-dev clang cmake dotnet-sdk-8.0
163+
if [ "${{ runner.os }}" = "Linux" ]; then
164+
sudo apt-get -qqy update
165+
sudo apt-get install -qqy cmake
166+
elif [ "${{ runner.os }}" = "Windows" ]; then
167+
choco feature enable -n allowGlobalConfirmation
168+
choco install cmake
169+
else
170+
echo "Unknown runner!"
171+
exit 1
172+
fi
68173
69174
- name: Download and build Renode
70175
uses: antmicro/renode-test-action@v5.0.0
71176
with:
72177
renode-repository: ${{ inputs.renode_gitrepo || 'https://github.com/renode/renode' }}
73-
renode-revision: ${{ inputs.renode_gitrev || 'master' }}
178+
# renode-revision: ${{ inputs.renode_gitrev || 'master' }}
179+
renode-revision: 90242-add-windows
180+
181+
- name: Set CMake generator
182+
if: runner.os == 'Windows'
183+
shell: bash
184+
run: |
185+
export CMAKE_GENERATOR="Visual Studio 17 2022"
74186
75187
- name: Build examples
188+
shell: bash
76189
run: |
77190
mkdir -p build
78191
pushd build
79-
cmake ..
80-
make CPPSTD=c++14 -j $(nproc)
192+
cmake .. -DUSER_SYSTEMC_INCLUDE_DIR=$(pwd)/../systemc/src \
193+
-DUSER_SYSTEMC_LIB_DIR=$(pwd)/../artifacts/systemc \
194+
-DCMAKE_CXX_STANDARD=14
195+
196+
cmake --build . -j $(nproc)
81197
popd
82198
83199
mkdir -p artifacts/example_binaries artifacts/test_binaries
200+
201+
if [ "${{ runner.os }}" = "Linux" ]; then
202+
bin_path="bin"
203+
elif [ "${{ runner.os }}" = "Windows" ]; then
204+
bin_path="bin/Debug"
205+
else
206+
echo "Unknown runner!"
207+
exit 1
208+
fi
209+
210+
echo "---"
211+
tree examples/
212+
echo "---"
213+
84214
for example in examples/*/; do
85215
example_name="$(basename $example)"
86-
cp examples/$example_name/bin/$example_name artifacts/example_binaries/x64-systemc--$example_name.elf
216+
cp examples/$example_name/$bin_path/$example_name artifacts/example_binaries/x64-systemc--$example_name.elf
87217
done
88218
for test in tests/*/; do
89219
test_name="$(basename $test)"
90-
cp tests/$test_name/bin/$test_name artifacts/test_binaries/x64-systemc--$test_name.elf
220+
cp tests/$test_name/$bin_path/$test_name artifacts/test_binaries/x64-systemc--$test_name.elf
91221
done
92222
93223
- name: Upload Example Binaries
94224
uses: actions/upload-artifact@v4
95225
with:
96-
name: example_binaries-${{ github.run_id }}
226+
name: example_binaries-${{ runner.os }}-${{ github.run_id }}
97227
path: artifacts/example_binaries
98228

99229
- name: Upload Test Binaries
100230
uses: actions/upload-artifact@v4
101231
with:
102-
name: test_binaries-${{ github.run_id }}
232+
name: test_binaries-${{ runner.os }}-${{ github.run_id }}
103233
path: artifacts/test_binaries
104234

105235
test-examples:
106236
name: Test Examples
107-
runs-on: ubuntu-22.04
108237
needs: build-examples
238+
strategy:
239+
matrix:
240+
os:
241+
- ubuntu-22.04
242+
- windows-2025
243+
runs-on: ${{ matrix.os }}
109244
steps:
110245
- uses: actions/checkout@v4
111246

112247
- name: Install dependencies
113248
run: |
114249
sudo apt-get -qqy update
115-
sudo apt-get install -qqy libsystemc libsystemc-dev dotnet-sdk-8.0
250+
sudo apt-get install -qqy libsystemc libsystemc-dev
251+
252+
- name: Download example binaries (Linux)
253+
if: runner.os == 'Linux'
254+
uses: actions/download-artifact@v4
255+
with:
256+
name: example_binaries-${{ runner.os }}-${{ github.run_id }}
257+
path: artifacts/example_binaries
258+
259+
- name: Download test binaries (Linux)
260+
if: runner.os == 'Linux'
261+
uses: actions/download-artifact@v4
262+
with:
263+
name: test_binaries-${{ runner.os }}-${{ github.run_id }}
264+
path: artifacts/test_binaries
116265

117-
- name: Download example binaries
266+
- name: Download example binaries (Windows)
267+
if: runner.os == 'Windows'
118268
uses: actions/download-artifact@v4
119269
with:
120-
name: example_binaries-${{ github.run_id }}
270+
name: example_binaries-${{ runner.os }}-${{ github.run_id }}
121271
path: artifacts/example_binaries
122272

123-
- name: Download test binaries
273+
- name: Download test binaries (Windows)
274+
if: runner.os == 'Windows'
124275
uses: actions/download-artifact@v4
125276
with:
126-
name: test_binaries-${{ github.run_id }}
277+
name: test_binaries-${{ runner.os }}-${{ github.run_id }}
127278
path: artifacts/test_binaries
128279

129280
- name: Download and build Renode
130281
uses: antmicro/renode-test-action@v5.0.0
131282
with:
132283
renode-repository: ${{ inputs.renode_gitrepo || 'https://github.com/renode/renode' }}
133-
renode-revision: ${{ inputs.renode_gitrev || 'master' }}
284+
# renode-revision: ${{ inputs.renode_gitrev || 'master' }}
285+
renode-revision: 90242-add-windows
134286

135287
- name: Run tests
288+
shell: bash
136289
run: |
137290
for example in artifacts/example_binaries/*; do
138291
example_name="$(basename $example | sed -e 's/x64-systemc--//' -e 's/.elf//')"

0 commit comments

Comments
 (0)