From 0415357ede1fc2f2e1ebd543a96551fcd8a046fe Mon Sep 17 00:00:00 2001 From: Paul B Date: Wed, 6 May 2020 17:04:20 +0200 Subject: [PATCH] tests: running tests on all supported PG versions --- .travis.yml | 20 ++++++++++++++++---- meta/main.yml | 1 + tasks/postgres-user.yml | 6 ++++++ test/main.yml | 32 +++++++++++++++++--------------- test/requirements.txt | 3 ++- test/requirements.yml | 2 +- 6 files changed, 43 insertions(+), 21 deletions(-) diff --git a/.travis.yml b/.travis.yml index ddf6fb0..c84bc80 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,20 @@ --- +dist: bionic language: python -python: "3.5" +python: "3.8" -# Use the new container infrastructure -sudo: false +# Test on all supported PG versions on both debian stretch and debian buster +env: +- POSTGRESQL_VERSION=9.5 DEBIAN_RELEASE=stretch +- POSTGRESQL_VERSION=9.6 DEBIAN_RELEASE=stretch +- POSTGRESQL_VERSION=10 DEBIAN_RELEASE=stretch +- POSTGRESQL_VERSION=11 DEBIAN_RELEASE=stretch +- POSTGRESQL_VERSION=12 DEBIAN_RELEASE=stretch +- POSTGRESQL_VERSION=9.5 DEBIAN_RELEASE=buster +- POSTGRESQL_VERSION=9.6 DEBIAN_RELEASE=buster +- POSTGRESQL_VERSION=10 DEBIAN_RELEASE=buster +- POSTGRESQL_VERSION=11 DEBIAN_RELEASE=buster +- POSTGRESQL_VERSION=12 DEBIAN_RELEASE=buster # Install pip addons: @@ -17,7 +28,7 @@ services: install: # Install ansible - - pip install ansible docker-py docker + - pip install -r test/requirements.txt # Check ansible version - ansible --version - ansible-galaxy install -r test/requirements.yml -p test/roles/ @@ -26,6 +37,7 @@ script: # Basic role syntax check - ansible-playbook test/main.yml -i test/hosts --syntax-check # Run the tests + - ansible-playbook test/main.yml -i test/hosts -e "postgres_version=${POSTGRESQL_VERSION}" -e "debian_release=${DEBIAN_RELEASE}" # FAILS - ansible-playbook test/main.yml -i test/hosts # Even if Docker and docker-py module are present, the tests fail on Travis # The error on Travis is: diff --git a/meta/main.yml b/meta/main.yml index 2d7ff61..659083e 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -14,6 +14,7 @@ galaxy_info: versions: - jessie - stretch + - buster galaxy_tags: ['postgresql', 'cluster', 'ha', 'database', 'replication'] diff --git a/tasks/postgres-user.yml b/tasks/postgres-user.yml index fcef9fc..000ea80 100644 --- a/tasks/postgres-user.yml +++ b/tasks/postgres-user.yml @@ -8,6 +8,12 @@ check_mode: no changed_when: false +- name: "Install required packages for 'postgres_user' ansible module" + apt: + name: + - libpq-dev + - python-psycopg2 + - name: Create PostgreSQL user become: true become_user: postgres diff --git a/test/main.yml b/test/main.yml index a4834be..6a819d8 100644 --- a/test/main.yml +++ b/test/main.yml @@ -2,8 +2,7 @@ - name: Bring up docker containers hosts: localhost vars: &common_vars - postgres_version: 11 - postgres_barman_directory: 'test-postgres-11' + postgres_barman_directory: "test-postgres-{{ postgres_version }}" postgres_barman_server: postgres_barman barman_rsync_password: "secret_rsync" barman_rsync_allowed_hosts: 172.17.0.0/24 @@ -15,25 +14,28 @@ range: 172.17.0.0/24 inventory: - name: "{{ postgres_barman_server }}" - image: "python:3.7-stretch" + image: "python:3.7-{{ debian_release }}" - name: postgres_one - image: "python:3.7-stretch" + image: "python:3.7-{{ debian_release }}" links: - "{{ postgres_barman_server }}" - name: postgres_two - image: "python:3.7-stretch" + image: "python:3.7-{{ debian_release }}" links: - "{{ postgres_barman_server }}" - postgres_one - name: postgres_three - image: "python:3.7-stretch" + image: "python:3.7-{{ debian_release }}" links: - "{{ postgres_barman_server }}" - postgres_one roles: - role: provision_docker - provision_docker_inventory: "{{inventory}}" - provision_docker_use_docker_connection: true + vars: + provision_docker_inventory: "{{inventory}}" + provision_docker_use_docker_connection: true + ansible_connection: local + ansible_python_interpreter: "{{ansible_playbook_python}}" tasks: - name: Group primary add_host: @@ -63,7 +65,7 @@ extensions: - description: PostGis apt_deps: - - "postgresql-{{ postgres_version }}-postgis" + - "postgresql-{{ postgres_version }}-postgis-3" names: - postgis - postgis_topology @@ -129,13 +131,13 @@ hosts: primary:secondary connection: docker vars: - postgres_listen_addresses: "{{ hostvars[inventory_hostname].ansible_default_ipv4.address }}" + postgres_listen_addresses: ["{{ hostvars[inventory_hostname].ansible_default_ipv4.address }}"] pre_tasks: &pre_tasks - - name: "Build hosts file" - shell: 'echo "{{ hostvars[inventory_hostname].ansible_default_ipv4.address }} {{inventory_hostname}}" >> /etc/hosts' - when: hostvars[inventory_hostname].ansible_default_ipv4.address is defined + - name: "Build hosts file" + shell: 'echo "{{ hostvars[inventory_hostname].ansible_default_ipv4.address }} {{inventory_hostname}}" >> /etc/hosts' + when: hostvars[inventory_hostname].ansible_default_ipv4.address is defined - - debug: msg="Running on host {{inventory_hostname}} ({{ hostvars[inventory_hostname].ansible_default_ipv4.address }})" + - debug: msg="Running on host {{inventory_hostname}} ({{ hostvars[inventory_hostname].ansible_default_ipv4.address }})" roles: - { role: ansible-postgresql-role, tags: ['postgres'] } tasks: @@ -161,7 +163,7 @@ connection: docker hosts: primary:secondary vars: - postgres_listen_addresses: "{{ hostvars[inventory_hostname].ansible_default_ipv4.address }}" + postgres_listen_addresses: ["{{ hostvars[inventory_hostname].ansible_default_ipv4.address }}"] pre_tasks: *pre_tasks roles: - { role: ansible-postgresql-role, tags: ['postgres'] } diff --git a/test/requirements.txt b/test/requirements.txt index d2cbb1a..3dfa5a6 100644 --- a/test/requirements.txt +++ b/test/requirements.txt @@ -1 +1,2 @@ -docker-py +ansible +docker diff --git a/test/requirements.yml b/test/requirements.yml index f9d7099..7c41335 100644 --- a/test/requirements.yml +++ b/test/requirements.yml @@ -1,6 +1,6 @@ - src: chrismeyersfsu.provision_docker name: provision_docker - version: 7a6243dfcf69f9d262877eca487bc14b62ba6960 + version: d68ce0aa486eff7669011ee2f9eaf68b95184ce1 - src: trainline-eu.ansible_barman_role name: barman version: 1.1.0 -- 2.41.0