Skip to content

Add build steps for interpreter backends #1253

Add build steps for interpreter backends

Add build steps for interpreter backends #1253

Workflow file for this run

name: Builds
env:
RUST_BACKTRACE: 1
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: git
MSRV: "1.81"
on:
push:
branches:
- 'main'
tags:
# this is _not_ a regex, see: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet
- '[0-9]+.[0-9]+.[0-9]+*'
pull_request: # TODO: MUST BE REMOVED! ONLY FOR TESTING
branches:
- 'main' # Run jobs on PRs targeting the 'main' branch
workflow_dispatch:
inputs:
release:
description: 'Make release'
jobs:
setup:
name: Set up
runs-on: ubuntu-latest
outputs:
VERSION: ${{ steps.setup.outputs.VERSION }}
DOING_RELEASE: ${{ steps.setup.outputs.DOING_RELEASE }}
steps:
- name: Set up env vars
id: setup
shell: bash
run: |
VERSION=${GITHUB_REF/refs\/tags\//}
echo "VERSION=${VERSION}" >> $GITHUB_OUTPUT
DOING_RELEASE=$(echo $VERSION | grep -c '^[0-9]\+\.[0-9]\+\.[0-9]\+\(-\([a-zA-Z]\+\)\?[0-9]*\)\?$' || true)
echo "DOING_RELEASE=${DOING_RELEASE}" >> $GITHUB_OUTPUT
echo $VERSION
echo $DOING_RELEASE
build:
name: Build on ${{ matrix.build }}
runs-on: ${{ matrix.os }}
needs: setup
strategy:
fail-fast: false
matrix:
include:
# - build: linux-x64
# os: ubuntu-22.04
# artifact_name: 'wasmer-linux-amd64'
# llvm_url: 'https://github.com/wasmerio/llvm-custom-builds/releases/download/18.x/llvm-linux-amd64.tar.xz'
# cross_compilation_artifact_name: 'cross_compiled_from_linux'
# use_sccache: false
# use_llvm: true
# build_wasm: true
# - build: linux-x64-v8
# os: ubuntu-22.04
# artifact_name: 'wasmer-v8-linux-amd64'
# llvm_url: 'https://github.com/wasmerio/llvm-custom-builds/releases/download/18.x/llvm-linux-amd64.tar.xz'
# cross_compilation_artifact_name: 'cross_compiled_from_linux'
# use_sccache: false
# use_llvm: true
# build_wasm: true
# - build: linux-x64-wamr
# os: ubuntu-22.04
# artifact_name: 'wasmer-wamr-linux-amd64'
# llvm_url: 'https://github.com/wasmerio/llvm-custom-builds/releases/download/18.x/llvm-linux-amd64.tar.xz'
# cross_compilation_artifact_name: 'cross_compiled_from_linux'
# use_sccache: false
# use_llvm: true
# build_wasm: true
# - build: linux-x64-wasmi
# os: ubuntu-22.04
# artifact_name: 'wasmer-wasmi-linux-amd64'
# llvm_url: 'https://github.com/wasmerio/llvm-custom-builds/releases/download/18.x/llvm-linux-amd64.tar.xz'
# cross_compilation_artifact_name: 'cross_compiled_from_linux'
# use_sccache: false
# use_llvm: true
# build_wasm: true
# - build: macos-x64
# os: macos-13
# llvm_url: 'https://github.com/wasmerio/llvm-custom-builds/releases/download/18.x/llvm-darwin-amd64.tar.xz'
# artifact_name: 'wasmer-darwin-amd64'
# cross_compilation_artifact_name: 'cross_compiled_from_mac'
# use_sccache: false
# use_llvm: true
# build_wasm: false
# - build: macos-x64-v8
# os: macos-13
# llvm_url: 'https://github.com/wasmerio/llvm-custom-builds/releases/download/18.x/llvm-darwin-amd64.tar.xz'
# artifact_name: 'wasmer-v8-darwin-amd64'
# cross_compilation_artifact_name: 'cross_compiled_from_mac'
# use_sccache: false
# use_llvm: true
# build_wasm: false
# - build: macos-x64-wamr
# os: macos-13
# llvm_url: 'https://github.com/wasmerio/llvm-custom-builds/releases/download/18.x/llvm-darwin-amd64.tar.xz'
# artifact_name: 'wasmer-wamr-darwin-amd64'
# cross_compilation_artifact_name: 'cross_compiled_from_mac'
# use_sccache: false
# use_llvm: true
# build_wasm: false
# - build: macos-x64-wasmi
# os: macos-13
# llvm_url: 'https://github.com/wasmerio/llvm-custom-builds/releases/download/18.x/llvm-darwin-amd64.tar.xz'
# artifact_name: 'wasmer-wasmi-darwin-amd64'
# cross_compilation_artifact_name: 'cross_compiled_from_mac'
# use_sccache: false
# use_llvm: true
# build_wasm: false
# - build: macos-arm64
# os: macos-14
# target: aarch64-apple-darwin
# artifact_name: 'wasmer-darwin-arm64'
# use_sccache: false
# use_llvm: false
# build_wasm: false
# # [todo] xdoardo: Reinstate when the code we generate for aarch64 is working correctly.
# llvm_url: 'https://github.com/wasmerio/llvm-custom-builds/releases/download/18.x/llvm-darwin-aarch64.tar.xz'
# - build: macos-arm64-v8
# os: macos-14
# target: aarch64-apple-darwin
# artifact_name: 'wasmer-v8-darwin-arm64'
# use_sccache: false
# use_llvm: false
# build_wasm: false
# # [todo] xdoardo: Reinstate when the code we generate for aarch64 is working correctly.
# llvm_url: 'https://github.com/wasmerio/llvm-custom-builds/releases/download/18.x/llvm-darwin-aarch64.tar.xz'
# - build: macos-arm64-wamr
# os: macos-14
# target: aarch64-apple-darwin
# artifact_name: 'wasmer-wamr-darwin-arm64'
# use_sccache: false
# use_llvm: false
# build_wasm: false
# # [todo] xdoardo: Reinstate when the code we generate for aarch64 is working correctly.
# llvm_url: 'https://github.com/wasmerio/llvm-custom-builds/releases/download/18.x/llvm-darwin-aarch64.tar.xz'
# - build: macos-arm64-wasmi
# os: macos-14
# target: aarch64-apple-darwin
# artifact_name: 'wasmer-wasmi-darwin-arm64'
# use_sccache: false
# use_llvm: false
# build_wasm: false
# # [todo] xdoardo: Reinstate when the code we generate for aarch64 is working correctly.
# llvm_url: 'https://github.com/wasmerio/llvm-custom-builds/releases/download/18.x/llvm-darwin-aarch64.tar.xz'
# - build: windows-x64
# os: windows-2019
# artifact_name: 'wasmer-windows-amd64'
# llvm_url: 'https://github.com/wasmerio/llvm-custom-builds/releases/download/18.x/llvm-windows-amd64.tar.xz'
# cross_compilation_artifact_name: 'cross_compiled_from_win'
# use_sccache: false
# use_llvm: true
# build_wasm: false
# - build: windows-x64-v8
# os: windows-2022
# artifact_name: 'wasmer-v8-windows-amd64'
# llvm_url: 'https://github.com/wasmerio/llvm-custom-builds/releases/download/18.x/llvm-windows-amd64.tar.xz'
# cross_compilation_artifact_name: 'cross_compiled_from_win'
# use_sccache: false
# use_llvm: true
# build_wasm: false
# - build: windows-x64-wamr
# os: windows-2022
# artifact_name: 'wasmer-wamr-windows-amd64'
# llvm_url: 'https://github.com/wasmerio/llvm-custom-builds/releases/download/18.x/llvm-windows-amd64.tar.xz'
# cross_compilation_artifact_name: 'cross_compiled_from_win'
# use_sccache: false
# use_llvm: true
# build_wasm: false
# - build: windows-x64-wasmi
# os: windows-2022
# artifact_name: 'wasmer-wasmi-windows-amd64'
# llvm_url: 'https://github.com/wasmerio/llvm-custom-builds/releases/download/18.x/llvm-windows-amd64.tar.xz'
# cross_compilation_artifact_name: 'cross_compiled_from_win'
# use_sccache: false
# use_llvm: true
# build_wasm: false
# - build: linux-musl-x64
# os: ubuntu-latest
# artifact_name: 'wasmer-linux-musl-amd64'
# container: alpine:latest
# use_sccache: false
# use_llvm: false
# build_wasm: true
- build: linux-musl-x64-v8
os: ubuntu-latest
artifact_name: 'wasmer-v8-linux-musl-amd64'
container: alpine:latest
use_sccache: false
use_llvm: false
build_wasm: true
- build: linux-musl-x64-wamr
os: ubuntu-latest
artifact_name: 'wasmer-wamr-linux-musl-amd64'
container: alpine:latest
use_sccache: false
use_llvm: false
build_wasm: true
- build: linux-musl-x64-wasmi
os: ubuntu-latest
artifact_name: 'wasmer-wasmi-linux-musl-amd64'
container: alpine:latest
use_sccache: false
use_llvm: false
build_wasm: true
container: ${{ matrix.container }}
env:
SCCACHE_AZURE_BLOB_CONTAINER: wasmerstoragesccacheblob
SCCACHE_AZURE_CONNECTION_STRING: ${{ secrets.SCCACHE_AZURE_CONNECTION_STRING }}
TARGET: ${{ matrix.target }}
steps:
- uses: actions/checkout@v3
- name: Set up base deps on musl
if: matrix.build == 'linux-musl-x64'
run: ./scripts/alpine-linux-install-deps.sh
- name: Install Linux tools
if: startsWith(matrix.build, 'linux-x64')
run: |
sudo apt install mold ninja-build
- name: Install Linux musl tools
if: startsWith(matrix.build, 'linux-musl')
run: |
apk add mold cmake ninja bash curl make llvm18 clang18 lld clang18-static clang18-libclang
echo "LIBCLANG_STATIC_PATH=/usr/lib/llvm18/lib" >> $GITHUB_ENV
- name: Install `ninja` on macOS
if: startsWith(matrix.build, 'macos-')
shell: bash
run: |
brew install ninja gcc
- name: Install `ninja` on Windows
if: startsWith(matrix.build, 'windows-')
shell: bash
run: |
choco install ninja
- name: Delete unwanted link to stop it from interfering (Windows)
if: startsWith(matrix.build, 'windows-')
shell: bash
run: rm /usr/bin/link.exe
- name: Install standard header files on macOS
if: startsWith(matrix.build, 'macos-')
shell: bash
run: |
sudo xcode-select -s /Library/Developer/CommandLineTools
echo "CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include" >> $GITHUB_ENV
- name: Install MSVC dev-cmd (Windows)
uses: ilammy/msvc-dev-cmd@v1
if: startsWith(matrix.build, 'windows-')
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ env.MSRV }}
target: ${{ matrix.target }}
- uses: Swatinem/rust-cache@v2
if: matrix.use_sccache != true
- name: Install LLVM (macOS Apple Silicon)
if: matrix.os == 'macos-12' && !matrix.llvm_url
run: |
brew install llvm
- name: Install LLVM
if: matrix.llvm_url
shell: bash
run: |
LLVM_DIR=$(pwd)/${{ env.LLVM_DIR }}
mkdir -p ${LLVM_DIR}
curl --proto '=https' --tlsv1.2 -sSf "${{ matrix.llvm_url }}" -L -o - | tar xJv -C ${LLVM_DIR}
echo "${LLVM_DIR}/bin" >> $GITHUB_PATH
env:
LLVM_DIR: .llvm
- name: Configure LLVM (Windows)
# The Custom Windows build does not contains llvm-config.exe, so need to setup manualy here
if: matrix.build == 'windows-x64' && matrix.llvm_url
shell: bash
run: |
LLVM_DIR=$(pwd)/${{ env.LLVM_DIR }}
echo LLVM_SYS_180_PREFIX="${LLVM_DIR}" >> $GITHUB_ENV
echo LLVM_ENABLE=1 >> $GITHUB_ENV
env:
LLVM_DIR: .llvm
- name: Set up dependencies for Mac OS
run: |
brew install automake
# using gnu-tar is a workaround for https://github.com/actions/cache/issues/403
brew install gnu-tar
echo PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH" >> $GITHUB_ENV
if: startsWith(matrix.os, 'macos')
- uses: actions/cache@v2
with:
path: |
~/.cargo/registry
~/.cargo/git
key: ${{ matrix.build }}-${{ matrix.target }}-cargo-${{ hashFiles('Cargo.lock') }}-v1
- uses: actions/cache@v2
if: matrix.use_sccache
with:
path: ${{ runner.tool_cache }}/cargo-sccache
key: ${{ matrix.build }}-${{ matrix.target }}-sccache-bin-${{ env.CARGO_SCCACHE_VERSION }}-v1
- name: Install sccache
if: matrix.use_sccache
run: |
if [ ! -f '${{ runner.tool_cache }}/cargo-sccache/bin/sccache' ]; then
cargo install sccache --no-default-features --features=dist-client,azure --root '${{ runner.tool_cache }}/cargo-sccache'
fi
shell: bash
- name: Setup Rust target
run: |
mkdir -p .cargo
cat << EOF > .cargo/config.toml
[build]
target = "${{ matrix.target }}"
EOF
if: matrix.target
- name: Set sccache port
if: matrix.use_sccache && matrix.random_sccache_port
run: |
netstat -aln | awk '
$6 == "LISTEN" {
if ($4 ~ "[.:][0-9]+$") {
n = split($4, a, /[:.]/);
port = a[n];
p[port] = 1
}
}
END {
for (i = 3000; i < 65000 && p[i]; i++){};
if (i == 65000) {exit 1};
print "SCCACHE_SERVER_PORT=" i
}
' >> $GITHUB_ENV
# echo "SCCACHE_SERVER_PORT=9000"
echo "Setting random sccache port to: $SCCACHE_SERVER_PORT"
shell: bash
- name: Start sccache
if: matrix.use_sccache
run: |
chmod +x '${{ runner.tool_cache }}/cargo-sccache/bin/sccache'
'${{ runner.tool_cache }}/cargo-sccache/bin/sccache' --start-server
'${{ runner.tool_cache }}/cargo-sccache/bin/sccache' -s
echo 'RUSTC_WRAPPER=${{ runner.tool_cache }}/cargo-sccache/bin/sccache' >> $GITHUB_ENV
shell: bash
# - name: Build C API headless
# shell: bash
# run: |
# make package-capi-headless
# - name: Build C API
# shell: bash
# run: |
# make build-capi
# - name: Build Wasmer binary with LLVM
# if: matrix.use_llvm
# shell: bash
# run: |
# make build-wasmer
# env:
# ENABLE_LLVM: 1
- name: Build Wasmer with v8 backend with mold
if: ${{ endsWith(matrix.build, 'v8') && startsWith(matrix.build, 'linux-x64') }}
run: |
RUSTFLAGS="-C linker=clang -C link-arg=-fuse-ld=mold" make build-wasmer-v8
- name: Build Wasmer with v8 backend
if: ${{ endsWith(matrix.build, 'v8') && !startsWith(matrix.build, 'linux-x64') }}
run: |
echo $LIBCLANG_STATIC_PATH
make build-wasmer-v8
- name: Build Wasmer with wamr backend
if: endsWith(matrix.build, 'wamr')
run: |
make build-wasmer-wamr
- name: Build Wasmer with wasmi backend
if: endsWith(matrix.build, 'wasmi')
run: |
make build-wasmer-wasmi
# - name: Build Wasmer binary without LLVM
# if: matrix.use_llvm != true
# shell: bash
# run: |
# make build-wasmer
#- name: Build Wasmer binary on Wasm32-WASI without LLVM
# if: matrix.build_wasm
# shell: bash
# run: |
# make build-wasmer-wasm
# - name: Install Nightly Rust for Headless
# if: matrix.build != 'linux-musl-x64'
# uses: dtolnay/rust-toolchain@master
# with:
# toolchain: "nightly-2024-07-05"
# target: ${{ matrix.target }}
# components: "rust-src"
# - name: Build Minimal Wasmer Headless
# if: matrix.build != 'linux-musl-x64'
# run: |
# cargo install xargo
# echo "" >> Cargo.toml
# echo "[profile.release]" >> Cargo.toml
# echo "opt-level = 'z'" >> Cargo.toml
# echo "debug = false" >> Cargo.toml
# echo "debug-assertions = false" >> Cargo.toml
# echo "overflow-checks = false" >> Cargo.toml
# echo "lto = true" >> Cargo.toml
# echo "panic = 'abort'" >> Cargo.toml
# echo "incremental = false" >> Cargo.toml
# echo "codegen-units = 1" >> Cargo.toml
# echo "rpath = false" >> Cargo.toml
# rustup override set nightly-2024-07-05
# make build-wasmer-headless-minimal
# rustup override unset
- name: Dist
run: |
make distribution
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact_name }}
path: dist
if-no-files-found: error
retention-days: 2
# windows_gnu:
# name: Windows GNU
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v3
# - name: Install Windows-GNU linker
# shell: bash
# run: |
# sudo apt install -y mingw-w64
# - uses: dtolnay/rust-toolchain@stable
# with:
# target: x86_64-pc-windows-gnu
# - name: Install Windows-GNU target
# shell: bash
# run: |
# rustup target add x86_64-pc-windows-gnu
# - name: Install Windows 10 SDK with xwin
# shell: bash
# run: |
# mkdir -p /tmp/xwin
# mkdir -p /tmp/xwindownload
# mkdir -p /tmp/xwincache
# git clone https://github.com/wasmerio/xwin --depth=1 /tmp/xwin
# cargo build --release --manifest-path=/tmp/xwin/Cargo.toml
# /tmp/xwin/target/release/xwin --accept-license --cache-dir /tmp/xwincache splat --output /tmp/xwindownload
# mkdir -p /tmp/winsdk
# cp /tmp/xwindownload/sdk/lib/10.0.20348/um/x86_64/WS2_32.lib /tmp/winsdk/
# cp /tmp/xwindownload/sdk/lib/10.0.20348/um/x86_64/KERNEL32.lib /tmp/winsdk/
# cp /tmp/xwindownload/sdk/lib/10.0.20348/um/x86_64/BCRYPT.lib /tmp/winsdk/
# cp /tmp/xwindownload/sdk/lib/10.0.20348/um/x86_64/ADVAPI32.lib /tmp/winsdk/
# cp /tmp/xwindownload/sdk/lib/10.0.20348/um/x86_64/USERENV.lib /tmp/winsdk/
# echo "WinSDK files:"
# ls -laH /tmp/winsdk
# echo ""
# mkdir -p package
# mkdir -p package/winsdk
# cp -r /tmp/winsdk/* package/winsdk
# - name: Build Wasmer C-API without LLVM
# shell: bash
# run: |
# make build-capi
# env:
# RUSTFLAGS: -Cpanic=abort
# CARGO_TARGET: x86_64-pc-windows-gnu
# ENABLE_LLVM: 0
# - name: Build Wasmer C-API headless without LLVM
# shell: bash
# run: |
# make build-capi-headless
# env:
# RUSTFLAGS: -Cpanic=abort
# CARGO_TARGET: x86_64-pc-windows-gnu
# ENABLE_LLVM: 0
# - name: Dist
# run: |
# make distribution-gnu
# env:
# CARGO_TARGET: x86_64-pc-windows-gnu
# TARGET_DIR: target/x86_64-pc-windows-gnu/release
# - name: Upload Artifacts
# uses: actions/upload-artifact@v4
# with:
# name: 'wasmer-windows-gnu64'
# path: dist
# if-no-files-found: error
# retention-days: 2
# darwin_aarch64_jsc:
# name: macOS aarch64 (JSC)
# runs-on: macos-12
# steps:
# - uses: actions/checkout@v3
# - uses: dtolnay/rust-toolchain@stable
# with:
# target: aarch64-apple-darwin
# - name: Install Darwin-aarch64 target
# shell: bash
# run: |
# rustup target add aarch64-apple-darwin
# - name: Build Wasmer C-API (JSC)
# shell: bash
# run: |
# make build-capi-jsc
# env:
# RUSTFLAGS: -Cpanic=abort
# CARGO_TARGET: aarch64-apple-darwin
# - name: Dist
# run: |
# make distribution
# env:
# CARGO_TARGET: aarch64-apple-darwin
# TARGET_DIR: target/aarch64-apple-darwin/release
# - name: Upload Artifacts
# uses: actions/upload-artifact@v4
# with:
# name: 'aarch64-apple-darwin-jsc'
# path: dist
# if-no-files-found: error
# retention-days: 2
# darwin_x86_64_jsc:
# name: macOS x86_64 (JSC)
# runs-on: macos-12
# steps:
# - uses: actions/checkout@v3
# - uses: dtolnay/rust-toolchain@stable
# with:
# target: x86_64-apple-darwin
# - name: Build Wasmer C-API (JSC)
# shell: bash
# run: |
# make build-capi-jsc
# env:
# RUSTFLAGS: -Cpanic=abort
# CARGO_TARGET: x86_64-apple-darwin
# - name: Dist
# run: |
# make distribution
# env:
# CARGO_TARGET: x86_64-apple-darwin
# TARGET_DIR: target/x86_64-apple-darwin/release
# - name: Upload Artifacts
# uses: actions/upload-artifact@v4
# with:
# name: 'x86_64-apple-darwin-jsc'
# path: dist
# if-no-files-found: error
# retention-days: 2
# linux_aarch64:
# name: Linux aarch64
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v3
# - uses: dtolnay/rust-toolchain@stable
# with:
# target: aarch64-unknown-linux-gnu
# - name: Build cross image
# run: |
# docker build -t wasmer/aarch64 ${GITHUB_WORKSPACE}/.github/cross-linux-aarch64/
# env:
# CROSS_DOCKER_IN_DOCKER: true
# - name: Build Wasmer binary
# run: |
# make build-wasmer
# env:
# CARGO_BINARY: docker run -v /var/run/docker.sock:/var/run/docker.sock -v ${GITHUB_WORKSPACE}:/project -w /project wasmer/aarch64 cross
# CROSS_DOCKER_IN_DOCKER: true
# CARGO_TARGET: aarch64-unknown-linux-gnu
# PKG_CONFIG_PATH: /usr/lib/aarch64-linux-gnu/pkgconfig
# PKG_CONFIG_ALLOW_CROSS: true
# ENABLE_LLVM: 0
# - name: Build C API headless
# shell: bash
# run: |
# make package-capi-headless
# env:
# CARGO_BINARY: docker run -v /var/run/docker.sock:/var/run/docker.sock -v ${GITHUB_WORKSPACE}:/project -w /project wasmer/aarch64 cross
# CROSS_DOCKER_IN_DOCKER: true
# CARGO_TARGET: aarch64-unknown-linux-gnu
# PKG_CONFIG_PATH: /usr/lib/aarch64-linux-gnu/pkgconfig
# PKG_CONFIG_ALLOW_CROSS: true
# ENABLE_LLVM: 0
# TARGET: aarch64-unknown-linux-gnu
# TARGET_DIR: target/aarch64-unknown-linux-gnu/release
# - name: Build C API
# run: |
# make build-capi
# env:
# CARGO_BINARY: docker run -v /var/run/docker.sock:/var/run/docker.sock -v ${GITHUB_WORKSPACE}:/project -w /project wasmer/aarch64 cross
# CROSS_DOCKER_IN_DOCKER: true
# CARGO_TARGET: aarch64-unknown-linux-gnu
# PKG_CONFIG_PATH: /usr/lib/aarch64-linux-gnu/pkgconfig
# PKG_CONFIG_ALLOW_CROSS: true
# ENABLE_LLVM: 0
# - name: Dist
# run: |
# make distribution
# env:
# CARGO_BINARY: docker run -v /var/run/docker.sock:/var/run/docker.sock -v ${GITHUB_WORKSPACE}:/project -w /project wasmer/aarch64 cross
# CROSS_DOCKER_IN_DOCKER: true
# CARGO_TARGET: aarch64-unknown-linux-gnu
# PKG_CONFIG_PATH: /usr/lib/aarch64-linux-gnu/pkgconfig
# PKG_CONFIG_ALLOW_CROSS: true
# TARGET: aarch64-unknown-linux-gnu
# TARGET_DIR: target/aarch64-unknown-linux-gnu/release
# - name: Upload Artifacts
# uses: actions/upload-artifact@v4
# with:
# name: wasmer-linux-aarch64
# path: dist
# if-no-files-found: error
# retention-days: 2
# linux_riscv64:
# name: Linux riscv64
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v3
# - uses: dtolnay/rust-toolchain@stable
# with:
# target: riscv64gc-unknown-linux-gnu
# - name: Build cross image
# run: |
# docker build -t wasmer/riscv64 ${GITHUB_WORKSPACE}/.github/cross-linux-riscv64/
# env:
# CROSS_DOCKER_IN_DOCKER: true
# - name: Build Wasmer binary
# run: |
# make build-wasmer
# env:
# CARGO_BINARY: docker run -v /var/run/docker.sock:/var/run/docker.sock -v ${GITHUB_WORKSPACE}:/project -w /project wasmer/riscv64:latest cargo
# CROSS_DOCKER_IN_DOCKER: true
# CARGO_TARGET: riscv64gc-unknown-linux-gnu
# PKG_CONFIG_PATH: /usr/lib/riscv64-linux-gnu/pkgconfig
# PKG_CONFIG_ALLOW_CROSS: true
# ENABLE_LLVM: 0
# - name: Build C API headless
# shell: bash
# run: |
# make package-capi-headless
# env:
# CARGO_BINARY: docker run -v /var/run/docker.sock:/var/run/docker.sock -v ${GITHUB_WORKSPACE}:/project -w /project wasmer/riscv64:latest cargo
# CROSS_DOCKER_IN_DOCKER: true
# CARGO_TARGET: riscv64gc-unknown-linux-gnu
# PKG_CONFIG_PATH: /usr/lib/riscv64-linux-gnu/pkgconfig
# PKG_CONFIG_ALLOW_CROSS: true
# ENABLE_LLVM: 0
# TARGET: riscv64gc-unknown-linux-gnu
# TARGET_DIR: target/riscv64gc-unknown-linux-gnu/release
# - name: Build C API
# run: |
# make build-capi
# env:
# CARGO_BINARY: docker run -v /var/run/docker.sock:/var/run/docker.sock -v ${GITHUB_WORKSPACE}:/project -w /project wasmer/riscv64:latest cargo
# CROSS_DOCKER_IN_DOCKER: true
# CARGO_TARGET: riscv64gc-unknown-linux-gnu
# PKG_CONFIG_PATH: /usr/lib/riscv64-linux-gnu/pkgconfig
# PKG_CONFIG_ALLOW_CROSS: true
# ENABLE_LLVM: 0
# - name: Dist
# run: |
# make distribution
# env:
# CARGO_BINARY: docker run -v /var/run/docker.sock:/var/run/docker.sock -v ${GITHUB_WORKSPACE}:/project -w /project wasmer/riscv64:latest cargo
# CROSS_DOCKER_IN_DOCKER: true
# CARGO_TARGET: riscv64gc-unknown-linux-gnu
# PKG_CONFIG_PATH: /usr/lib/riscv64-linux-gnu/pkgconfig
# PKG_CONFIG_ALLOW_CROSS: true
# TARGET: riscv64gc-unknown-linux-gnu
# TARGET_DIR: target/riscv64gc-unknown-linux-gnu/release
# - name: Upload Artifacts
# uses: actions/upload-artifact@v4
# with:
# name: wasmer-linux-riscv64
# path: dist
# if-no-files-found: error
# retention-days: 2
release:
# needs: [setup, build, linux_aarch64, windows_gnu, linux_riscv64]
needs: [setup, build]
runs-on: ubuntu-latest
if: needs.setup.outputs.DOING_RELEASE == '1' || github.event.inputs.release != ''
steps:
- name: Download the Artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ needs.setup.outputs.VERSION }}
release_name: Release ${{ needs.setup.outputs.VERSION }}
draft: true
prerelease: false
- name: Upload Release Asset Windows Installer
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-windows-amd64/WasmerInstaller.exe
asset_name: wasmer-windows.exe
asset_content_type: application/vnd.microsoft.portable-executable
- name: Upload Release Asset Windows
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-windows-amd64/wasmer.tar.gz
asset_name: wasmer-windows-amd64.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset Windows v8
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-v8-windows-amd64/wasmer.tar.gz
asset_name: wasmer-v8-windows-amd64.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset Windows wamr
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-wamr-windows-amd64/wasmer.tar.gz
asset_name: wasmer-wamr-windows-amd64.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset Windows wasmi
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-wasmi-windows-amd64/wasmer.tar.gz
asset_name: wasmer-wasmi-windows-amd64.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset Linux amd64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-linux-amd64/wasmer.tar.gz
asset_name: wasmer-linux-amd64.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset v8 Linux amd64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-v8-linux-amd64/wasmer.tar.gz
asset_name: wasmer-v8-linux-amd64.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset wamr Linux amd64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-wamr-linux-amd64/wasmer.tar.gz
asset_name: wasmer-wamr-linux-amd64.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset wasmi Linux amd64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-wasmi-linux-amd64/wasmer.tar.gz
asset_name: wasmer-wasmi-linux-amd64.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset Linux aarch64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-linux-aarch64/wasmer.tar.gz
asset_name: wasmer-linux-aarch64.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset Linux riscv64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-linux-riscv64/wasmer.tar.gz
asset_name: wasmer-linux-riscv64.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset Windows gnu64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-windows-gnu64/wasmer.tar.gz
asset_name: wasmer-windows-gnu64.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset Linux amd64 (musl)
id: upload-release-asset-linux-musl-amd64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-linux-musl-amd64/wasmer.tar.gz
asset_name: wasmer-linux-musl-amd64.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset Linux amd64 (musl) v8
id: upload-release-asset-linux-musl-amd64-v8
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-v8-linux-musl-amd64/wasmer.tar.gz
asset_name: wasmer-v8-linux-musl-amd64.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset Linux amd64 (musl) wamr
id: upload-release-asset-linux-musl-amd64-wamr
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-wamr-linux-musl-amd64/wasmer.tar.gz
asset_name: wasmer-wamr-linux-musl-amd64.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset Linux amd64 (musl) wasmi
id: upload-release-asset-linux-musl-amd64-wasmi
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-wasmi-linux-musl-amd64/wasmer.tar.gz
asset_name: wasmer-wasmi-linux-musl-amd64.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset Mac amd64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-darwin-amd64/wasmer.tar.gz
asset_name: wasmer-darwin-amd64.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset Mac amd64 v8
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-v8-darwin-amd64/wasmer.tar.gz
asset_name: wasmer-v8-darwin-amd64.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset Mac amd64 wamr
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-wamr-darwin-amd64/wasmer.tar.gz
asset_name: wasmer-wamr-darwin-amd64.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset Mac amd64 wasmi
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-wasmi-darwin-amd64/wasmer.tar.gz
asset_name: wasmer-wasmi-darwin-amd64.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset Mac arm64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-darwin-arm64/wasmer.tar.gz
asset_name: wasmer-darwin-arm64.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset Mac arm64 v8
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-v8-darwin-arm64/wasmer.tar.gz
asset_name: wasmer-v8-darwin-arm64.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset Mac arm64 wamr
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-wamr-darwin-arm64/wasmer.tar.gz
asset_name: wasmer-wamr-darwin-arm64.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset Mac arm64 wasmi
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/wasmer-wasmi-darwin-arm64/wasmer.tar.gz
asset_name: wasmer-wasmi-darwin-arm64.tar.gz
asset_content_type: application/gzip