name: "build"
on:
push:
branches:
- main
- pip-install
permissions:
contents: read
jobs:
build-ubuntu-extension:
name: Building ubuntu
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-robotstxt-ubuntu
path: dist/debug/robotstxt0.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-robotstxt-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-robotstxt-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-robotstxt-ubuntu
path: dist/debug/
- uses: actions/download-artifact@v3
with:
name: sqlite-robotstxt-ubuntu
path: bindings/node/sqlite-robotstxt-linux-x64/lib
- uses: actions/download-artifact@v3
with:
name: sqlite-robotstxt-ubuntu-wheels
path: dist/debug/
- run: pip install --find-links dist/debug/ sqlite_robotstxt
- run: make test-loadable
- uses: actions/setup-node@v3
with:
cache: "npm"
cache-dependency-path: bindings/node/sqlite-robotstxt/package.json
- run: npm install
working-directory: bindings/node/sqlite-robotstxt
- 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('bindings/deno/deno.lock') }}
- run: make test-deno
env:
DENO_SQLITE_ROBOTSTXT_PATH: ${{ github.workspace }}/dist/debug/robotstxt0
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-robotstxt-macos
path: dist/debug/robotstxt0.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-robotstxt-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-robotstxt-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-robotstxt-macos
path: dist/debug/
- uses: actions/download-artifact@v3
with:
name: sqlite-robotstxt-macos
path: bindings/node/sqlite-robotstxt-darwin-x64/lib
- uses: actions/download-artifact@v3
with:
name: sqlite-robotstxt-macos-wheels
path: dist/debug/
- run: brew install python
- run: /usr/local/opt/python@3/libexec/bin/pip install --find-links dist/debug/ sqlite_robotstxt
- run: make test-loadable python=/usr/local/opt/python@3/libexec/bin/python
- uses: actions/setup-node@v3
with:
cache: "npm"
cache-dependency-path: bindings/node/sqlite-robotstxt/package.json
- run: npm install
working-directory: bindings/node/sqlite-robotstxt
- 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('bindings/deno/deno.lock') }}
- run: make test-deno
env:
DENO_SQLITE_ROBOTSTXT_PATH: ${{ github.workspace }}/dist/debug/robotstxt0
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-robotstxt-macos-arm
path: dist/debug/robotstxt0.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-robotstxt-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-robotstxt-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-robotstxt-windows
path: dist/debug/robotstxt0.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-robotstxt-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-robotstxt-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-robotstxt-windows
path: dist/debug/
- uses: actions/download-artifact@v3
with:
name: sqlite-robotstxt-windows
path: bindings/node/sqlite-robotstxt-windows-x64/lib
- uses: actions/download-artifact@v3
with:
name: sqlite-robotstxt-windows-wheels
path: dist/debug/
- run: pip install --find-links dist/debug/ sqlite_robotstxt
- run: make test-loadable
- uses: actions/setup-node@v3
with:
cache: "npm"
cache-dependency-path: bindings/node/sqlite-robotstxt/package.json
- run: npm install
working-directory: bindings/node/sqlite-robotstxt
- 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('bindings/deno/deno.lock') }}
- run: make test-deno
env:
DENO_SQLITE_ROBOTSTXT_PATH: ${{ github.workspace }}/dist/debug/robotstxt0
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-robotstxt-windows-wheels
path: dist
- uses: actions/download-artifact@v3
with:
name: sqlite-robotstxt-ubuntu-wheels
path: dist
- uses: actions/download-artifact@v3
with:
name: sqlite-robotstxt-macos-wheels
path: dist
- uses: actions/download-artifact@v3
with:
name: sqlite-robotstxt-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