v0.1.1 #54
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "Release" | |
on: | |
release: | |
types: [published] | |
workflow_dispatch: | |
permissions: | |
contents: read | |
env: | |
ARTIFACT-LINUX-X86_64-EXTENSION: sqlite-vss-linux-x86_64 | |
ARTIFACT-MACOS-X86_64-EXTENSION: sqlite-vss-macos-x86_64 | |
ARTIFACT-MACOS-AARCH64-EXTENSION: sqlite-vss-macos-aarch64 | |
ARTIFACT-WINDOWS-X86_64-EXTENSION: sqlite-vss-windows-x86_64 | |
ARTIFACT-LINUX-X86_64-WHEELS: sqlite-vss-linux-x86_64-wheels | |
ARTIFACT-MACOS-X86_64-WHEELS: sqlite-vss-macos-x86_64-wheels | |
ARTIFACT-MACOS-AARCH64-WHEELS: sqlite-vss-macos-aarch64-wheels | |
jobs: | |
build-linux-x86_64-extension: | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- id: cache-sqlite-build | |
uses: actions/cache@v3 | |
with: | |
path: vendor/sqlite | |
key: ${{ runner.os }}-${{ hashFiles('vendor/get_sqlite.sh') }} | |
- if: steps.cache-sqlite-build.outputs.cache-hit != 'true' | |
run: ./vendor/get_sqlite.sh | |
- if: steps.cache-sqlite-build.outputs.cache-hit != 'true' | |
working-directory: vendor/sqlite | |
run: ./configure && make | |
# TODO how cache this? | |
- run: sudo apt-get update -y && sudo apt-get install -y cmake libgomp1 | |
- run: make loadable-release static-release | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.ARTIFACT-LINUX-X86_64-EXTENSION }} | |
path: dist/release/* | |
build-linux-x86_64-python: | |
runs-on: ubuntu-20.04 | |
needs: [build-linux-x86_64-extension] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: ${{ env.ARTIFACT-LINUX-X86_64-EXTENSION }} | |
path: dist/release/ | |
- uses: actions/setup-python@v3 | |
- run: pip install wheel | |
- run: make python-release | |
- run: make datasette-release | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.ARTIFACT-LINUX-X86_64-WHEELS }} | |
path: dist/release/wheels/*.whl | |
build-macos-x86_64-extension: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- id: cache-sqlite-build | |
uses: actions/cache@v3 | |
with: | |
path: vendor/sqlite | |
key: ${{ runner.os }}-${{ hashFiles('vendor/get_sqlite.sh') }} | |
- if: steps.cache-sqlite-build.outputs.cache-hit != 'true' | |
run: ./vendor/get_sqlite.sh | |
- if: steps.cache-sqlite-build.outputs.cache-hit != 'true' | |
working-directory: vendor/sqlite | |
run: ./configure && make | |
- run: brew install llvm | |
- id: cache-cmake-build | |
uses: actions/cache@v3 | |
with: | |
path: build | |
key: ${{ runner.os }}-build | |
- run: make patch-openmp | |
- run: make loadable-release static-release | |
env: | |
# `brew info libomp` gives the correct one, with .a file for static openmp builds | |
CC: /usr/local/opt/llvm/bin/clang | |
CXX: /usr/local/opt/llvm/bin/clang++ | |
LDFLAGS: "-L/usr/local/opt/libomp/lib/" | |
CPPFLAGS: "-I/usr/local/opt/libomp/include/" | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.ARTIFACT-MACOS-X86_64-EXTENSION }} | |
path: dist/release/* | |
build-macos-x86_64-python: | |
runs-on: macos-latest | |
needs: [build-macos-x86_64-extension] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: ${{ env.ARTIFACT-MACOS-X86_64-EXTENSION }} | |
path: dist/release/ | |
- uses: actions/setup-python@v3 | |
- run: pip install wheel | |
- run: make python-release | |
- run: make datasette-release | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.ARTIFACT-MACOS-X86_64-WHEELS }} | |
path: dist/release/wheels/*.whl | |
build-macos-aarch64-extension: | |
runs-on: [self-hosted, mm1] | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: "recursive" | |
- id: cache-sqlite-build | |
uses: actions/cache@v3 | |
with: | |
path: vendor/sqlite | |
key: ${{ runner.os }}-${{ hashFiles('vendor/get_sqlite.sh') }} | |
- if: steps.cache-sqlite-build.outputs.cache-hit != 'true' | |
run: ./vendor/get_sqlite.sh | |
- if: steps.cache-sqlite-build.outputs.cache-hit != 'true' | |
working-directory: vendor/sqlite | |
run: ./configure && make | |
- run: make patch-openmp | |
- run: make loadable-release static-release | |
env: | |
# `brew info libomp` gives the correct one, with .a file for static openmp builds | |
CC: /opt/homebrew/opt/llvm/bin/clang | |
CXX: /opt/homebrew/opt/llvm/bin/clang++ | |
LDFLAGS: "-L/opt/homebrew/opt/libomp/lib" | |
CPPFLAGS: "-I/opt/homebrew/opt/libomp/include" | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.ARTIFACT-MACOS-AARCH64-EXTENSION }} | |
path: dist/release/* | |
build-macos-aarch64-python: | |
runs-on: [self-hosted, mm1] | |
needs: [build-macos-aarch64-extension] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: ${{ env.ARTIFACT-MACOS-AARCH64-EXTENSION }} | |
path: dist/release/ | |
- run: pip3 install wheel | |
- run: make python-release IS_MACOS_ARM=1 | |
- run: make datasette-release | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.ARTIFACT-MACOS-AARCH64-WHEELS }} | |
path: dist/release/wheels/*.whl | |
upload-deno: | |
needs: | |
[ | |
build-macos-x86_64-extension, | |
build-macos-aarch64-extension, | |
build-linux-x86_64-extension, | |
] | |
permissions: | |
contents: write | |
runs-on: ubuntu-latest | |
outputs: | |
deno-checksums: ${{ steps.deno-assets.outputs.result }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v2 | |
- id: deno-assets | |
uses: actions/github-script@v6 | |
env: | |
ARTIFACT-LINUX-X86_64-EXTENSION: ${{ env.ARTIFACT-LINUX-X86_64-EXTENSION }} | |
ARTIFACT-MACOS-X86_64-EXTENSION: ${{ env.ARTIFACT-MACOS-X86_64-EXTENSION }} | |
ARTIFACT-MACOS-AARCH64-EXTENSION: ${{ env.ARTIFACT-MACOS-AARCH64-EXTENSION }} | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
result-encoding: string | |
script: | | |
const script = require('.github/workflows/upload-deno-assets.js') | |
return await script({github, context}) | |
upload-extensions: | |
needs: | |
[ | |
build-macos-x86_64-extension, | |
build-macos-aarch64-extension, | |
build-linux-x86_64-extension, | |
] | |
permissions: | |
contents: write | |
runs-on: ubuntu-latest | |
outputs: | |
checksums: ${{ steps.upload-spm.outputs.asset-checksums }} | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/download-artifact@v2 | |
- uses: asg017/upload-spm@main | |
id: upload-spm | |
with: | |
name: sqlite-vss | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
platforms: | | |
macos-x86_64: ${{ env.ARTIFACT-MACOS-X86_64-EXTENSION }}/* | |
macos-aarch64: ${{ env.ARTIFACT-MACOS-AARCH64-EXTENSION }}/* | |
linux-x86_64: ${{ env.ARTIFACT-LINUX-X86_64-EXTENSION }}/* | |
upload-checksums: | |
needs: [upload-extensions, upload-deno] | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
steps: | |
- uses: actions/github-script@v6 | |
env: | |
CHECKSUMS: "${{ needs.upload-extensions.outputs.checksums }}\n${{ needs.upload-deno.outputs.deno-checksums }}" | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
const { owner, repo } = context.repo; | |
const release = await github.rest.repos.getReleaseByTag({ | |
owner, | |
repo, | |
tag: process.env.GITHUB_REF.replace("refs/tags/", ""), | |
}); | |
const release_id = release.data.id; | |
github.rest.repos.uploadReleaseAsset({ | |
owner, | |
repo, | |
release_id, | |
name: "checksums.txt", | |
data: process.env.CHECKSUMS, | |
}); | |
upload-hex: | |
runs-on: ubuntu-latest | |
needs: [upload-extensions] | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: erlef/setup-beam@v1 | |
with: | |
otp-version: "24" | |
rebar3-version: "3.16.1" | |
elixir-version: "1.14" | |
- run: ./scripts/elixir_generate_checksum.sh "${{ needs.upload-extensions.outputs.checksums }}" | |
- run: mix deps.get | |
working-directory: ./bindings/elixir | |
- run: mix compile --docs | |
working-directory: ./bindings/elixir | |
- run: mix hex.publish --yes | |
working-directory: ./bindings/elixir | |
env: | |
HEX_API_KEY: ${{ secrets.HEX_API_KEY }} | |
upload-npm: | |
needs: | |
[ | |
build-macos-x86_64-extension, | |
build-macos-aarch64-extension, | |
build-linux-x86_64-extension, | |
] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v2 | |
- run: | | |
cp ${{ env.ARTIFACT-LINUX-X86_64-EXTENSION }}/*.so bindings/node/sqlite-vss-linux-x64/lib/ | |
cp ${{ env.ARTIFACT-MACOS-X86_64-EXTENSION }}/*.dylib bindings/node/sqlite-vss-darwin-x64/lib/ | |
cp ${{ env.ARTIFACT-MACOS-AARCH64-EXTENSION }}/*.dylib bindings/node/sqlite-vss-darwin-arm64/lib/ | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: "16" | |
registry-url: "https://registry.npmjs.org" | |
- name: Publish NPM sqlite-vss-linux-x64 | |
working-directory: bindings/node/sqlite-vss-linux-x64 | |
run: npm publish --access public | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
- name: Publish NPM sqlite-vss-darwin-x64 | |
working-directory: bindings/node/sqlite-vss-darwin-x64 | |
run: npm publish --access public | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
- name: Publish NPM sqlite-vss-darwin-arm64 | |
working-directory: bindings/node/sqlite-vss-darwin-arm64 | |
run: npm publish --access public | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
- name: Publish NPM sqlite-vss | |
working-directory: bindings/node/sqlite-vss | |
run: npm publish --access public | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
upload-pypi: | |
needs: | |
[ | |
build-linux-x86_64-python, | |
build-macos-x86_64-python, | |
build-macos-aarch64-python, | |
] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/download-artifact@v3 | |
with: | |
name: ${{ env.ARTIFACT-LINUX-X86_64-WHEELS }} | |
path: dist | |
- uses: actions/download-artifact@v3 | |
with: | |
name: ${{ env.ARTIFACT-MACOS-X86_64-WHEELS }} | |
path: dist | |
- uses: actions/download-artifact@v3 | |
with: | |
name: ${{ env.ARTIFACT-MACOS-AARCH64-WHEELS }} | |
path: dist | |
- uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
password: ${{ secrets.PYPI_API_TOKEN }} | |
skip-existing: true | |
upload-gem: | |
needs: | |
[ | |
build-macos-x86_64-extension, | |
build-macos-aarch64-extension, | |
build-linux-x86_64-extension, | |
] | |
permissions: | |
contents: write | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/download-artifact@v2 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: 3.2 | |
- run: | | |
rm bindings/ruby/lib/*.{dylib,so,dll} || true | |
cp ${{ env.ARTIFACT-MACOS-X86_64-EXTENSION }}/*.dylib bindings/ruby/lib | |
gem -C bindings/ruby build -o x86_64-darwin.gem sqlite_vss.gemspec | |
env: | |
PLATFORM: x86_64-darwin | |
- run: | | |
rm bindings/ruby/lib/*.{dylib,so,dll} || true | |
cp ${{ env.ARTIFACT-MACOS-AARCH64-EXTENSION }}/*.dylib bindings/ruby/lib | |
gem -C bindings/ruby build -o arm64-darwin.gem sqlite_vss.gemspec | |
env: | |
PLATFORM: arm64-darwin | |
- run: | | |
rm bindings/ruby/lib/*.{dylib,so,dll} || true | |
cp ${{ env.ARTIFACT-LINUX-X86_64-EXTENSION }}/*.so bindings/ruby/lib | |
gem -C bindings/ruby build -o x86_64-linux.gem sqlite_vss.gemspec | |
env: | |
PLATFORM: x86_64-linux | |
- run: | | |
gem push bindings/ruby/x86_64-darwin.gem | |
gem push bindings/ruby/arm64-darwin.gem | |
gem push bindings/ruby/x86_64-linux.gem | |
env: | |
GEM_HOST_API_KEY: ${{ secrets.GEM_HOST_API_KEY }} | |
upload-crate: | |
runs-on: ubuntu-latest | |
needs: [upload-extensions] | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
- run: cargo publish --no-verify | |
working-directory: ./bindings/rust | |
env: | |
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} |