-
-
Notifications
You must be signed in to change notification settings - Fork 1
169 lines (143 loc) · 4.94 KB
/
queries.yml
File metadata and controls
169 lines (143 loc) · 4.94 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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
name: Check queries
# This action runs:
# - When this file changes
# - When changes on code (src, include, sql)
# - When changes on data or testing scripts (tools/testers)
# - When the way the build changes (CMakeLists.txt)
# - On request
#
# using
# - postgres installed version on actions
on:
workflow_dispatch:
push:
paths:
- '.github/workflows/queries.yml'
- 'src/**'
- 'include/**'
- 'sql/**'
- 'docqueries/**'
- 'tools/testers/**'
- 'CMakeLists.txt'
- 'tools/scripts/get_signatures.sh'
branches-ignore:
- 'gh-pages'
tags: []
pull_request:
paths:
- '.github/workflows/queries.yml'
- 'src/**'
- 'include/**'
- 'sql/**'
- 'docqueries/**'
- 'tools/testers/**'
- 'CMakeLists.txt'
- 'tools/scripts/get_signatures.sh'
branches-ignore:
- 'gh-pages'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
env:
release: Release
os: ubuntu-latest
vroom: 1.12.0
jobs:
build:
name: Check Queries
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
release: [Debug, Release]
steps:
- uses: actions/checkout@v4
- name: Get postgres version
run: |
sudo service postgresql start
PGVER=$(psql --version | grep -Po '(?<=psql \(PostgreSQL\) )[^;]+(?=\.\d+ \()')
echo "PGVER=${PGVER}" >> $GITHUB_ENV
echo "PGPORT=5432" >> $GITHUB_ENV
echo "PGBIN=/usr/lib/postgresql/${PGVER}/bin" >> $GITHUB_ENV
echo "PGINC=/usr/include/postgresql/${PGVER}/server" >> $GITHUB_ENV
- name: 'Raise Priority for apt.postgresql.org'
run: |
cat << EOF >> ./pgdg.pref
Package: *
Pin: release o=apt.postgresql.org
Pin-Priority: 600
EOF
sudo mv ./pgdg.pref /etc/apt/preferences.d/
sudo apt update
- name: Add PostgreSQL APT repository
run: |
sudo apt-get purge postgresql-*
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg-testing main ${{ matrix.psql }}" > /etc/apt/sources.list.d/pgdg.list'
curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/apt.postgresql.org.gpg >/dev/null
- name: Install python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
postgresql-${PGVER} \
postgresql-${PGVER}-pgtap \
postgresql-server-dev-${PGVER}
# vroom dependencies
sudo apt-get install libssl-dev libasio-dev libglpk-dev
- name: Cache VROOM
id: cache-vroom
uses: actions/cache@v4
env:
cache-name: vroom
with:
path: vroom-${{ env.vroom }}
key: ${{ env.os }}-${{ env.cache-name }}-${{ env.vroom }}
- name: Checkout VROOM
if: steps.cache-vroom.outputs.cache-hit != 'true'
uses: actions/checkout@v4
with:
path: vroom-${{ env.vroom }}
repository: VROOM-Project/vroom
ref: "v${{ env.vroom }}"
submodules: true
- name: Build VROOM
if: steps.cache-vroom.outputs.cache-hit != 'true'
run: |
cd vroom-${{ env.vroom }}/src
USE_ROUTING=false make shared
- name: Configure and build
run: |
export PATH=/usr/lib/postgresql/${PGVER}/bin:$PATH
VROOM=$(pwd)/vroom-${{ env.vroom }}
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=${{ env.release }} \
-DPostgreSQL_INCLUDE_DIR=${PGINC} -DPOSTGRESQL_BIN=${PGBIN} \
-DVROOM_INSTALL_PATH=${VROOM} ..
make -j 4
sudo make install
- name: Create superuser
run: |
sudo service postgresql start
export PG_RUNNER_USER=`whoami`
sudo -u postgres psql -p ${PGPORT} -c "DROP DATABASE IF EXISTS \"${PG_RUNNER_USER}\";"
sudo -u postgres psql -p ${PGPORT} -c "DROP ROLE IF EXISTS \"${PG_RUNNER_USER}\";"
sudo -u postgres psql -p ${PGPORT} -c "CREATE ROLE \"${PG_RUNNER_USER}\" WITH LOGIN SUPERUSER;"
sudo -u postgres psql -p ${PGPORT} -c "CREATE DATABASE \"${PG_RUNNER_USER}\";"
echo "PG_RUNNER_USER=${PG_RUNNER_USER}" >> $GITHUB_ENV
- name: Test signature is up to date
run: |
sudo service postgresql start
tools/scripts/get_signatures.sh -p ${PGPORT}
git diff --name-only sql/sigs/*.sig
git diff --exit-code --quiet sql/sigs/*.sig
- name: Test documentation queries are up to date
continue-on-error: true
run: |
sudo service postgresql start
./tools/testers/doc_queries_generator.pl --pgver "${PGVER}" -U runner -p ${PGPORT}