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 22a5838..32241d2 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 THREESCALE_POOL=0 + - python: '3.6' + env: ANSIBLE_VERSION=2.7.5 THREESCALE_POOL=1 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. @@ -15,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/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: 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 }}' 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: