-
Notifications
You must be signed in to change notification settings - Fork 1.1k
136 lines (123 loc) · 5.36 KB
/
Copy pathapt-packages.yaml
File metadata and controls
136 lines (123 loc) · 5.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# Test installing our ubuntu and debian packages for the latest version.
name: "Packaging tests: APT"
"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
workflow_dispatch:
jobs:
apt_tests:
name: APT ${{ matrix.arch }} ${{ matrix.image }} PG${{ matrix.pg }} ${{ matrix.license }}
runs-on: ${{ matrix.runner }}
container:
image: ${{ matrix.image }}
env:
DEBIAN_FRONTEND: noninteractive
strategy:
fail-fast: false
matrix:
arch: [ "x86", "ARM" ]
image: [ "debian:12-slim", "debian:13-slim", "ubuntu:22.04", "ubuntu:24.04", "ubuntu:26.04" ]
pg: [ 15, 16, 17, 18 ]
license: [ "TSL", "Apache"]
include:
- license: Apache
pkg_suffix: "-oss"
- arch: "x86"
runner: "ubuntu-latest"
- arch: "ARM"
runner: "cloud-image-runner-ubuntu-24-arm64"
exclude:
- image: "ubuntu:26.04"
pg: 15
steps:
- name: Add repositories
timeout-minutes: 15
run: |
apt-get update
apt-get install -y wget lsb-release gnupg apt-transport-https sudo postgresql-common jq
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
if [ "${{ matrix.image }}" = "ubuntu:22.04" ]; then
wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | apt-key add -
else
wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | gpg --dearmor -o /etc/apt/trusted.gpg.d/timescale_timescaledb.gpg
fi
- name: Install timescaledb
timeout-minutes: 15
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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Get expected version
id: versions
run: |
# if run from a tag, check the repo's version, meant to be run after a release
# otherwise we rely on github's api for scheduled runs.
if [ "${{ github.ref_type }}" = "tag" ]; then
version=$(grep '^version = ' version.config | sed -e 's!version = !!')
else
version=$(wget -q https://api.github.com/repos/timescale/timescaledb/releases/latest -O - | jq -r .tag_name)
fi
echo "version=${version}"
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
# 2.27.0 is the first release for Ubuntu 26.04 so we can't test downgrades on it.
# we can remove the condition with 2.27.1 release
if: matrix.image != 'ubuntu:26.04'
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 = !!')
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
# Ubuntu 26.04 does not yet have toolkit
if: matrix.image != 'ubuntu:26.04'
timeout-minutes: 15
run: |
apt-get install -y --no-install-recommends \
timescaledb-toolkit-postgresql-${{ matrix.pg }}
- name: List available toolkit versions
run: |
apt-cache show timescaledb-toolkit-postgresql-${{ matrix.pg }} | grep -e Version: -e Depends: | tr '\n' ' ' | sed -e 's! Version: !\n!g' -e 's!Version: !!' -e 's!$!\n!'
- name: PostgreSQL log
if: always()
run: |
cat /var/log/postgresql/postgresql-${{ matrix.pg }}-main.log