1
1
mirror of https://github.com/yandex/pgmigrate.git synced 2024-09-19 08:07:22 +03:00

python 3.6 instead of puthon3.5

postgresql now uses official docker image (and not installs into python container)
docker-compose file added
This commit is contained in:
p0123n 2017-03-13 14:44:14 +03:00
parent 21849625b2
commit d9a5eff1fc
8 changed files with 58 additions and 30 deletions

View File

@ -1,7 +1,21 @@
sudo: required
services:
- docker
- docker
before_script:
- docker-compose build
script:
- make test
- docker-compose run --rm pgmigrate
- docker-compose stop
env:
DOCKER_COMPOSE_VERSION: 1.11.2
before_install:
- sudo rm /usr/local/bin/docker-compose
- curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose
- chmod +x docker-compose
- sudo mv docker-compose /usr/local/bin

View File

@ -1,31 +1,18 @@
# vim:set ft=dockerfile:
FROM ubuntu:xenial
# explicitly set user/group IDs
RUN groupadd -r postgres --gid=999 && useradd -r -d /var/lib/postgresql -g postgres --uid=999 postgres
FROM python:3.6
# make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default
RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \
&& localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
ENV LANG en_US.utf8
RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8
ENV PG_MAJOR 9.6
RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list
RUN apt-get update \
&& apt-get install -y postgresql-common \
sudo \
libpq-dev \
python-pip \
python3.5-dev \
python2.7-dev \
postgresql-$PG_MAJOR \
postgresql-contrib-$PG_MAJOR \
&& pip install tox
COPY ./ /dist
WORKDIR /dist
CMD ["/dist/run_test.sh"]

View File

@ -1,5 +1,7 @@
.PHONY: test
test:
docker build -t pgmigrate .
docker run -t pgmigrate
docker-compose build
docker-compose run --rm pgmigrate
docker-compose stop

29
docker-compose.yml Normal file
View File

@ -0,0 +1,29 @@
version: '2.1'
services:
postgres:
image: postgres:alpine
container_name: postgres
environment:
TERM: "rxvt"
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "postgres"
restart: always
pgmigrate:
build:
context: .
dockerfile: Dockerfile
container_name: pgmigrate
volumes:
- ./:/dist
environment:
TERM: "rxvt"
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "postgres"
working_dir: /dist
links:
- postgres
depends_on:
- postgres
restart: always

View File

@ -6,11 +6,11 @@ from behave import given
@given('database and connection')
def step_impl(context):
context.conn = None
conn = psycopg2.connect('dbname=postgres')
conn = psycopg2.connect('dbname=postgres user=postgres password=postgres host=postgres port=5432')
conn.autocommit = True
cur = conn.cursor()
cur.execute("select pg_terminate_backend(pid) " +
"from pg_stat_activity where datname='pgmigratetest'")
cur.execute('drop database if exists pgmigratetest')
cur.execute('create database pgmigratetest')
context.conn = psycopg2.connect('dbname=pgmigratetest')
context.conn = psycopg2.connect('dbname=pgmigratetest user=postgres password=postgres host=postgres port=5432')

View File

@ -10,7 +10,7 @@ from behave import given, then, when
def run_pgmigrate(migr_dir, args):
cmd = ['coverage', 'run', '-p', '--include=pgmigrate.py',
'./pgmigrate.py', '-vvv', '-d', migr_dir,
'-c', 'dbname=pgmigratetest'] + str(args).split()
'-c', 'dbname=pgmigratetest user=postgres password=postgres host=postgres port=5432'] + str(args).split()
p = subprocess.Popen(cmd, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)

View File

@ -2,9 +2,5 @@
set -e
chown -R postgres:postgres /dist
mkdir -p /var/log/pogsgresql
chown postgres:postgres /var/log/pogsgresql
sudo -u postgres /usr/lib/postgresql/9.6/bin/pg_ctl -D /etc/postgresql/9.6/main -l /var/log/pogsgresql/postgresql-9.6-main.log start
cd /dist
sudo -u postgres -i tox -c /dist/tox.ini
tox -c /dist/tox.ini

View File

@ -4,7 +4,7 @@
# and then run "tox" from this directory.
[tox]
envlist = py27, py35, flake8, pylint
envlist = py27, py36, flake8, pylint
[testenv:py27]
whitelist_externals = rm
@ -18,7 +18,7 @@ deps = behave
importlib
coverage
[testenv:py35]
[testenv:py36]
whitelist_externals = rm
commands = rm -rf htmlcov
coverage erase