APT packages #1320
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
# Test installing our ubuntu and debian packages for the latest version. | |
name: APT packages | |
"on": | |
schedule: | |
# run daily 0:00 on main branch | |
- cron: '0 0 * * *' | |
pull_request: | |
paths: .github/workflows/apt-packages.yaml | |
push: | |
tags: | |
- '*' | |
branches: | |
- release_test | |
- trigger/package_test | |
jobs: | |
apt_tests: | |
name: APT ${{ matrix.image }} PG${{ matrix.pg }} ${{ matrix.license }} | |
runs-on: ubuntu-latest | |
container: | |
image: ${{ matrix.image }} | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
strategy: | |
fail-fast: false | |
matrix: | |
image: [ "debian:11-slim", "debian:12-slim", "ubuntu:20.04", "ubuntu:22.04", "ubuntu:24.04" ] | |
pg: [ 14, 15, 16, 17 ] | |
license: [ "TSL", "Apache"] | |
include: | |
- license: Apache | |
pkg_suffix: "-oss" | |
steps: | |
- name: Add repositories | |
run: | | |
apt-get update | |
apt-get install -y wget lsb-release gnupg apt-transport-https sudo postgresql-common | |
yes | /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh | |
image_type=$(lsb_release -i -s | tr '[:upper:]' '[:lower:]') | |
echo "deb https://packagecloud.io/timescale/timescaledb/${image_type}/ $(lsb_release -c -s) main" \ | |
> /etc/apt/sources.list.d/timescaledb.list | |
wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | apt-key add - | |
- name: Install timescaledb | |
run: | | |
apt-get update | |
apt-get install -y --no-install-recommends \ | |
timescaledb-2${{ matrix.pkg_suffix }}-postgresql-${{ matrix.pg }} timescaledb-tools | |
timescaledb-tune --quiet --yes | |
- name: List available versions | |
run: | | |
apt-cache show timescaledb-2${{ matrix.pkg_suffix }}-postgresql-${{ matrix.pg }} \ | |
| grep -e Version: -e Depends: | tr '\n' ' ' | sed -e 's! Version: !\n!g' -e 's!Version: !!' -e 's!$!\n!' | |
- name: Show files in package | |
run: | | |
dpkg -L timescaledb-2${{ matrix.pkg_suffix }}-postgresql-${{ matrix.pg }} | |
- uses: actions/checkout@v4 | |
- name: Read versions | |
id: versions | |
run: | | |
# read expected version from version.config | |
# version will only be a proper version in a release branch so we use update_from_version | |
# as fallback for main | |
if grep '^version = [0-9.]\+$' version.config; then | |
version=$(grep '^version = ' version.config | sed -e 's!^version = !!') | |
else | |
version=$(grep '^update_from_version = ' version.config | sed -e 's!^update_from_version = !!') | |
fi | |
echo "version=${version}" >>$GITHUB_OUTPUT | |
- name: Test Installation | |
run: | | |
pg_ctlcluster ${{ matrix.pg }} main start | |
sudo -u postgres psql -X -c "CREATE EXTENSION timescaledb" \ | |
-c "SELECT extname,extversion,version() FROM pg_extension WHERE extname='timescaledb'" | |
installed_version=$(sudo -u postgres psql -X -t \ | |
-c "SELECT extversion FROM pg_extension WHERE extname='timescaledb';" | sed -e 's! !!g') | |
if [ "${{ steps.versions.outputs.version }}" != "$installed_version" ];then | |
false | |
fi | |
- name: Test Downgrade | |
if: matrix.pg != '17' | |
run: | | |
# Since this runs nightly on main we have to get the previous version | |
# from the last released version and not current branch. | |
prev_version=$(wget --quiet -O - \ | |
https://raw.githubusercontent.com/timescale/timescaledb/${{ steps.versions.outputs.version }}/version.config \ | |
| grep update_from_version | sed -e 's!update_from_version = !!') | |
sudo -u postgres psql -X -c "ALTER EXTENSION timescaledb UPDATE TO '${prev_version}'" \ | |
-c "SELECT extname,extversion,version() FROM pg_extension WHERE extname='timescaledb'" | |
installed_version=$(sudo -u postgres psql -X -t \ | |
-c "SELECT extversion FROM pg_extension WHERE extname='timescaledb';" | sed -e 's! !!g') | |
if [ "$prev_version" != "$installed_version" ];then | |
false | |
fi | |
- name: PostgreSQL log | |
if: always() | |
run: | | |
cat /var/log/postgresql/postgresql-${{ matrix.pg }}-main.log | |