name: build on: push: branches: - master pull_request: branches: - master schedule: - cron: "0 0 * * 0" jobs: fmt: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - run: rustup update && rustup component add rustfmt - run: cargo fmt -- --check clippy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: submodules: true - run: rustup update && rustup component add clippy - run: cargo clippy --all-targets --all-features test_linux: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: submodules: true - run: rustup update - run: cargo test --all-features env: RUST_BACKTRACE: 1 test_windows: runs-on: windows-latest steps: - uses: actions/checkout@v2 with: submodules: true - run: rustup update - run: Remove-Item -LiteralPath "C:\msys64\" -Force -Recurse - run: cargo test --all-features env: RUST_BACKTRACE: 1 js: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - run: rustup update - run: cargo install wasm-pack - run: npm install working-directory: ./js - run: npm test working-directory: ./js python: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: submodules: true - run: rustup update - uses: actions/setup-python@v2 with: python-version: "3.10" - run: python -m venv python/venv - run: source python/venv/bin/activate && pip install --upgrade maturin sphinx - run: source venv/bin/activate && maturin develop working-directory: ./python - run: source ../venv/bin/activate && python -m unittest working-directory: ./python/tests - run: source ../venv/bin/activate && sphinx-build -M doctest . build working-directory: ./python/docs - run: source ../venv/bin/activate && sphinx-build -M html . build working-directory: ./python/docs python_wheel_linux: runs-on: ubuntu-latest needs: python strategy: matrix: architecture: ["x86_64", "aarch64"] steps: - uses: actions/checkout@v2 with: submodules: true - uses: docker/setup-qemu-action@v1 if: matrix.architecture != 'x86_64' with: platforms: ${{ matrix.architecture }} - run: sed 's/%arch%/${{ matrix.architecture }}/g' .github/workflows/manylinux_build.sh > .github/workflows/manylinux_build_script.sh - run: docker run -v "$(pwd)":/workdir --platform linux/${{ matrix.architecture }} quay.io/pypa/manylinux2014_${{ matrix.architecture }} /bin/bash /workdir/.github/workflows/manylinux_build_script.sh - uses: actions/upload-artifact@v2 with: name: wheels path: target/wheels/*.whl - run: pip install pyoxigraph --no-index --find-links ../../target/wheels && python -m unittest if: matrix.architecture == 'x86_64' working-directory: ./python/tests python_wheel_mac: runs-on: macos-latest needs: python steps: - uses: actions/checkout@v2 with: submodules: true - run: rustup update && rustup target add aarch64-apple-darwin - uses: actions/setup-python@v2 with: python-version: 3.7 - run: pip install maturin - run: maturin build --release -m python/Cargo.toml --universal2 env: DEVELOPER_DIR: '/Applications/Xcode.app/Contents/Developer' SDKROOT: '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk' MACOSX_DEPLOYMENT_TARGET: '10.9' - uses: actions/upload-artifact@v2 with: name: wheels path: target/wheels/*.whl - run: pip install pyoxigraph --no-index --find-links ../../target/wheels && python -m unittest working-directory: ./python/tests python_wheel_windows: runs-on: windows-latest needs: python steps: - uses: actions/checkout@v2 with: submodules: true - uses: actions/setup-python@v2 with: python-version: 3.7 - run: rustup update - run: Remove-Item -LiteralPath "C:\msys64\" -Force -Recurse - run: pip install maturin - run: maturin build --release -m python/Cargo.toml - uses: actions/upload-artifact@v2 with: name: wheels path: target/wheels/*.whl - run: pip install pyoxigraph --no-index --find-links ../../target/wheels && python -m unittest working-directory: ./python/tests binary_linux: runs-on: ubuntu-latest needs: test_linux steps: - uses: actions/checkout@v2 with: submodules: true - run: cargo build --release working-directory: ./server - uses: actions/upload-artifact@v2 with: name: binary path: target/release/oxigraph_server