Skip to content

Commit

Permalink
Hi pg_tier is here
Browse files Browse the repository at this point in the history
  • Loading branch information
shhnwz committed Apr 12, 2024
1 parent 1ef719e commit 94c3111
Show file tree
Hide file tree
Showing 8 changed files with 4,004 additions and 0 deletions.
46 changes: 46 additions & 0 deletions .github/actions/pgx-init/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: 'pgrx initialization'
description: 'Initialize PGRX if it is a dependency, otherwise do nothing.'
inputs:
working-directory:
description: 'The directory in which there is a pgrx extension project'
required: true
outputs: {}
runs:
using: "composite"
steps:
- name: Install TOML parser
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/
- name: setup pgrx
shell: bash
id: pgrx_install
working-directory: ${{ inputs.working-directory }}
run: |
pgrx_version=$(stoml Cargo.toml dependencies.pgrx)
if [ -z "${pgrx_version}" ]; then
echo "pgrx is not a dependency: skipping"
echo "skip=true" >> $GITHUB_OUTPUT
else
cargo install --version ${pgrx_version} cargo-pgrx
echo "skip=false" >> $GITHUB_OUTPUT
fi
- name: pgrx init
shell: bash
if: steps.pgrx_install.outputs.skip == 'false'
working-directory: ${{ inputs.working-directory }}
run: |
set -x
pg_version=$(stoml Cargo.toml features.default)
# pgrx init can take a long time, and it re-compiles postgres even when there
# is a cached version. So, we can just check for the directory and
cat /home/runner/.pgrx/config.toml || true
if find /home/runner/.pgrx | grep $(awk -F "=" '/${pg_version}/ {print $2}' /home/runner/.pgrx/config.toml | tr -d '"'); then
echo "Already found pgrx is initialized. Skipping 'cargo pgrx init' command."
else
cargo pgrx init --${pg_version} download || true
fi
188 changes: 188 additions & 0 deletions .github/workflows/extension_ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
name: PG Tier Extension

defaults:
run:
shell: bash
working-directory: ./

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-22.04
steps:
- uses: actions/checkout@v2

# rust needed to install trunk
- name: Install Rust stable toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
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: 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-22.04
steps:
- uses: actions/checkout@v3
- name: Install Rust minimal nightly with clippy and rustfmt
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly
components: rustfmt, clippy
- uses: Swatinem/rust-cache@v2
with:
prefix-key: "pg-tier-extension-lint"
workspaces: pg-tier/
# Additional directories to cache
cache-directories: /home/runner/.pgrx
- uses: ./.github/actions/pgx-init
with:
working-directory: ./
- name: Cargo format
run: cargo fmt --all --check
- name: Clippy
run: cargo clippy

publish:
if: github.event_name == 'release'
name: trunk publish
runs-on: ubuntu-22.04
strategy:
matrix:
pg-version: [14, 15, 16]
steps:
- uses: actions/checkout@v2
- name: Install Rust stable toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
- uses: Swatinem/rust-cache@v2
with:
prefix-key: "pg-tier-extension-test"
workspaces: pg-tier
# 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: ./
# 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: ./
env:
TRUNK_API_TOKEN: ${{ secrets.TRUNK_AUTH_TOKEN }}
run: ~/.cargo/bin/trunk publish
build_and_push:
name: Build and push images
needs:
- publish
env:
TARGET_PLATFORMS: linux/amd64,linux/arm64
runs-on:
- self-hosted
- dind
- large-8x8
outputs:
short_sha: ${{ steps.versions.outputs.SHORT_SHA }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- 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/
- name: Set version strings
id: versions
run: |
echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
echo "TAG_VER=$(/usr/local/bin/stoml Cargo.toml package.version)" >> $GITHUB_OUTPUT
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to Quay
uses: docker/login-action@v2
with:
registry: quay.io/tembo
username: ${{ secrets.QUAY_USER_TEMBO }}
password: ${{ secrets.QUAY_PASSWORD_TEMBO }}

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push
uses: docker/build-push-action@v5
with:
file: ./images/tier-pg/Dockerfile
context: .
platforms: linux/amd64, linux/arm64
push: true
tags: |
quay.io/tembo/tier-pg:v${{ steps.versions.outputs.TAG_VER }}
quay.io/tembo/tier-pg:latest
ghcr.io/tembo-io/tier-pg-v${{ steps.versions.outputs.TAG_VER }}
ghcr.io/tembo-io/tier-pg:latest
Loading

0 comments on commit 94c3111

Please sign in to comment.