10
10
branches :
11
11
- master
12
12
repository_dispatch : # listening to rv32emu-prebuilt events
13
- types : [deploy_wasm ]
13
+ types : [deploy_user_wasm, deploy_system_wasm ]
14
14
15
15
jobs :
16
- wasm-deploy :
16
+ wasm-system- deploy :
17
17
if : github.event.pull_request.merged == true ||
18
18
github.event_name == 'workflow_dispatch' ||
19
- github.event_name == 'repository_dispatch'
19
+ github.event_name == 'repository_dispatch' && github.event.action == 'deploy_system_wasm'
20
+ runs-on : ubuntu-latest
21
+ steps :
22
+ - name : Check out the repo
23
+ uses : actions/checkout@v4
24
+ - name : install-dependencies
25
+ run : |
26
+ sudo apt-get update -q=2
27
+ sudo apt-get install -q=2 device-tree-compiler
28
+ - name : Verify if the JS or HTML files has been modified
29
+ id : changed-files
30
+ uses : tj-actions/changed-files@v46
31
+ with :
32
+ files : |
33
+ assets/wasm/html/system.html
34
+ assets/wasm/js/system-pre.js
35
+ src/em_runtime.c
36
+ # Files below may have a potential performance impact (reference from benchmark.yml)
37
+ src/devices/*.c
38
+ src/system.c
39
+ src/riscv.c
40
+ src/decode.c
41
+ src/emulate.c
42
+ src/rv32_template.c
43
+ src/rv32_constopt.c
44
+ - name : install emcc
45
+ if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
46
+ github.event_name == 'workflow_dispatch' ||
47
+ (github.event_name == 'repository_dispatch' && github.event.action == 'deploy_system_wasm') }}
48
+ run : |
49
+ git clone https://github.com/emscripten-core/emsdk -b 3.1.51
50
+ cd emsdk
51
+ ./emsdk install latest
52
+ ./emsdk activate latest
53
+ source ./emsdk_env.sh
54
+ echo "$PATH" >> $GITHUB_PATH
55
+ shell : bash
56
+ - name : fetch artifact
57
+ run : |
58
+ make artifact
59
+ # get from rv32emu-prebuilt
60
+ wget -O build/shareware_doom_iwad.zip "https://raw.githubusercontent.com/sysprog21/rv32emu-prebuilt/doom-artifact/shareware_doom_iwad.zip"
61
+ unzip -d build/ build/shareware_doom_iwad.zip
62
+ - name : build with emcc and move application files to /tmp
63
+ if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
64
+ github.event_name == 'workflow_dispatch' ||
65
+ (github.event_name == 'repository_dispatch' && github.event.action == 'deploy_system_wasm') }}
66
+ run : |
67
+ make CC=emcc ENABLE_SYSTEM=1 ENABLE_SDL=1 INITRD_SIZE=32 -j
68
+ mkdir /tmp/rv32emu-system-demo
69
+ mv assets/wasm/html/system.html /tmp/rv32emu-system-demo/index.html
70
+ mv assets/wasm/js/coi-serviceworker.min.js /tmp/rv32emu-system-demo
71
+ mv build/rv32emu.js /tmp/rv32emu-system-demo
72
+ mv build/rv32emu.wasm /tmp/rv32emu-system-demo
73
+ mv build/rv32emu.worker.js /tmp/rv32emu-system-demo
74
+ ls -al /tmp/rv32emu-system-demo
75
+ - name : Check out the rv32emu-system-demo repo
76
+ if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
77
+ github.event_name == 'workflow_dispatch' ||
78
+ (github.event_name == 'repository_dispatch' && github.event.action == 'deploy_system_wasm') }}
79
+ uses : actions/checkout@v4
80
+ with :
81
+ persist-credentials : false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal access token.
82
+ repository : sysprog21/rv32emu-demo
83
+ - name : Create local changes
84
+ if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
85
+ github.event_name == 'workflow_dispatch' ||
86
+ (github.event_name == 'repository_dispatch' && github.event.action == 'deploy_system_wasm') }}
87
+ run : |
88
+ mkdir -p system
89
+ mv /tmp/rv32emu-system-demo/index.html ./system
90
+ mv /tmp/rv32emu-system-demo/coi-serviceworker.min.js ./system
91
+ mv /tmp/rv32emu-system-demo/rv32emu.js ./system
92
+ mv /tmp/rv32emu-system-demo/rv32emu.wasm ./system
93
+ mv /tmp/rv32emu-system-demo/rv32emu.worker.js ./system
94
+ - name : Commit files
95
+ if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
96
+ github.event_name == 'workflow_dispatch' ||
97
+ (github.event_name == 'repository_dispatch' && github.event.action == 'deploy_system_wasm') }}
98
+ run : |
99
+ git config --local user.email "github-actions[bot]@users.noreply.github.com"
100
+ git config --local user.name "github-actions[bot]"
101
+ git add system/
102
+ git commit -m "Add changes to system emulation"
103
+ - name : Push changes
104
+ if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
105
+ github.event_name == 'workflow_dispatch' ||
106
+ (github.event_name == 'repository_dispatch' && github.event.action == 'deploy_system_wasm') }}
107
+ uses : ad-m/github-push-action@master
108
+ with :
109
+ repository : sysprog21/rv32emu-demo
110
+ github_token : ${{ secrets.RV32EMU_DEMO_TOKEN }}
111
+ branch : main
112
+ wasm-user-deploy :
113
+ needs : wasm-system-deploy # run jobs sequentially since two jobs operate on same reposity: rv32emu-demo
114
+ if : always() # ensures wasm-user-deploy runs regardless of the outcome or condition of wasm-system-deploy
20
115
runs-on : ubuntu-latest
21
116
steps :
22
117
- name : Check out the repo
@@ -26,10 +121,11 @@ jobs:
26
121
uses : tj-actions/changed-files@v46
27
122
with :
28
123
files : |
29
- assets/wasm/html/index .html
30
- assets/wasm/js/pre.js
124
+ assets/wasm/html/user .html
125
+ assets/wasm/js/user- pre.js
31
126
build/*.elf
32
127
tools/gen-elf-list-js.py
128
+ src/em_runtime.c
33
129
# Files below may have a potential performance impact (reference from benchmark.yml)
34
130
src/riscv.c
35
131
src/decode.c
@@ -39,12 +135,10 @@ jobs:
39
135
- name : install emcc
40
136
if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
41
137
github.event_name == 'workflow_dispatch' ||
42
- github.event_name == 'repository_dispatch' }}
138
+ ( github.event_name == 'repository_dispatch' && github.event.action == 'deploy_user_wasm') }}
43
139
run : |
44
- git clone https://github.com/emscripten-core/emsdk.git
140
+ git clone https://github.com/emscripten-core/emsdk -b 3.1.51
45
141
cd emsdk
46
- git pull
47
- git checkout 3.1.51
48
142
./emsdk install latest
49
143
./emsdk activate latest
50
144
source ./emsdk_env.sh
@@ -53,21 +147,17 @@ jobs:
53
147
- name : fetch artifact
54
148
run : |
55
149
make artifact
56
- # Hack Cloudflare 403 Forbidden on GitHub Runner for Doom artifact download
57
- wget --header="User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:122.0) Gecko/20100101 Firefox/122.0" \
58
- --header="Referer: https://www.doomworld.com/" \
59
- --header="Accept-Language: en-US,en;q=0.9" \
60
- -O build/shareware_doom_iwad.zip \
61
- "https://www.doomworld.com/3ddownloads/ports/shareware_doom_iwad.zip"
150
+ # get from rv32emu-prebuilt
151
+ wget -O build/shareware_doom_iwad.zip "https://raw.githubusercontent.com/sysprog21/rv32emu-prebuilt/doom-artifact/shareware_doom_iwad.zip"
62
152
unzip -d build/ build/shareware_doom_iwad.zip
63
153
- name : build with emcc and move application files to /tmp
64
154
if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
65
155
github.event_name == 'workflow_dispatch' ||
66
- github.event_name == 'repository_dispatch' }}
156
+ ( github.event_name == 'repository_dispatch' && github.event.action == 'deploy_user_wasm') }}
67
157
run : |
68
158
make CC=emcc ENABLE_SDL=1
69
159
mkdir /tmp/rv32emu-demo
70
- mv assets/wasm/html/index .html /tmp/rv32emu-demo
160
+ mv assets/wasm/html/user .html /tmp/rv32emu-demo/index.html
71
161
mv assets/wasm/js/coi-serviceworker.min.js /tmp/rv32emu-demo
72
162
mv build/elf_list.js /tmp/rv32emu-demo
73
163
mv build/rv32emu.js /tmp/rv32emu-demo
@@ -77,15 +167,15 @@ jobs:
77
167
- name : Check out the rv32emu-demo repo
78
168
if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
79
169
github.event_name == 'workflow_dispatch' ||
80
- github.event_name == 'repository_dispatch' }}
170
+ ( github.event_name == 'repository_dispatch' && github.event.action == 'deploy_user_wasm') }}
81
171
uses : actions/checkout@v4
82
172
with :
83
173
persist-credentials : false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal access token.
84
174
repository : sysprog21/rv32emu-demo
85
175
- name : Create local changes
86
176
if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
87
177
github.event_name == 'workflow_dispatch' ||
88
- github.event_name == 'repository_dispatch' }}
178
+ ( github.event_name == 'repository_dispatch' && github.event.action == 'deploy_user_wasm') }}
89
179
run : |
90
180
mv /tmp/rv32emu-demo/index.html .
91
181
mv /tmp/rv32emu-demo/coi-serviceworker.min.js .
@@ -96,16 +186,16 @@ jobs:
96
186
- name : Commit files
97
187
if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
98
188
github.event_name == 'workflow_dispatch' ||
99
- github.event_name == 'repository_dispatch' }}
189
+ ( github.event_name == 'repository_dispatch' && github.event.action == 'deploy_user_wasm') }}
100
190
run : |
101
191
git config --local user.email "github-actions[bot]@users.noreply.github.com"
102
192
git config --local user.name "github-actions[bot]"
103
193
git add --all
104
- git commit -m "Add changes"
194
+ git commit -m "Add changes to user emulation "
105
195
- name : Push changes
106
196
if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
107
197
github.event_name == 'workflow_dispatch' ||
108
- github.event_name == 'repository_dispatch' }}
198
+ ( github.event_name == 'repository_dispatch' && github.event.action == 'deploy_user_wasm') }}
109
199
uses : ad-m/github-push-action@master
110
200
with :
111
201
repository : sysprog21/rv32emu-demo
0 commit comments