|
6 | 6 | pull_request:
|
7 | 7 | branches: main
|
8 | 8 |
|
9 |
| -env: |
10 |
| - WASI_VERSION: 12 |
11 |
| - WASI_VERSION_FULL: "12.0" |
12 |
| - WABT_VERSION: "1.0.24" |
13 |
| - EMCC_VERSION: "1.40.1-fastcomp" |
14 |
| - |
15 | 9 | jobs:
|
16 | 10 | build:
|
17 |
| - runs-on: ubuntu-18.04 |
| 11 | + runs-on: ubuntu-latest |
| 12 | + env: |
| 13 | + WASI_SDK_VERSION: "21" |
| 14 | + WASI_SDK_PATH: /opt/wasi-sdk |
| 15 | + WABT_VERSION: "1.0.34" |
| 16 | + WABT_PATH: /opt/wabt |
| 17 | + BINARYEN_VERSION: "117" |
| 18 | + BINARYEN_PATH: /opt/binaryen |
18 | 19 | steps:
|
19 | 20 | - name: Checkout
|
20 |
| - uses: actions/checkout@v2 |
21 |
| - |
22 |
| - - name: Prepare |
23 |
| - id: preparation |
24 |
| - run: | |
25 |
| - export PWD=$(pwd); |
26 |
| - echo "::set-output name=PROJ_ROOT::$PWD"; |
| 21 | + uses: actions/checkout@v4 |
| 22 | + - name: Setup Node |
| 23 | + uses: actions/setup-node@v4 |
| 24 | + with: |
| 25 | + cache: 'npm' |
27 | 26 |
|
28 | 27 | - name: Install
|
29 |
| - run: npm install |
| 28 | + run: npm ci |
30 | 29 |
|
31 |
| - - name: Install wasi-sdk |
32 |
| - env: |
33 |
| - PROJ_ROOT: ${{ steps.preparation.outputs.PROJ_ROOT }} |
| 30 | + - name: "Restore WASI SDK" |
| 31 | + id: cache-wasi-sdk |
| 32 | + uses: actions/cache@v4 |
| 33 | + with: |
| 34 | + path: ${{ env.WASI_SDK_PATH }} |
| 35 | + key: ${{ runner.os }}-wasi-sdk-${{ env.WASI_SDK_VERSION }} |
| 36 | + - name: "Install WASI SDK" |
| 37 | + if: steps.cache-wasi-sdk.outputs.cache-hit != 'true' |
34 | 38 | run: |
|
35 |
| - cd $PROJ_ROOT; |
36 |
| - cd ../; |
37 |
| - export WASI_OS="linux" |
38 |
| - curl -sL https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_VERSION}/wasi-sdk-${WASI_VERSION_FULL}-${WASI_OS}.tar.gz -O |
39 |
| - # check if package downloaded |
40 |
| - ls -la |
41 |
| - tar xvf wasi-sdk-${WASI_VERSION_FULL}-${WASI_OS}.tar.gz |
42 |
| - # print clang version |
43 |
| - ./wasi-sdk-${WASI_VERSION_FULL}/bin/clang --version |
44 |
| - - name: Install wabt |
45 |
| - env: |
46 |
| - PROJ_ROOT: ${{ steps.preparation.outputs.PROJ_ROOT }} |
| 39 | + mkdir ${{ env.WASI_SDK_PATH }} && \ |
| 40 | + curl -s -S --location https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${{ env.WASI_SDK_VERSION }}/wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-linux.tar.gz | \ |
| 41 | + tar --strip-components 1 --directory ${{ env.WASI_SDK_PATH }} --extract --gunzip |
| 42 | + - name: "Restore WABT" |
| 43 | + id: cache-wabt |
| 44 | + uses: actions/cache@v4 |
| 45 | + with: |
| 46 | + path: ${{ env.WABT_PATH }} |
| 47 | + key: ${{ runner.os }}-wabt-${{ env.WABT_VERSION }} |
| 48 | + - name: "Install WABT" |
| 49 | + if: steps.cache-wabt.outputs.cache-hit != 'true' |
47 | 50 | run: |
|
48 |
| - cd $PROJ_ROOT; |
49 |
| - cd ../; |
50 |
| - if [[ "$RUNNER_OS" == "Linux" ]]; then |
51 |
| - export WABT_OS="ubuntu"; |
52 |
| - fi |
53 |
| - if [[ "$RUNNER_OS" == "macOS" ]]; then |
54 |
| - export WABT_OS="macos"; |
55 |
| - fi |
56 |
| - if [[ "$RUNNER_OS" == "Windows" ]]; then |
57 |
| - export WABT_OS="windows"; |
58 |
| - fi |
59 |
| - curl -sL https://github.com/WebAssembly/wabt/releases/download/${WABT_VERSION}/wabt-${WABT_VERSION}-${WABT_OS}.tar.gz -O |
60 |
| - # check if package downloaded |
61 |
| - ls -la |
62 |
| - tar xvf wabt-${WABT_VERSION}-${WABT_OS}.tar.gz |
63 |
| - # check if wabt binaries installed |
64 |
| - ls -la ./wabt-${WABT_VERSION}/bin/ |
| 51 | + mkdir ${{ env.WABT_PATH }} && \ |
| 52 | + curl -s -S --location https://github.com/WebAssembly/wabt/releases/download/${{ env.WABT_VERSION }}/wabt-${{ env.WABT_VERSION }}-ubuntu.tar.gz | \ |
| 53 | + tar --strip-components 1 --directory ${{ env.WABT_PATH }} --extract --gunzip |
| 54 | + - name: "Restore Binaryen" |
| 55 | + id: cache-binaryen |
| 56 | + uses: actions/cache@v4 |
| 57 | + with: |
| 58 | + path: ${{ env.BINARYEN_PATH }} |
| 59 | + key: ${{ runner.os }}-binaryen-${{ env.BINARYEN_VERSION }} |
| 60 | + - name: "Install Binaryen" |
| 61 | + if: steps.cache-binaryen.outputs.cache-hit != 'true' |
| 62 | + run: | |
| 63 | + mkdir ${{ env.BINARYEN_PATH }} && \ |
| 64 | + curl -s -S --location https://github.com/WebAssembly/binaryen/releases/download/version_${{ env.BINARYEN_VERSION }}/binaryen-version_${{ env.BINARYEN_VERSION }}-x86_64-linux.tar.gz | \ |
| 65 | + tar --strip-components 1 --directory ${{ env.WABT_PATH }} --extract --gunzip |
65 | 66 | - name: Compile to Wasm & Test Wasm
|
66 |
| - env: |
67 |
| - PROJ_ROOT: ${{ steps.preparation.outputs.PROJ_ROOT }} |
68 | 67 | run: |
|
69 |
| - cd $PROJ_ROOT; |
70 | 68 | rm lib/lexer.wasm;
|
71 | 69 | npm run build-wasm;
|
72 | 70 | npm run build;
|
73 | 71 | # test
|
74 | 72 | npm run test;
|
75 | 73 | - name: Benchmark Wasm
|
76 |
| - env: |
77 |
| - PROJ_ROOT: ${{ steps.preparation.outputs.PROJ_ROOT }} |
78 |
| - run: | |
79 |
| - cd $PROJ_ROOT; |
80 |
| - npm run bench; |
| 74 | + run: npm run bench; |
0 commit comments