name: "build"
on:
push:
branches:
- main
permissions:
contents: read
jobs:
build-site:
permissions:
pages: write
id-token: write
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Setup Deno environment
uses: denoland/setup-deno@v1
with:
deno-version: v1.30
- name: Build site
run: make site-build
- name: Setup Pages
uses: actions/configure-pages@v2
- name: Upload artifact
uses: actions/upload-pages-artifact@v1
with:
path: site/_site
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1
build-ubuntu-extension:
name: Building
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- run: make loadable
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: sqlite-jsonschema-ubuntu
path: dist/debug/jsonschema0.so
build-ubuntu-python:
runs-on: ubuntu-20.04
needs: [build-ubuntu-extension]
steps:
- uses: actions/checkout@v3
- name: Download workflow artifacts
uses: actions/download-artifact@v3
with:
name: sqlite-jsonschema-ubuntu
path: dist/debug/
- uses: actions/setup-python@v3
- run: pip install wheel
- run: make python
- run: make datasette
- uses: actions/upload-artifact@v3
with:
name: sqlite-jsonschema-ubuntu-wheels
path: dist/debug/wheels/*.whl
test-ubuntu:
runs-on: ubuntu-20.04
needs: [build-ubuntu-extension, build-ubuntu-python]
env:
DENO_DIR: deno_cache
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
name: sqlite-jsonschema-ubuntu
path: dist/debug/
- uses: actions/download-artifact@v3
with:
name: sqlite-jsonschema-ubuntu
path: npm/sqlite-jsonschema-linux-x64/lib
- uses: actions/download-artifact@v3
with:
name: sqlite-jsonschema-ubuntu-wheels
path: dist/debug/
- run: pip install --find-links dist/debug/ sqlite_jsonschema
- run: make test-loadable
- run: make test-python
- uses: actions/setup-node@v3
with:
cache: "npm"
cache-dependency-path: npm/sqlite-jsonschema/package.json
- run: npm install
working-directory: npm/sqlite-jsonschema
- run: make test-npm
- uses: denoland/setup-deno@v1
with:
deno-version: v1.30
- name: Cache Deno dependencies
uses: actions/cache@v3
with:
path: ${{ env.DENO_DIR }}
key: ${{ runner.os }}-${{ hashFiles('deno/deno.lock') }}
- run: make test-deno
env:
DENO_SQLITE_JSONSCHEMA_PATH: ${{ github.workspace }}/dist/debug/jsonschema0.so
build-macos-extension:
name: Building macos-latest
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- run: make loadable
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: sqlite-jsonschema-macos
path: dist/debug/jsonschema0.dylib
build-macos-python:
runs-on: macos-latest
needs: [build-macos-extension]
steps:
- uses: actions/checkout@v3
- name: Download workflow artifacts
uses: actions/download-artifact@v3
with:
name: sqlite-jsonschema-macos
path: dist/debug/
- uses: actions/setup-python@v3
- run: pip install wheel
- run: make python
- run: make datasette
- uses: actions/upload-artifact@v3
with:
name: sqlite-jsonschema-macos-wheels
path: dist/debug/wheels/*.whl
test-macos:
runs-on: macos-latest
needs: [build-macos-extension, build-macos-python]
env:
DENO_DIR: deno_cache
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
name: sqlite-jsonschema-macos
path: dist/debug/
- uses: actions/download-artifact@v3
with:
name: sqlite-jsonschema-macos
path: npm/sqlite-jsonschema-darwin-x64/lib
- uses: actions/download-artifact@v3
with:
name: sqlite-jsonschema-macos-wheels
path: dist/debug/
- run: brew install python
- run: /usr/local/opt/python@3/libexec/bin/pip install --find-links dist/debug/ sqlite_jsonschema
- run: make test-loadable python=/usr/local/opt/python@3/libexec/bin/python
- run: make test-python python=/usr/local/opt/python@3/libexec/bin/python
- uses: actions/setup-node@v3
with:
cache: "npm"
cache-dependency-path: npm/sqlite-jsonschema/package.json
- run: npm install
working-directory: npm/sqlite-jsonschema
- run: make test-npm
- uses: denoland/setup-deno@v1
with:
deno-version: v1.30
- name: Cache Deno dependencies
uses: actions/cache@v3
with:
path: ${{ env.DENO_DIR }}
key: ${{ runner.os }}-${{ hashFiles('deno/deno.lock') }}
- run: make test-deno
env:
DENO_SQLITE_JSONSCHEMA_PATH: ${{ github.workspace }}/dist/debug/jsonschema0.dylib
build-macos-arm-extension:
name: Building macos arm extension
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- run: rustup target add aarch64-apple-darwin
- run: make loadable target=aarch64-apple-darwin
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: sqlite-jsonschema-macos-arm
path: dist/debug/jsonschema0.dylib
build-macos-arm-python:
runs-on: macos-latest
needs: [build-macos-arm-extension]
steps:
- uses: actions/checkout@v3
- name: Download workflow artifacts
uses: actions/download-artifact@v3
with:
name: sqlite-jsonschema-macos-arm
path: dist/debug/
- uses: actions/setup-python@v3
- run: pip install wheel
- run: make python IS_MACOS_ARM=1
- run: make datasette
- uses: actions/upload-artifact@v3
with:
name: sqlite-jsonschema-macos-arm-wheels
path: dist/debug/wheels/*.whl
build-windows-extension:
name: Building windows extension
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- run: make loadable
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: sqlite-jsonschema-windows
path: dist/debug/jsonschema0.dll
build-windows-python:
runs-on: windows-latest
needs: [build-windows-extension]
steps:
- uses: actions/checkout@v3
- name: Download workflow artifacts
uses: actions/download-artifact@v3
with:
name: sqlite-jsonschema-windows
path: dist/debug/
- uses: actions/setup-python@v3
- run: pip install wheel
- run: make python
- run: make datasette
- uses: actions/upload-artifact@v3
with:
name: sqlite-jsonschema-windows-wheels
path: dist/debug/wheels/*.whl
test-windows:
runs-on: windows-latest
needs: [build-windows-extension, build-windows-python]
env:
DENO_DIR: deno_cache
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
name: sqlite-jsonschema-windows
path: dist/debug/
- uses: actions/download-artifact@v3
with:
name: sqlite-jsonschema-windows
path: npm/sqlite-jsonschema-windows-x64/lib
- uses: actions/download-artifact@v3
with:
name: sqlite-jsonschema-windows-wheels
path: dist/debug/
- run: pip install --find-links dist/debug/ sqlite_jsonschema
- run: make test-loadable
- run: make test-python
- uses: actions/setup-node@v3
with:
cache: "npm"
cache-dependency-path: npm/sqlite-jsonschema/package.json
- run: npm install
working-directory: npm/sqlite-jsonschema
- run: make test-npm
- uses: denoland/setup-deno@v1
with:
deno-version: v1.30
- name: Cache Deno dependencies
uses: actions/cache@v3
with:
path: ${{ env.DENO_DIR }}
key: ${{ runner.os }}-${{ hashFiles('deno/deno.lock') }}
- run: make test-deno
env:
DENO_SQLITE_JSONSCHEMA_PATH: ${{ github.workspace }}/dist/debug/jsonschema0.dll
upload_test_pypi:
if: ${{ contains(github.event.head_commit.message, '@test_pypi') }}
needs: [test-ubuntu, test-macos, test-windows, build-macos-arm-python]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v3
with:
name: sqlite-jsonschema-windows-wheels
path: dist
- uses: actions/download-artifact@v3
with:
name: sqlite-jsonschema-ubuntu-wheels
path: dist
- uses: actions/download-artifact@v3
with:
name: sqlite-jsonschema-macos-wheels
path: dist
- uses: actions/download-artifact@v3
with:
name: sqlite-jsonschema-macos-arm-wheels
path: dist
- uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.TEST_PYPI_API_TOKEN }}
repository_url: https://test.pypi.org/legacy/
skip_existing: true