name: memquery
on:
push:
branches:
- main
- release-*
tags:
- v*
pull_request:
branches:
- main
- release-*
env:
CARGO_TERM_COLOR: always
CARGO_TOKEN: ${{ secrets.CARGO_TOKEN }}
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build
run: cargo build --verbose
- name: Run async tests
run: cargo test --verbose
- name: Run sync tests
run: cargo t --verbose --features "sync"
- name: Build WASM
run: rustup target add wasm32-unknown-unknown && cd wasm && cargo build --target wasm32-unknown-unknown
- name: Copy WASM to Python folder
run: cp wasm/target/wasm32-unknown-unknown/debug/wsmemquery.wasm languages/python/
- name: Set up Python 3.x
uses: actions/setup-python@v2
with:
python-version: "3.6"
architecture: "x64"
- name: Install requirements
run: cd languages/python && pip install -r requirements.txt
- name: Unit tests
run: cd languages/python && python -m unittest
- name: Copy WASM to Go folder
run: cp wasm/target/wasm32-unknown-unknown/debug/wsmemquery.wasm languages/golang/memquery/
- name: Setup golang
uses: actions/setup-go@v2
with:
go-version: "1.16.2"
arch: "x64"
platform: "linux"
- name: Go unit tests
run: cd languages/golang/memquery && go test -v
- name: Release
uses: actions/upload-artifact@v2
if: startsWith(github.ref, 'refs/tags/')
with:
name: wsmemquery.wasm
path: ${{ github.workspace }}/wasm/target/wasm32-unknown-unknown/release
publish:
name: Publish Crate
runs-on: ubuntu-latest
needs: [build]
if: startswith(github.ref, 'refs/tags/v')
steps:
- uses: actions/checkout@v2
- name: cargo publish
run: cargo publish --token ${{ env.CARGO_TOKEN }}