Packaging tests: RPM #2235
This file contains hidden or 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 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 }} | |