Skip to content

Packaging tests: RPM #2235

Packaging tests: RPM

Packaging tests: RPM #2235

Workflow file for this run

# Test rpm package installation for latest version
name: "Packaging tests: RPM"
"on":
schedule:
# run daily 0:00 on main branch
- cron: '0 0 * * *'
pull_request:
paths: .github/workflows/rpm-packages.yaml
push:
tags:
- '*'
branches:
- release_test
- trigger/package_test
workflow_dispatch:
jobs:
rpm_tests:
name: RPM ${{ matrix.image }} PG${{ matrix.pg }} ${{ matrix.license }}
runs-on: ubuntu-latest
container:
image: ${{ matrix.image }}
strategy:
fail-fast: false
matrix:
image: [ "rockylinux:8", "rockylinux:9" ]
pg: [ 15, 16, 17, 18 ]
license: [ "TSL", "Apache"]
include:
- license: Apache
pkg_suffix: "-oss"
exclude:
- image: "rockylinux:8"
pg: 18
steps:
- name: Add postgres repositories
run: "yum install -y \"https://download.postgresql.org/pub/repos/yum/reporpms/\
EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm\""
- name: Add other repositories
run: |
tee /etc/yum.repos.d/timescale_timescaledb.repo <<EOL
[timescale_timescaledb]
name=timescale_timescaledb
baseurl=https://packagecloud.io/timescale/timescaledb/el/$(rpm -E %{rhel})/\$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/timescale/timescaledb/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
EOL
- name: Install timescaledb
run: |
yum update -y
if [[ "$(rpm -E %{rhel})" -eq "8" ]]; then dnf -qy module disable postgresql; fi
yum install -y timescaledb-2${{ matrix.pkg_suffix }}-postgresql-${{ matrix.pg }} sudo wget jq
sudo -u postgres /usr/pgsql-${{ matrix.pg }}/bin/initdb -D /var/lib/pgsql/${{ matrix.pg }}/data
timescaledb-tune --quiet --yes --pg-config /usr/pgsql-${{ matrix.pg }}/bin/pg_config
- name: List available versions
run: |
yum --showduplicates list timescaledb-2${{ matrix.pkg_suffix }}-postgresql-${{ matrix.pg }}
- name: Show files in package
run: |
rpm -ql timescaledb-2${{ matrix.pkg_suffix }}-postgresql-${{ matrix.pg }}
- uses: actions/checkout@v3
- name: Get version of latest release
id: versions
run: |
version=$(wget -q https://api.github.com/repos/timescale/timescaledb/releases/latest -O - | jq -r .tag_name)
echo "version=${version}"
echo "version=${version}" >>$GITHUB_OUTPUT
- name: Test Installation
run: |
sudo -u postgres /usr/pgsql-${{ matrix.pg }}/bin/pg_ctl -D /var/lib/pgsql/${{ matrix.pg }}/data start
while ! /usr/pgsql-${{ matrix.pg }}/bin/pg_isready; do sleep 1; done
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 != '18' # pg18 only has 1 version so downgrade is not possible
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 previous_version | sed -e 's!previous_version = !!')
yum downgrade -y timescaledb-2${{ matrix.pkg_suffix }}-postgresql-${{ matrix.pg }}-${prev_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: Install toolkit
if: matrix.pg != 17 && matrix.image != 'rockylinux:9' # timescaledb-toolkit currently not available for PG17 and Rocky9
run: |
yum install -y timescaledb-toolkit-postgresql-${{ matrix.pg }}
- name: List available toolkit versions
if: matrix.pg != 17 && matrix.image != 'rockylinux:9' # timescaledb-toolkit currently not available for PG17 and Rocky9
run: |
yum --showduplicates list timescaledb-toolkit-postgresql-${{ matrix.pg }}