forked from postgres-plr/plr
-
Notifications
You must be signed in to change notification settings - Fork 0
180 lines (167 loc) · 7.18 KB
/
build.yml
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
170
171
172
173
174
175
176
177
178
179
180
name: plr CI
run-name: plr CI - ${{ github.event.head_commit.message }}
on: [push, pull_request, workflow_dispatch]
jobs:
master:
runs-on: ubuntu-latest
steps:
- name: Echo site details
run: echo building master
- name: Checkout code
uses: actions/checkout@v3
- name: checkout postgres
run: |
sudo apt-get update -qq
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
sudo add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/"
sudo apt-get install -qq r-base-dev acl bison flex libssl-dev
sudo R --version
sudo /etc/init.d/postgresql stop
sudo apt-get remove --purge postgresql\*
sudo rm -rf /etc/postgresql /var/lib/postgresql
git clone --depth=1 https://github.com/postgres/postgres.git
pushd postgres
./configure
make -j4
sudo make install
export PATH=/usr/local/pgsql/bin:$PATH
initdb -D data
pg_ctl -D data -l logfile start
popd
- name: Script
run: |
export USE_PGXS=1
export PATH=/usr/local/pgsql/bin:$PATH
SHLIB_LINK=-lgcov PG_CPPFLAGS="-fprofile-arcs -ftest-coverage -O0" make
# USE_PGXS=1 is not required in Travis, and it is required in Github Actions
sudo USE_PGXS=1 PATH=/usr/local/pgsql/bin:$PATH make install
psql --version
R --version
make installcheck || (cat regression.diffs && false)
env:
USE_PGXS: 1
REL_17_:
runs-on: ubuntu-latest
steps:
- name: Echo site details
run: echo building master
- name: Checkout code
uses: actions/checkout@v4
- name: checkout postgres
run: |
set -x -v -e
sudo apt-get update -qq
sudo apt-get install -qq r-base-dev acl bison flex libssl-dev
sudo R --version
sudo /etc/init.d/postgresql stop
sudo apt-get remove --purge postgresql\*
sudo rm -rf /etc/postgresql /var/lib/postgresql
export RET=$(git ls-remote --tags https://github.com/postgres/postgres.git | cut -c 52- | grep -c 'REL_17_[0-9]')
if [ "${RET}" -gt "0" ]
then
echo -n "Release(s) are found. Taking the last Release . . . "
export GITTAG=$(git ls-remote --tags https://github.com/postgres/postgres.git | cut -c 52- | grep -e 'REL_17_[0-9]' | tail -n 1)
else
echo "Release(s) are not found. Trying Release Candidates."
export RET=$(git ls-remote --tags https://github.com/postgres/postgres.git | cut -c 52- | grep -c 'REL_17_RC[0-9]')
if [ "${RET}" -gt "0" ]
then
echo -n "Release Candidate(s) are found. Taking the last Release Candidate . . . "
export GITTAG=$(git ls-remote --tags https://github.com/postgres/postgres.git | cut -c 52- | grep -e 'REL_17_RC[0-9]' | tail -n 1)
else
echo "Release Candidate(s) are not found. Trying Betas."
export RET=$(git ls-remote --tags https://github.com/postgres/postgres.git | cut -c 52- | grep -c 'REL_17_BETA[0-9]')
if [ "${RET}" -gt "0" ]
then
echo -n "Beta(s) are found. Taking the last Beta . . . "
export GITTAG=$(git ls-remote --tags https://github.com/postgres/postgres.git | cut -c 52- | grep -e 'REL_17_BETA[0-9]' | tail -n 1)
else
echo "Beta(s) are not found."
fi
fi
fi
echo $GITTAG
git clone --branch $GITTAG --depth=1 https://github.com/postgres/postgres.git
pushd postgres
./configure
make
sudo make install
export PATH=/usr/local/pgsql/bin:$PATH
initdb -D data
pg_ctl -D data -l logfile start
popd
- name: Script
run: |
set -x -v -e
export USE_PGXS=1
export PATH=/usr/local/pgsql/bin:$PATH
SHLIB_LINK=-lgcov PG_CPPFLAGS="-fprofile-arcs -ftest-coverage -O0" make
# USE_PGXS=1 is not required in Travis, and it is required in Github Actions
sudo USE_PGXS=1 PATH=/usr/local/pgsql/bin:$PATH make install
psql --version
make installcheck || (cat regression.diffs && false)
env:
USE_PGXS: 1
build:
runs-on: ubuntu-latest
env:
PG: ${{ matrix.pg }}
strategy:
matrix:
include:
# SEEN JUL 2024
# Ubuntu 22.04 ubuntu-latest
# https://github.com/actions/runner-images
# jammy (22.04, LTS)
# https://wiki.postgresql.org/wiki/Apt
# https://apt.postgresql.org/pub/repos/apt/dists/
# https://apt.postgresql.org/pub/repos/apt/dists/jammy-pgdg/
# Source: postgresql-??
# https://apt.postgresql.org/pub/repos/apt/dists/jammy-pgdg/main/binary-amd64/Packages
- pg: 16
- pg: 15
- pg: 14
- pg: 13
- pg: 12
- pg: 11
- pg: 10
steps:
- name: Echo site details
run: echo PG $PG
- name: Checkout code
uses: actions/checkout@v4
- name: Before Script
run: |
echo Building plr with PostgreSQL $PG
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update -qq
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
sudo add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/"
sudo apt-get install -qq r-base-dev acl
sudo /etc/init.d/postgresql stop
sudo apt-get remove --purge postgresql\*
sudo rm -rf /etc/postgresql /var/lib/postgresql
sudo apt-get install postgresql-$PG
sudo apt-get install postgresql-server-dev-$PG
echo 'local all postgres trust' | sudo tee /etc/postgresql/$PG/main/pg_hba.conf > /dev/null
# Builds under "runner"
# Github Actions require elevated priviledges
sudo setfacl -Rm u:postgres:rwx,d:u:runner:rwx /home/runner
sudo pg_ctlcluster $PG main reload
- name: Script
run: |
sudo pg_lsclusters
export USE_PGXS=1
SHLIB_LINK=-lgcov PG_CPPFLAGS="-fprofile-arcs -ftest-coverage -O0" make
# USE_PGXS=1 is not required in Travis, and it is required in Github Actions
sudo USE_PGXS=1 make install
/usr/lib/postgresql/$PG/bin/pg_config
psql --version
R --version
make installcheck PGUSER=postgres || (cat regression.diffs && false)
- name: After Success
# success() returns true, when none of the previous steps have failed or been canceled.
if: ${{ success() }}
# Uploads code coverage to codecov.io
run: bash <(curl -s https://codecov.io/bash)