Skip to content

feat: allow custom weval bin #1414

feat: allow custom weval bin

feat: allow custom weval bin #1414

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
defaults:
run:
shell: bash
jobs:
build:
name: Jco Build
runs-on: 'ubuntu-latest'
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v3
with:
node-version: 'latest'
- name: Install Rust
run: rustup update stable --no-self-update && rustup default stable
- name: Install wasm32-unknown-unknown target
run: rustup target add wasm32-unknown-unknown
- name: Install wasm32-wasip1 target
run: rustup target add wasm32-wasip1
- name: Install NPM packages
run: npm ci
- name: Build
run: npm run build
- name: Upload Jco Build
uses: actions/upload-artifact@v4
with:
name: jco-build
path: obj
test-jco:
name: Jco Test Suite
strategy:
matrix:
os: [
ubuntu-latest,
windows-latest,
macos-latest
]
node: [18.x, 20.x, latest]
weval-version:
- 'v0.3.2'
include:
- os: windows-latest
weval-bin-path: .weval-bin/weval.exe
exclude:
- os: macos-latest
node: 20.x
- os: macos-latest
node: 18.x
- os: windows-latest
node: latest
- os: windows-latest
node: 18.x
runs-on: ${{ matrix.os }}
needs: [build]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
# Use cached weval bin if present
- name: Cache weval bin
id: cache-weval-bin
uses: actions/cache@v4
with:
path: .weval-bin
key: weval-bin-${{ matrix.weval-version }}-${{ matrix.os }}
# (no cached weval bin) download weval release
- uses: jaxxstorm/action-install-gh-release@7f2440a9a41f74262d8f6433da138c799799a969 # v1.13.0
if: ${{ steps.cache-weval-bin.outputs.cache-hit != 'true' && matrix.os != 'windows-latest' }}
with:
repo: bytecodealliance/weval
tag: ${{ matrix.weval-version }}
extension: "\\.xz"
rename-to: weval.tar.xz
- uses: jaxxstorm/action-install-gh-release@7f2440a9a41f74262d8f6433da138c799799a969 # v1.13.0
if: ${{ steps.cache-weval-bin.outputs.cache-hit != 'true' && matrix.os == 'windows-latest' }}
with:
repo: bytecodealliance/weval
tag: ${{ matrix.weval-version }}
rename-to: weval.zip
# (no cached weval bin) unzip weval release
- if: ${{ steps.cache-weval-bin.outputs.cache-hit != 'true' && matrix.os == 'ubuntu-latest' }}
run: |
tar -xvJf /opt/hostedtoolcache/bytecodealliance/weval/v0.3.2/linux-x64/weval.tar.xz
mkdir .weval-bin
mv weval-${{matrix.weval-version}}-x86_64-linux/weval .weval-bin
- if: ${{ steps.cache-weval-bin.outputs.cache-hit != 'true' && matrix.os == 'windows-latest' }}
run: |
unzip weval.zip
mkdir .weval-bin
mv weval-${{matrix.weval-version}}-x86_64-windows/weval.exe .weval-bin
- if: ${{ steps.cache-weval-bin.outputs.cache-hit != 'true' && matrix.os == 'macos-latest' }}
run: |
ls -la /opt/hostedtoolcache/bytecodealliance/
ls -la /opt/hostedtoolcache/bytecodealliance/weval
ls -la /opt/hostedtoolcache/bytecodealliance/weval/v0.3.2/
mkdir .weval-bin
tar -xvJf /opt/hostedtoolcache/bytecodealliance/weval/v0.3.2/macos-aarch64/weval.tar.xz
mv weval-${{matrix.weval-version}}-aarch-macos/weval .weval-bin
# Perform NPM install
- name: Install NPM packages
run: npm ci
- name: Download Build
uses: actions/download-artifact@v4
with:
name: jco-build
path: obj
- name: Test LTS Node.js
run: npm run test:lts
if: matrix.node == '18.x' || matrix.node == '20.x'
- name: Test Latest Node.js
if: matrix.node == 'latest'
env:
WEVAL_BIN_PATH: ${{ matrix.weval-bin-path || '.weval-bin/weval' }}
run: npm run test
# build-wasi-tests:
# name: WASI Test Generation
# runs-on: ubuntu-latest
# outputs:
# cache-key: ${{ steps.cache-wasi-tests.outputs.cache-primary-key }}
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: recursive
# - name: Cache WASI Tests
# id: cache-wasi-tests
# uses: actions/cache@v4
# with:
# path: tests/gen
# key: wasi-${{ hashFiles('xtask/src/generate/preview2_tests.rs', 'submodules/wasmtime/Cargo.lock') }}
# - name: Install Rust
# if: steps.cache-wasi-tests.outputs.cache-hit != 'true'
# run: rustup update stable --no-self-update && rustup default stable
# - name: Install wasm32-unknown-unknown target
# if: steps.cache-wasi-tests.outputs.cache-hit != 'true'
# run: rustup target add wasm32-unknown-unknown
# - name: Install wasm32-wasip1 target
# if: steps.cache-wasi-tests.outputs.cache-hit != 'true'
# run: rustup target add wasm32-wasip1
# - name: Install wasm-tools
# if: steps.cache-wasi-tests.outputs.cache-hit != 'true'
# run: cargo install wasm-tools
# - name: Generate WASI Tests
# if: steps.cache-wasi-tests.outputs.cache-hit != 'true'
# run: cargo xtask generate preview2-tests
# - name: Upload Generated WASI Tests
# uses: actions/upload-artifact@v4
# with:
# name: wasi-tests
# path: tests/gen
# test-wasi-deno:
# name: Jco Deno WASI Conformance Tests
# runs-on: 'ubuntu-latest'
# needs: [build, build-wasi-tests]
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-node@v3
# with:
# node-version: 'latest'
# - uses: denoland/setup-deno@v1
# with:
# deno-version: v1.x
# - name: Install NPM packages
# run: npm ci
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: jco-build
# path: obj
# - name: Download WASI Tests
# uses: actions/download-artifact@v4
# with:
# name: wasi-tests
# path: tests/gen
# - name: WASI Preview 2 Conformance
# run: cargo test deno_
# test-wasi:
# name: Jco Node.js WASI Conformance Tests
# strategy:
# matrix:
# os: [
# ubuntu-latest,
# windows-latest,
# macos-latest
# ]
# node: [18.x, 20.x, latest]
# exclude:
# - os: macos-latest
# node: 20.x
# - os: macos-latest
# node: 18.x
# - os: windows-latest
# node: 20.x
# - os: windows-latest
# node: 18.x
# fail-fast: false
# runs-on: ${{ matrix.os }}
# needs: [build, build-wasi-tests]
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-node@v3
# with:
# node-version: ${{ matrix.node }}
# - name: Install NPM packages
# run: npm ci
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: jco-build
# path: obj
# - name: Download WASI Tests
# uses: actions/download-artifact@v4
# with:
# name: wasi-tests
# path: tests/gen
# - name: WASI Preview 2 Conformance
# run: cargo test node_
# test-workspaces:
# name: Test Workspaces
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - name: Install NPM packages
# run: npm ci
# - name: Test Workspaces
# run: npm run test --workspaces
# eslint:
# name: ESLint
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - name: Install NPM packages
# run: npm ci
# - name: Lint
# run: npm run lint
# rustfmt:
# name: Rustfmt
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - name: Install Rust
# run: rustup update stable && rustup default stable && rustup component add rustfmt
# - name: Remove tests mod
# run: rm -r tests/mod.rs
# - name: Format source code
# run: cargo fmt -- --check