Skip to content

Commit 1f86015

Browse files
committed
basic integration with Travis CI
1 parent 8829bc2 commit 1f86015

File tree

7 files changed

+112
-0
lines changed

7 files changed

+112
-0
lines changed

.dockerignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
*.gcno
2+
*.gcda
3+
*.gcov
4+
*.so

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,5 @@ lib*.pc
3838
/Debug/
3939
/Release/
4040
/tmp_install/
41+
42+
Dockerfile

.travis.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
sudo: required
2+
3+
language: c
4+
5+
services:
6+
- docker
7+
8+
install:
9+
- ./mk_dockerfile.sh
10+
- docker-compose build
11+
12+
script:
13+
- docker-compose run $(bash <(curl -s https://codecov.io/env)) tests
14+
15+
notifications:
16+
email:
17+
on_success: change
18+
on_failure: always
19+
20+
env:
21+
- PG_VERSION=10
22+
- PG_VERSION=9.6
23+
- PG_VERSION=9.5

Dockerfile.tmpl

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
FROM postgres:${PG_VERSION}-alpine
2+
3+
# Install dependencies
4+
RUN apk add --no-cache clang-analyzer clang perl make musl-dev gcc curl;
5+
6+
# Environment
7+
ENV LANG=C.UTF-8 PGDATA=/pg/data
8+
9+
# Make directories
10+
RUN mkdir -p ${PGDATA} && \
11+
mkdir -p /pg/testdir
12+
13+
# Grant privileges
14+
RUN chown postgres:postgres ${PGDATA} && \
15+
chown postgres:postgres /pg/testdir && \
16+
chmod a+rwx /usr/local/lib/postgresql && \
17+
chmod a+rwx /usr/local/share/postgresql/extension
18+
19+
COPY run_tests.sh /run.sh
20+
RUN chmod 755 /run.sh
21+
22+
ADD . /pg/testdir
23+
WORKDIR /pg/testdir
24+
25+
USER postgres
26+
ENTRYPOINT /run.sh

docker-compose.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
tests:
2+
build: .

mk_dockerfile.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
set -eu
2+
sed -e 's/${PG_VERSION}/'${PG_VERSION}/g Dockerfile.tmpl > Dockerfile

run_tests.sh

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#!/usr/bin/env bash
2+
3+
# Copyright (c) 2018, Postgres Professional
4+
5+
6+
set -ux
7+
8+
9+
status=0
10+
11+
# perform static analyzis
12+
scan-build --status-bugs make USE_PGXS=1 || status=$?
13+
14+
# something's wrong, exit now!
15+
if [ $status -ne 0 ]; then exit 1; fi
16+
17+
# don't forget to "make clean"
18+
make USE_PGXS=1 clean
19+
20+
# initialize database
21+
initdb -D $PGDATA
22+
23+
# build and install extension (using PG_CPPFLAGS and SHLIB_LINK for gcov)
24+
make USE_PGXS=1 PG_CPPFLAGS="-coverage" SHLIB_LINK="-coverage"
25+
make USE_PGXS=1 install
26+
27+
# restart cluster 'test'
28+
echo "port = 55435" >> $PGDATA/postgresql.conf
29+
pg_ctl start -l /tmp/postgres.log -w || status=$?
30+
31+
# something's wrong, exit now!
32+
if [ $status -ne 0 ]; then cat /tmp/postgres.log; exit 1; fi
33+
34+
# run regression tests
35+
export PG_REGRESS_DIFF_OPTS="-w -U3" # for alpine's diff (BusyBox)
36+
PGPORT=55435 make USE_PGXS=1 installcheck || status=$?
37+
38+
# show diff if it exists
39+
if test -f regression.diffs; then cat regression.diffs; fi
40+
41+
# something's wrong, exit now!
42+
if [ $status -ne 0 ]; then exit 1; fi
43+
44+
# generate *.gcov files
45+
rm -f *serialize.{gcda,gcno}
46+
gcov *.c *.h
47+
48+
49+
set +ux
50+
51+
52+
# send coverage stats to Codecov
53+
bash <(curl -s https://codecov.io/bash)

0 commit comments

Comments
 (0)