Multiple Travis CI jobs (#575)

* Test with multiple versions of PostgreSQL in Travis

* Test with multiple implementations of Lisp in Travis
This commit is contained in:
Chris Bandy 2017-06-11 06:25:48 -05:00 committed by Dimitri Fontaine
parent 1a5194de1d
commit b59421cb48
2 changed files with 69 additions and 31 deletions

View File

@ -2,16 +2,67 @@
set -eu
pgdg_repository() {
lisp_install() {
case "$LISP" in
ccl)
ccl_checksum='08e885e8c2bb6e4abd42b8e8e2b60f257c6929eb34b8ec87ca1ecf848fac6d70'
ccl_version='1.11'
remote_file "/tmp/ccl-${ccl_version}.tgz" "https://github.com/Clozure/ccl/releases/download/v${ccl_version}/ccl-${ccl_version}-linuxx86.tar.gz" "$ccl_checksum"
tar --file "/tmp/ccl-${ccl_version}.tgz" --extract --exclude='.svn' --directory '/tmp'
sudo mv --no-target-directory '/tmp/ccl' '/usr/local/src/ccl'
sudo ln --no-dereference --force --symbolic "/usr/local/src/ccl/scripts/ccl64" '/usr/local/bin/ccl'
;;
sbcl)
sbcl_checksum='eb44d9efb4389f71c05af0327bab7cd18f8bb221fb13a6e458477a9194853958'
sbcl_version='1.3.18'
remote_file "/tmp/sbcl-${sbcl_version}.tgz" "http://prdownloads.sourceforge.net/sbcl/sbcl-${sbcl_version}-x86-64-linux-binary.tar.bz2" "$sbcl_checksum"
tar --file "/tmp/sbcl-${sbcl_version}.tgz" --extract --directory '/tmp'
( cd "/tmp/sbcl-${sbcl_version}-x86-64-linux" && sudo ./install.sh )
;;
*)
echo "Unrecognized Lisp: '$LISP'"
exit 1
;;
esac
}
pgdg_repositories() {
local sourcelist='sources.list.d/pgdg.list'
sudo tee "/etc/apt/$sourcelist" <<-repositories
deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main
deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg-testing main 10
repositories
sudo apt-key adv --keyserver 'hkp://ha.pool.sks-keyservers.net' --recv-keys 'ACCC4CF8'
echo deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main | sudo tee "/etc/apt/$sourcelist"
sudo apt-get -o Dir::Etc::sourcelist="$sourcelist" -o Dir::Etc::sourceparts='-' -o APT::Get::List-Cleanup='0' update
}
postgresql_configure() {
sudo tee /etc/postgresql/9.1/main/pg_hba.conf > /dev/null <<-config
postgresql_install() {
if [ -z "${PGVERSION:-}" ]; then
PGVERSION="$( psql -d postgres -XAtc "select regexp_replace(current_setting('server_version'), '[.][0-9]+$', '')" )"
else
sudo service postgresql stop
xargs sudo apt-get -y --purge remove <<-packages
libpq-dev
libpq5
postgresql
postgresql-client-common
postgresql-common
packages
sudo rm -rf /var/lib/postgresql
fi
xargs sudo apt-get -y install <<-packages
postgresql-${PGVERSION}
postgresql-${PGVERSION}-ip4r
packages
sudo tee /etc/postgresql/${PGVERSION}/main/pg_hba.conf > /dev/null <<-config
local all all trust
host all all 127.0.0.1/32 trust
config
@ -19,17 +70,6 @@ postgresql_configure() {
sudo service postgresql restart
}
postgresql_uninstall() {
sudo service postgresql stop
xargs sudo apt-get -y --purge remove <<-packages
libpq-dev
libpq5
postgresql
postgresql-client-common
postgresql-common
packages
}
remote_file() {
local target="$1" origin="$2" sum="$3"
local check="shasum --algorithm $(( 4 * ${#sum} )) --check"
@ -38,13 +78,4 @@ remote_file() {
curl --location --output "$target" "$origin" && $check <<< "$filesum"
}
sbcl_install() {
sbcl_checksum='eb44d9efb4389f71c05af0327bab7cd18f8bb221fb13a6e458477a9194853958'
sbcl_version='1.3.18'
remote_file "/tmp/sbcl-${sbcl_version}.tgz" "http://prdownloads.sourceforge.net/sbcl/sbcl-${sbcl_version}-x86-64-linux-binary.tar.bz2" "$sbcl_checksum"
tar --file "/tmp/sbcl-${sbcl_version}.tgz" --extract --directory '/tmp'
( cd "/tmp/sbcl-${sbcl_version}-x86-64-linux" && sudo ./install.sh )
}
$1

View File

@ -1,11 +1,18 @@
language: common-lisp
sudo: required
env:
matrix:
- LISP=ccl
- LISP=ccl PGVERSION=9.6
- LISP=sbcl
- LISP=sbcl PGVERSION=9.6
install:
- ./.travis.sh postgresql_uninstall
- ./.travis.sh pgdg_repository
- sudo apt-get install -y postgresql-9.1-ip4r unzip libsqlite3-dev gawk freetds-dev
- ./.travis.sh postgresql_configure
- ./.travis.sh sbcl_install
- ./.travis.sh lisp_install
- ./.travis.sh pgdg_repositories
- ./.travis.sh postgresql_install
- sudo apt-get install -y unzip libsqlite3-dev gawk freetds-dev
before_script:
- PGUSER=postgres createuser -S -R -D -E -l pgloader
@ -14,10 +21,10 @@ before_script:
- PGUSER=pgloader psql -d pgloader -c "create schema expected;"
- PGUSER=pgloader psql -d pgloader -c "create schema err;"
- make --version
- make
- make "CL=$LISP"
script:
- PGUSER=pgloader make check
- PGUSER=pgloader make "CL=$LISP" check
notifications:
email: