1010 branches :
1111 - master
1212 repository_dispatch : # listening to rv32emu-prebuilt events
13- types : [deploy_wasm ]
13+ types : [deploy_user_wasm, deploy_system_wasm ]
1414
1515jobs :
16- wasm-deploy :
16+ wasm-system- deploy :
1717 if : github.event.pull_request.merged == true ||
1818 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
20115 runs-on : ubuntu-latest
21116 steps :
22117 - name : Check out the repo
@@ -26,10 +121,11 @@ jobs:
26121 uses : tj-actions/changed-files@v46
27122 with :
28123 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
31126 build/*.elf
32127 tools/gen-elf-list-js.py
128+ src/em_runtime.c
33129 # Files below may have a potential performance impact (reference from benchmark.yml)
34130 src/riscv.c
35131 src/decode.c
@@ -39,12 +135,10 @@ jobs:
39135 - name : install emcc
40136 if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
41137 github.event_name == 'workflow_dispatch' ||
42- github.event_name == 'repository_dispatch' }}
138+ ( github.event_name == 'repository_dispatch' && github.event.action == 'deploy_user_wasm') }}
43139 run : |
44- git clone https://github.com/emscripten-core/emsdk.git
140+ git clone https://github.com/emscripten-core/emsdk -b 3.1.51
45141 cd emsdk
46- git pull
47- git checkout 3.1.51
48142 ./emsdk install latest
49143 ./emsdk activate latest
50144 source ./emsdk_env.sh
@@ -53,21 +147,17 @@ jobs:
53147 - name : fetch artifact
54148 run : |
55149 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"
62152 unzip -d build/ build/shareware_doom_iwad.zip
63153 - name : build with emcc and move application files to /tmp
64154 if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
65155 github.event_name == 'workflow_dispatch' ||
66- github.event_name == 'repository_dispatch' }}
156+ ( github.event_name == 'repository_dispatch' && github.event.action == 'deploy_user_wasm') }}
67157 run : |
68158 make CC=emcc ENABLE_SDL=1
69159 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
71161 mv assets/wasm/js/coi-serviceworker.min.js /tmp/rv32emu-demo
72162 mv build/elf_list.js /tmp/rv32emu-demo
73163 mv build/rv32emu.js /tmp/rv32emu-demo
@@ -77,15 +167,15 @@ jobs:
77167 - name : Check out the rv32emu-demo repo
78168 if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
79169 github.event_name == 'workflow_dispatch' ||
80- github.event_name == 'repository_dispatch' }}
170+ ( github.event_name == 'repository_dispatch' && github.event.action == 'deploy_user_wasm') }}
81171 uses : actions/checkout@v4
82172 with :
83173 persist-credentials : false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal access token.
84174 repository : sysprog21/rv32emu-demo
85175 - name : Create local changes
86176 if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
87177 github.event_name == 'workflow_dispatch' ||
88- github.event_name == 'repository_dispatch' }}
178+ ( github.event_name == 'repository_dispatch' && github.event.action == 'deploy_user_wasm') }}
89179 run : |
90180 mv /tmp/rv32emu-demo/index.html .
91181 mv /tmp/rv32emu-demo/coi-serviceworker.min.js .
@@ -96,16 +186,16 @@ jobs:
96186 - name : Commit files
97187 if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
98188 github.event_name == 'workflow_dispatch' ||
99- github.event_name == 'repository_dispatch' }}
189+ ( github.event_name == 'repository_dispatch' && github.event.action == 'deploy_user_wasm') }}
100190 run : |
101191 git config --local user.email "github-actions[bot]@users.noreply.github.com"
102192 git config --local user.name "github-actions[bot]"
103193 git add --all
104- git commit -m "Add changes"
194+ git commit -m "Add changes to user emulation "
105195 - name : Push changes
106196 if : ${{ steps.changed-files.outputs.any_modified == 'true' ||
107197 github.event_name == 'workflow_dispatch' ||
108- github.event_name == 'repository_dispatch' }}
198+ ( github.event_name == 'repository_dispatch' && github.event.action == 'deploy_user_wasm') }}
109199 uses : ad-m/github-push-action@master
110200 with :
111201 repository : sysprog21/rv32emu-demo
0 commit comments