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