-
Notifications
You must be signed in to change notification settings - Fork 76
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
build deb package
- Loading branch information
Showing
1 changed file
with
109 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
name: Build Extension .deb | ||
|
||
defaults: | ||
run: | ||
shell: bash | ||
working-directory: ./ | ||
|
||
on: | ||
release: | ||
types: | ||
- created | ||
|
||
jobs: | ||
build-deb: | ||
# source: https://github.com/supabase/pg_jsonschema/blob/29fcd5b23abe3dd6a78a490082f34113de7813a1/.github/workflows/release.yml | ||
name: release .deb | ||
if: github.event_name == 'release' | ||
strategy: | ||
matrix: | ||
extension_name: | ||
- pgmq | ||
package_name: | ||
- pgmq | ||
pgrx_version: | ||
- 0.11.3 | ||
postgres: | ||
- 14 | ||
- 15 | ||
- 16 | ||
box: | ||
- { runner: ubuntu-20.04, arch: amd64 } | ||
- { runner: arm-runner, arch: arm64 } | ||
runs-on: ${{ matrix.box.runner }} | ||
timeout-minutes: 90 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- name: build release artifacts | ||
run: | | ||
# Add postgres package repo | ||
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' | ||
wget -qO- https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo tee /etc/apt/trusted.gpg.d/pgdg.asc &>/dev/null | ||
sudo apt-get update | ||
sudo apt-get install -y --no-install-recommends git build-essential libpq-dev curl libreadline6-dev zlib1g-dev pkg-config cmake | ||
sudo apt-get install -y --no-install-recommends libreadline-dev zlib1g-dev flex bison libxml2-dev libxslt-dev libssl-dev libxml2-utils xsltproc ccache | ||
sudo apt-get install -y --no-install-recommends clang libclang-dev gcc tree | ||
sudo apt install -y postgresql-${{ matrix.postgres }} postgresql-server-dev-${{ matrix.postgres }} -y | ||
export PATH=$PATH:/usr/lib/postgresql/${{ matrix.postgres }}/bin | ||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path --profile minimal --default-toolchain stable && \ | ||
rustup --version && \ | ||
rustc --version && \ | ||
cargo --version | ||
source "$HOME/.cargo/env" | ||
pgrx_ver=$(grep '^pgrx' Cargo.toml | head -1 | awk -F '"' '{print $2}') | ||
cargo install cargo-pgrx --version ${pgrx_ver} --locked | ||
cargo pgrx init --pg${{ matrix.postgres }}=/usr/lib/postgresql/${{ matrix.postgres }}/bin/pg_config | ||
cargo pgrx package --pg-config $(cargo pgrx info pg-config ${{ matrix.postgres }}) | ||
# Create installable package | ||
mkdir archive | ||
cp `find target/release -type f -name "${{ matrix.extension_name }}*"` archive | ||
# name of the package directory before packaging | ||
package_dir=${{ matrix.extension_name }}-${{ github.ref_name }}-pg${{ matrix.postgres }}-${{ matrix.box.arch }}-linux-gnu | ||
# Copy files into directory structure | ||
mkdir -p ${package_dir}/usr/lib/postgresql/lib | ||
mkdir -p ${package_dir}/var/lib/postgresql/extension | ||
cp archive/*.so ${package_dir}/usr/lib/postgresql/lib | ||
cp archive/*.control ${package_dir}/var/lib/postgresql/extension | ||
cp archive/*.sql ${package_dir}/var/lib/postgresql/extension | ||
deb_version=$(grep '^version' Cargo.toml | head -1 | awk -F '"' '{print $2}') | ||
mkdir -p ${package_dir}/DEBIAN | ||
touch ${package_dir}/DEBIAN/control | ||
echo 'Package: ${{ matrix.package_name }}' >> ${package_dir}/DEBIAN/control | ||
echo 'Version:' ${deb_version} >> ${package_dir}/DEBIAN/control | ||
echo 'Architecture: ${{ matrix.box.arch }}' >> ${package_dir}/DEBIAN/control | ||
echo 'Maintainer: tembo' >> ${package_dir}/DEBIAN/control | ||
echo 'Description: A PostgreSQL queue extension' >> ${package_dir}/DEBIAN/control | ||
# Create deb package | ||
sudo chown -R root:root ${package_dir} | ||
sudo chmod -R 00755 ${package_dir} | ||
sudo dpkg-deb --build --root-owner-group ${package_dir} | ||
- name: Prepare release | ||
run: | | ||
deb_version=$(grep '^version' Cargo.toml | head -1 | awk -F '"' '{print $2}') | ||
echo UPLOAD_URL=$(curl --silent https://api.github.com/repos/${{ github.repository }}/releases/tags/v${deb_version} | jq .upload_url --raw-output) >> $GITHUB_ENV | ||
echo ASSET_NAME=${{ matrix.extension_name }}-${deb_version}-pg${{ matrix.postgres }}-${{ matrix.box.arch }}-linux-gnu.deb >> $GITHUB_ENV | ||
- name: Upload deb to github release | ||
uses: actions/upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
upload_url: ${{ env.UPLOAD_URL }} | ||
asset_path: ./${{ env.ASSET_NAME }} | ||
asset_name: ${{ env.ASSET_NAME }} | ||
asset_content_type: application/vnd.debian.binary-package |