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
+ # Files below may have a potential performance impact (reference from benchmark.yml)
36
+ src/devices/*.c
37
+ src/system.c
38
+ src/riscv.c
39
+ src/decode.c
40
+ src/emulate.c
41
+ src/rv32_template.c
42
+ src/rv32_constopt.c
43
+ - name : install emcc
44
+ if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
45
+ github.event_name == 'workflow_dispatch' ||
46
+ (github.event_name == 'repository_dispatch' && github.event.action == 'deploy_system_wasm') }}
47
+ run : |
48
+ git clone https://github.com/emscripten-core/emsdk -b 3.1.51
49
+ cd emsdk
50
+ ./emsdk install latest
51
+ ./emsdk activate latest
52
+ source ./emsdk_env.sh
53
+ echo "$PATH" >> $GITHUB_PATH
54
+ shell : bash
55
+ - name : fetch artifact
56
+ run : |
57
+ make artifact
58
+ # get from rv32emu-prebuilt
59
+ wget -O build/shareware_doom_iwad.zip "https://raw.githubusercontent.com/sysprog21/rv32emu-prebuilt/doom-artifact/shareware_doom_iwad.zip"
60
+ unzip -d build/ build/shareware_doom_iwad.zip
61
+ - name : build with emcc and move application files to /tmp
62
+ if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
63
+ github.event_name == 'workflow_dispatch' ||
64
+ (github.event_name == 'repository_dispatch' && github.event.action == 'deploy_system_wasm') }}
65
+ run : |
66
+ make CC=emcc ENABLE_SYSTEM=1 ENABLE_SDL=1 INITRD_SIZE=32 -j
67
+ mkdir /tmp/rv32emu-system-demo
68
+ mv assets/wasm/html/system.html /tmp/rv32emu-system-demo/index.html
69
+ mv assets/wasm/js/coi-serviceworker.min.js /tmp/rv32emu-system-demo
70
+ mv build/rv32emu.js /tmp/rv32emu-system-demo
71
+ mv build/rv32emu.wasm /tmp/rv32emu-system-demo
72
+ mv build/rv32emu.worker.js /tmp/rv32emu-system-demo
73
+ ls -al /tmp/rv32emu-system-demo
74
+ - name : Check out the rv32emu-system-demo repo
75
+ if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
76
+ github.event_name == 'workflow_dispatch' ||
77
+ (github.event_name == 'repository_dispatch' && github.event.action == 'deploy_system_wasm') }}
78
+ uses : actions/checkout@v4
79
+ with :
80
+ persist-credentials : false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal access token.
81
+ repository : sysprog21/rv32emu-demo
82
+ - name : Create local changes
83
+ if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
84
+ github.event_name == 'workflow_dispatch' ||
85
+ (github.event_name == 'repository_dispatch' && github.event.action == 'deploy_system_wasm') }}
86
+ run : |
87
+ mkdir -p system
88
+ mv /tmp/rv32emu-system-demo/index.html ./system
89
+ mv /tmp/rv32emu-system-demo/coi-serviceworker.min.js ./system
90
+ mv /tmp/rv32emu-system-demo/rv32emu.js ./system
91
+ mv /tmp/rv32emu-system-demo/rv32emu.wasm ./system
92
+ mv /tmp/rv32emu-system-demo/rv32emu.worker.js ./system
93
+ - name : Commit files
94
+ if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
95
+ github.event_name == 'workflow_dispatch' ||
96
+ (github.event_name == 'repository_dispatch' && github.event.action == 'deploy_system_wasm') }}
97
+ run : |
98
+ git config --local user.email "github-actions[bot]@users.noreply.github.com"
99
+ git config --local user.name "github-actions[bot]"
100
+ git add system/
101
+ git commit -m "Add changes to system emulation"
102
+ - name : Push changes
103
+ if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
104
+ github.event_name == 'workflow_dispatch' ||
105
+ (github.event_name == 'repository_dispatch' && github.event.action == 'deploy_system_wasm') }}
106
+ uses : ad-m/github-push-action@master
107
+ with :
108
+ repository : sysprog21/rv32emu-demo
109
+ github_token : ${{ secrets.RV32EMU_DEMO_TOKEN }}
110
+ branch : main
111
+ wasm-user-deploy :
112
+ needs : wasm-system-deploy # run jobs sequentially since two jobs operate on same reposity: rv32emu-demo
113
+ if : always() # ensures wasm-user-deploy runs regardless of the outcome or condition of wasm-system-deploy
20
114
runs-on : ubuntu-latest
21
115
steps :
22
116
- name : Check out the repo
26
120
uses : tj-actions/changed-files@v46
27
121
with :
28
122
files : |
29
- assets/wasm/html/index .html
30
- assets/wasm/js/pre.js
123
+ assets/wasm/html/user .html
124
+ assets/wasm/js/user- pre.js
31
125
build/*.elf
32
126
tools/gen-elf-list-js.py
33
127
# Files below may have a potential performance impact (reference from benchmark.yml)
@@ -39,12 +133,10 @@ jobs:
39
133
- name : install emcc
40
134
if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
41
135
github.event_name == 'workflow_dispatch' ||
42
- github.event_name == 'repository_dispatch' }}
136
+ ( github.event_name == 'repository_dispatch' && github.event.action == 'deploy_user_wasm') }}
43
137
run : |
44
- git clone https://github.com/emscripten-core/emsdk.git
138
+ git clone https://github.com/emscripten-core/emsdk -b 3.1.51
45
139
cd emsdk
46
- git pull
47
- git checkout 3.1.51
48
140
./emsdk install latest
49
141
./emsdk activate latest
50
142
source ./emsdk_env.sh
@@ -53,21 +145,17 @@ jobs:
53
145
- name : fetch artifact
54
146
run : |
55
147
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"
148
+ # get from rv32emu-prebuilt
149
+ wget -O build/shareware_doom_iwad.zip "https://raw.githubusercontent.com/sysprog21/rv32emu-prebuilt/doom-artifact/shareware_doom_iwad.zip"
62
150
unzip -d build/ build/shareware_doom_iwad.zip
63
151
- name : build with emcc and move application files to /tmp
64
152
if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
65
153
github.event_name == 'workflow_dispatch' ||
66
- github.event_name == 'repository_dispatch' }}
154
+ ( github.event_name == 'repository_dispatch' && github.event.action == 'deploy_user_wasm') }}
67
155
run : |
68
156
make CC=emcc ENABLE_SDL=1
69
157
mkdir /tmp/rv32emu-demo
70
- mv assets/wasm/html/index .html /tmp/rv32emu-demo
158
+ mv assets/wasm/html/user .html /tmp/rv32emu-demo/index.html
71
159
mv assets/wasm/js/coi-serviceworker.min.js /tmp/rv32emu-demo
72
160
mv build/elf_list.js /tmp/rv32emu-demo
73
161
mv build/rv32emu.js /tmp/rv32emu-demo
@@ -77,15 +165,15 @@ jobs:
77
165
- name : Check out the rv32emu-demo repo
78
166
if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
79
167
github.event_name == 'workflow_dispatch' ||
80
- github.event_name == 'repository_dispatch' }}
168
+ ( github.event_name == 'repository_dispatch' && github.event.action == 'deploy_user_wasm') }}
81
169
uses : actions/checkout@v4
82
170
with :
83
171
persist-credentials : false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal access token.
84
172
repository : sysprog21/rv32emu-demo
85
173
- name : Create local changes
86
174
if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
87
175
github.event_name == 'workflow_dispatch' ||
88
- github.event_name == 'repository_dispatch' }}
176
+ ( github.event_name == 'repository_dispatch' && github.event.action == 'deploy_user_wasm') }}
89
177
run : |
90
178
mv /tmp/rv32emu-demo/index.html .
91
179
mv /tmp/rv32emu-demo/coi-serviceworker.min.js .
@@ -96,16 +184,16 @@ jobs:
96
184
- name : Commit files
97
185
if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
98
186
github.event_name == 'workflow_dispatch' ||
99
- github.event_name == 'repository_dispatch' }}
187
+ ( github.event_name == 'repository_dispatch' && github.event.action == 'deploy_user_wasm') }}
100
188
run : |
101
189
git config --local user.email "github-actions[bot]@users.noreply.github.com"
102
190
git config --local user.name "github-actions[bot]"
103
191
git add --all
104
- git commit -m "Add changes"
192
+ git commit -m "Add changes to user emulation "
105
193
- name : Push changes
106
194
if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
107
195
github.event_name == 'workflow_dispatch' ||
108
- github.event_name == 'repository_dispatch' }}
196
+ ( github.event_name == 'repository_dispatch' && github.event.action == 'deploy_user_wasm') }}
109
197
uses : ad-m/github-push-action@master
110
198
with :
111
199
repository : sysprog21/rv32emu-demo
0 commit comments