Skip to content

Implement event trigger to remove jobs from vectorize.job upon table deletion #789

Implement event trigger to remove jobs from vectorize.job upon table deletion

Implement event trigger to remove jobs from vectorize.job upon table deletion #789

Workflow file for this run

name: PG Vectorize Extension
defaults:
run:
shell: bash
working-directory: ./extension
on:
pull_request:
branches:
- main
paths-ignore:
- "README.md"
- docs/**
push:
branches:
- main
paths-ignore:
- "README.md"
- docs/**
release:
types:
- created
jobs:
dependencies:
name: Install dependencies
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# rust needed to install trunk
- name: Install Rust stable toolchain
uses: dtolnay/rust-toolchain@stable
- name: Install stoml and pg-trunk
shell: bash
run: |
set -xe
wget https://github.com/freshautomations/stoml/releases/download/v0.7.1/stoml_linux_amd64 &> /dev/null
mv stoml_linux_amd64 stoml
chmod +x stoml
sudo mv stoml /usr/local/bin/
cargo install pg-trunk
- name: Cache binaries
uses: actions/cache@v2
with:
path: |
/usr/local/bin/stoml
~/.cargo/bin/trunk
key: ${{ runner.os }}-bins-${{ github.sha }}
restore-keys: |
${{ runner.os }}-bins-
lint:
name: Run linters
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust minimal nightly with clippy and rustfmt
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
prefix-key: "pg-vectorize-extension-lint"
workspaces: pg-vectorize/
# Additional directories to cache
cache-directories: /home/runner/.pgrx
- uses: ./.github/actions/pgx-init
with:
working-directory: ./extension
- name: Cargo format
run: cargo fmt --all --check
- name: Clippy
run: cargo clippy
test-core:
runs-on: ubuntu-24.04
services:
vector-serve:
image: quay.io/tembo/vector-serve:latest
ports:
- 3000:3000
steps:
- uses: actions/checkout@v4
- name: Install Rust stable toolchain
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
prefix-key: "extension-test"
workspaces: |
vectorize
# Additional directories to cache
cache-directories: |
/home/runner/.pgrx
- name: Install sys dependencies
run: |
sudo apt-get update && sudo apt-get install -y postgresql postgresql-contrib libopenblas-dev libreadline-dev
- name: Test Core
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
CO_API_KEY: ${{ secrets.CO_API_KEY }}
PORTKEY_API_KEY: ${{ secrets.PORTKEY_API_KEY }}
PORTKEY_VIRTUAL_KEY_OPENAI: ${{ secrets.PORTKEY_VIRTUAL_KEY_OPENAI }}
VOYAGE_API_KEY: ${{ secrets.VOYAGE_API_KEY }}
run: |
cd ../core && cargo test
test:
name: Run tests
needs: dependencies
runs-on: ubuntu-24.04
services:
# Label used to access the service container
vector-serve:
image: quay.io/tembo/vector-serve:latest
ports:
- 3000:3000
steps:
- uses: actions/checkout@v4
- name: Install Rust stable toolchain
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
prefix-key: "extension-test"
workspaces: |
vectorize
# Additional directories to cache
cache-directories: |
/home/runner/.pgrx
- name: Install sys dependencies
run: |
sudo apt-get update && sudo apt-get install -y postgresql-server-dev-16 libopenblas-dev libreadline-dev
- uses: ./.github/actions/pgx-init
with:
working-directory: ./extension
- name: Restore cached binaries
uses: actions/cache@v2
with:
path: |
/usr/local/bin/stoml
~/.cargo/bin/trunk
key: ${{ runner.os }}-bins-${{ github.sha }}
restore-keys: |
${{ runner.os }}-bins-
- name: setup-tests
run: |
make setup
- name: unit-test
run: |
make test-unit
- name: integration-test
env:
HF_API_KEY: ${{ secrets.HF_API_KEY }}
CO_API_KEY: ${{ secrets.CO_API_KEY }}
PORTKEY_API_KEY: ${{ secrets.PORTKEY_API_KEY }}
PORTKEY_VIRTUAL_KEY_OPENAI: ${{ secrets.PORTKEY_VIRTUAL_KEY_OPENAI }}
VOYAGE_API_KEY: ${{ secrets.VOYAGE_API_KEY }}
run: |
echo "\q" | make run
make test-integration
publish:
if: github.event_name == 'release'
name: trunk publish
runs-on: ubuntu-24.04
strategy:
matrix:
pg-version: [14, 15, 16]
steps:
- uses: actions/checkout@v2
- name: Install Rust stable toolchain
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
prefix-key: "pg-vectorize-extension-test"
workspaces: pg-vectorize
# Additional directories to cache
cache-directories: /home/runner/.pgrx
- name: Install stoml and pg-trunk
shell: bash
run: |
set -xe
wget https://github.com/freshautomations/stoml/releases/download/v0.7.1/stoml_linux_amd64 &> /dev/null
mv stoml_linux_amd64 stoml
chmod +x stoml
sudo mv stoml /usr/local/bin/
cargo install pg-trunk
- name: trunk build
working-directory: ./extension
# trunk does not support path dependencies in Cargo.toml that are not within the current working directory
# therefore, we need to move the core crate into the extension directory for the build
run: |
mv ../core ./core
sed -i '0,/..\/core/s//.\/core/' Cargo.toml
~/.cargo/bin/trunk build --pg-version ${{ matrix.pg-version }}
- name: trunk publish
working-directory: ./extension
env:
TRUNK_API_TOKEN: ${{ secrets.TRUNK_AUTH_TOKEN }}
run: ~/.cargo/bin/trunk publish