From 11ae4742007e4bd9027cc0c23b28165c92268120 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Mass=C3=A9?= Date: Mon, 7 Jan 2019 14:14:11 +0100 Subject: [PATCH 1/4] see #33: update the playbook for python 3.x compatibility --- .travis.yml | 10 +++++++--- vars/main.yml | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 22a5838..429c88d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,12 @@ language: python -python: -- '2.7' +matrix: + include: + - python: '2.7' + env: ANSIBLE_VERSION=2.4.6 + - python: '3.7' + env: ANSIBLE_VERSION=2.7.5 install: -- pip install ansible==2.4.0 +- pip install ansible==$ANSIBLE_VERSION - pip install jmespath # Pre-install go-swagger locally since it cannot be fetched from the Travis-CI # infrastructures because of rate limits imposed by GitHub on its API. diff --git a/vars/main.yml b/vars/main.yml index b7a5233..a492d75 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -29,7 +29,7 @@ threescale_cicd_api_version_components: '{{ threescale_cicd_api_version.split(". threescale_cicd_api_version_major: '{{ threescale_cicd_api_version_components|first }}' threescale_cicd_api_security_requirements: '{{ threescale_cicd_openapi_file_content.security|default([]) }}' threescale_cicd_api_security_definitions: '{{ threescale_cicd_openapi_file_content.securityDefinitions|default({}) }}' -threescale_cicd_api_security_scheme_name: '{{ threescale_cicd_api_security_requirements[0].keys()[0]|default(''none'') }}' +threescale_cicd_api_security_scheme_name: '{{ (threescale_cicd_api_security_requirements|first|default(''{ "none": {} }'')).keys()|list|first }}' threescale_cicd_api_security_scheme: '{{ threescale_cicd_api_security_definitions[threescale_cicd_api_security_scheme_name] if threescale_cicd_api_security_scheme_name in threescale_cicd_api_security_definitions else {} }}' threescale_cicd_api_backend_version: '{{ threescale_cicd_backend_version_mapping[threescale_cicd_api_security_scheme.type] }}' threescale_cicd_backend_version_mapping: From 6d88ed6ee606dd3e15e758144982cc046f713446 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Mass=C3=A9?= Date: Mon, 7 Jan 2019 14:19:41 +0100 Subject: [PATCH 2/4] see #33: downgrade to python 3.6 since 3.7 is not available at TravisCI --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 429c88d..3bc437e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ matrix: include: - python: '2.7' env: ANSIBLE_VERSION=2.4.6 - - python: '3.7' + - python: '3.6' env: ANSIBLE_VERSION=2.7.5 install: - pip install ansible==$ANSIBLE_VERSION From 159c6ab78ab8769f741c3a7714aa6bbc83fbd4d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Mass=C3=A9?= Date: Mon, 7 Jan 2019 14:37:14 +0100 Subject: [PATCH 3/4] see #33: use a different system_name for each test case to prevent side effects --- tests/3scale-saas-with-hosted-apicast-apikey.yml | 1 + tests/3scale-saas-with-hosted-apicast-multi-environment.yml | 2 +- tests/3scale-saas-with-hosted-apicast-oidc.yml | 1 + tests/3scale-saas-with-hosted-apicast-with-basePath.yml | 1 + tests/3scale-saas-with-hosted-apicast-with-cors-policy.yml | 3 ++- ...e-saas-with-hosted-apicast-with-smoketest-in-extra-vars.yml | 3 ++- tests/3scale-saas-with-hosted-apicast-without-smoketest.yml | 1 + 7 files changed, 9 insertions(+), 3 deletions(-) diff --git a/tests/3scale-saas-with-hosted-apicast-apikey.yml b/tests/3scale-saas-with-hosted-apicast-apikey.yml index 594b9fc..fbecdcd 100644 --- a/tests/3scale-saas-with-hosted-apicast-apikey.yml +++ b/tests/3scale-saas-with-hosted-apicast-apikey.yml @@ -8,6 +8,7 @@ threescale_cicd_openapi_file_format: 'JSON' threescale_cicd_api_backend_hostname: echo-api.3scale.net threescale_cicd_openapi_smoketest_operation: GET_beer + threescale_cicd_api_base_system_name: beer_catalog_apikey tasks: # Test a first deployment - import_role: diff --git a/tests/3scale-saas-with-hosted-apicast-multi-environment.yml b/tests/3scale-saas-with-hosted-apicast-multi-environment.yml index da34296..7f45ea2 100644 --- a/tests/3scale-saas-with-hosted-apicast-multi-environment.yml +++ b/tests/3scale-saas-with-hosted-apicast-multi-environment.yml @@ -8,7 +8,7 @@ threescale_cicd_openapi_file_format: 'JSON' threescale_cicd_api_backend_hostname: echo-api.3scale.net threescale_cicd_openapi_smoketest_operation: GET_beer - threescale_cicd_api_base_system_name: beer_catalog + threescale_cicd_api_base_system_name: beer_catalog_envs tasks: # Deploy in DEV - import_role: diff --git a/tests/3scale-saas-with-hosted-apicast-oidc.yml b/tests/3scale-saas-with-hosted-apicast-oidc.yml index ba2633e..028c0b4 100644 --- a/tests/3scale-saas-with-hosted-apicast-oidc.yml +++ b/tests/3scale-saas-with-hosted-apicast-oidc.yml @@ -5,6 +5,7 @@ gather_facts: no vars: threescale_cicd_openapi_file: '{{ playbook_dir }}/api/echo-api-oidc.yaml' + threescale_cicd_api_base_system_name: echo_api_oidc tasks: # Test a first deployment - import_role: diff --git a/tests/3scale-saas-with-hosted-apicast-with-basePath.yml b/tests/3scale-saas-with-hosted-apicast-with-basePath.yml index dfb7ff4..0d114d9 100644 --- a/tests/3scale-saas-with-hosted-apicast-with-basePath.yml +++ b/tests/3scale-saas-with-hosted-apicast-with-basePath.yml @@ -5,6 +5,7 @@ gather_facts: no vars: threescale_cicd_openapi_file: '{{ playbook_dir }}/api/echo-api-with-basePath.yaml' + threescale_cicd_api_base_system_name: echo_api_with_basepath tasks: # Test a first deployment - import_role: diff --git a/tests/3scale-saas-with-hosted-apicast-with-cors-policy.yml b/tests/3scale-saas-with-hosted-apicast-with-cors-policy.yml index 6c9e5fe..055c222 100644 --- a/tests/3scale-saas-with-hosted-apicast-with-cors-policy.yml +++ b/tests/3scale-saas-with-hosted-apicast-with-cors-policy.yml @@ -1,12 +1,13 @@ --- -- name: Deploy the Echo API to a 3scale SaaS instance, with hosted APIcasts and no smoketests +- name: Deploy the Echo API to a 3scale SaaS instance, with hosted APIcasts and CORS hosts: threescale gather_facts: no vars: threescale_cicd_openapi_smoketest_operation: Echo threescale_cicd_apicast_policies_cors: yes threescale_cicd_openapi_file: '{{ playbook_dir }}/api/echo-api-bare.yaml' + threescale_cicd_api_base_system_name: echo_api_cors tasks: # Deploy the service - import_role: diff --git a/tests/3scale-saas-with-hosted-apicast-with-smoketest-in-extra-vars.yml b/tests/3scale-saas-with-hosted-apicast-with-smoketest-in-extra-vars.yml index 310ca6a..fdbc53e 100644 --- a/tests/3scale-saas-with-hosted-apicast-with-smoketest-in-extra-vars.yml +++ b/tests/3scale-saas-with-hosted-apicast-with-smoketest-in-extra-vars.yml @@ -1,11 +1,12 @@ --- -- name: Deploy the Echo API to a 3scale SaaS instance, with hosted APIcasts and no smoketests +- name: Deploy the Echo API to a 3scale SaaS instance, with hosted APIcasts and smoketests in extra vars hosts: threescale gather_facts: no vars: threescale_cicd_openapi_smoketest_operation: Echo threescale_cicd_openapi_file: '{{ playbook_dir }}/api/echo-api-bare.yaml' + threescale_cicd_api_base_system_name: echo_api_bare_extra tasks: # Deploy the service - import_role: diff --git a/tests/3scale-saas-with-hosted-apicast-without-smoketest.yml b/tests/3scale-saas-with-hosted-apicast-without-smoketest.yml index e79c6ba..07c0cfa 100644 --- a/tests/3scale-saas-with-hosted-apicast-without-smoketest.yml +++ b/tests/3scale-saas-with-hosted-apicast-without-smoketest.yml @@ -6,6 +6,7 @@ vars: # There is no "threescale_cicd_openapi_smoketest_operation" variable threescale_cicd_openapi_file: '{{ playbook_dir }}/api/echo-api-bare.yaml' + threescale_cicd_api_base_system_name: echo_api_no_smoketests tasks: # Deploy the service - import_role: From d345566a01803fc422cb7a4528d334c68935e2aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Mass=C3=A9?= Date: Mon, 7 Jan 2019 15:44:38 +0100 Subject: [PATCH 4/4] see #33: use a different platform for each travis job --- .gitignore | 2 +- .travis.yml | 11 +++++------ tests/3scale-inventory.yaml.enc | 6 ++++++ tests/write-inventory-files.yml | 6 ++++++ 4 files changed, 18 insertions(+), 7 deletions(-) create mode 100644 tests/3scale-inventory.yaml.enc diff --git a/.gitignore b/.gitignore index f15c60a..eef4121 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ *.retry inventory -3scale-inventory.* +3scale-inventory.yaml bin diff --git a/.travis.yml b/.travis.yml index 3bc437e..32241d2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,9 +2,9 @@ language: python matrix: include: - python: '2.7' - env: ANSIBLE_VERSION=2.4.6 + env: ANSIBLE_VERSION=2.4.6 THREESCALE_POOL=0 - python: '3.6' - env: ANSIBLE_VERSION=2.7.5 + env: ANSIBLE_VERSION=2.7.5 THREESCALE_POOL=1 install: - pip install ansible==$ANSIBLE_VERSION - pip install jmespath @@ -19,12 +19,11 @@ script: - ansible-playbook -v -i tests/inventory tests/3scale-saas-with-hosted-apicast-multi-environment.yml - ansible-playbook -v -i tests/inventory tests/3scale-saas-with-hosted-apicast-with-smoketest-in-extra-vars.yml - ansible-playbook -v -i tests/inventory tests/3scale-saas-with-hosted-apicast-without-smoketest.yml -env: - global: - # travis encrypt "THREESCALE_INVENTORY=$(yaml2json tests/3scale-inventory.yaml|base64)" - secure: "SKrCC5Nd1lXFU9mCrmGUSbqmEFGzT6/3KTXGQ/bASgSx4r0AuDHt48cI/XPQ6XGCIGaxAt2oRWzJZJ00+Y+5A1TCYAXI4X75mTVl+mgZ3ul5hSK1/KfPPoLciZIcv678FLmmpryNRapK+zxG+OKR1puNFQm9himhF9x0JICigFZSVLMLGnpvHDo2GguFv+4aO1tkdZMT5IzBlPD11Kn98QVCruF/dHiBXtSxuo5ja0/uDsGotMcUQRNa637WIQ5D7YgDREpeLrHzmbpW2zr7HI30oA68k+BxZFqlQ/cyI7f5ogNE73ID+FBSSxVXqcn7TD2nmYL3NQpMztTCzM6YlODIuAvdWUxggeBJflpIVoza0HLP7CB76GAmRSkvwGbnGAHWvCOtvczmJ/hXGgAEdRL5q3eJiGebRvhb6SAVMZ3LOH9LlLU9fKDVGqzolFi4+Jaxami600zgBB/yGkFckpapUZLEK2O0QdHBu3bjd7+9C0EgYONrbyMMkMoWr8TiX/y0qTHg3SclOEacDqLw3kb0MAe9V9WtE+MKOAM38lkXN1v1J9x2izeEqKBDDuzxMOsRxQwfSlA5MVW1kOiKaQgKl37F5t+msfIsPDlr2DRM4JTsIBaQKMY9E50tQ0cMW+vU7P+kn8UlNdTh53TLwKMjPcU99XG1f95fGAMocAA=" notifications: webhooks: https://galaxy.ansible.com/api/v1/notifications/ branches: except: - /^dev.*/ +before_install: +- openssl aes-256-cbc -K $encrypted_7bf6043000c3_key -iv $encrypted_7bf6043000c3_iv + -in tests/3scale-inventory.yaml.enc -out tests/3scale-inventory.yaml -d diff --git a/tests/3scale-inventory.yaml.enc b/tests/3scale-inventory.yaml.enc new file mode 100644 index 0000000..a51a212 --- /dev/null +++ b/tests/3scale-inventory.yaml.enc @@ -0,0 +1,6 @@ + fDu>'Grjq+CP)[JzDZa)vד~R(EG'%fe{vM𢎽)]=?$ faW/f +d;:7;|pQ8* IYIΛ)ȁf \ No newline at end of file diff --git a/tests/write-inventory-files.yml b/tests/write-inventory-files.yml index 1fe066a..0d7e8f8 100644 --- a/tests/write-inventory-files.yml +++ b/tests/write-inventory-files.yml @@ -21,6 +21,12 @@ recurse: no register: templates + - name: Select the target CI platform using the THREESCALE_POOL environment variable + set_fact: + threescale_inventory: '{{ threescale_inventory[env|int] }}' + vars: + env: '{{ lookup(''env'', ''THREESCALE_POOL'') }}' + - name: Process the Jinja2 templates template: src: '{{ item }}'