--- - name: set some facts for tests set_fact: galaxy_dir: "{{ remote_tmp_dir }}/galaxy" - name: create scratch dir used for testing file: path: '{{ galaxy_dir }}/scratch' state: directory - name: run ansible-galaxy collection init tests import_tasks: init.yml - name: run ansible-galaxy collection build tests import_tasks: build.yml # The pulp container has a long start up time # The first task to interact with pulp needs to wait until it responds appropriately - name: list pulp distributions uri: url: '{{ pulp_api }}/pulp/api/v3/distributions/ansible/ansible/' status_code: - 200 user: '{{ pulp_user }}' password: '{{ pulp_password }}' force_basic_auth: true register: pulp_distributions until: pulp_distributions is successful delay: 1 retries: 60 - name: configure pulp include_tasks: pulp.yml - name: Get galaxy_ng token uri: url: '{{ galaxy_ng_server }}v3/auth/token/' method: POST body_format: json body: {} status_code: - 200 user: '{{ pulp_user }}' password: '{{ pulp_password }}' force_basic_auth: true register: galaxy_ng_token - name: create test ansible.cfg that contains the Galaxy server list template: src: ansible.cfg.j2 dest: '{{ galaxy_dir }}/ansible.cfg' - name: run ansible-galaxy collection publish tests for {{ test_name }} include_tasks: publish.yml args: apply: environment: ANSIBLE_CONFIG: '{{ galaxy_dir }}/ansible.cfg' vars: test_name: '{{ item.name }}' test_server: '{{ item.server }}' vX: '{{ "v3/" if item.v3|default(false) else "v2/" }}' loop: - name: pulp_v2 server: '{{ pulp_v2_server }}' - name: pulp_v3 server: '{{ pulp_v3_server }}' v3: true - name: galaxy_ng server: '{{ galaxy_ng_server }}' v3: true # We use a module for this so we can speed up the test time. # For pulp interactions, we only upload to galaxy_ng which shares # the same repo and distribution with pulp_ansible # However, we use galaxy_ng only, since collections are unique across # pulp repositories, and galaxy_ng maintains a 2nd list of published collections - name: setup test collections for install and download test setup_collections: server: galaxy_ng collections: '{{ collection_list }}' environment: ANSIBLE_CONFIG: '{{ galaxy_dir }}/ansible.cfg' # Stores the cached test version number index as we run install many times - set_fact: cache_version_build: 0 - name: run ansible-galaxy collection install tests for {{ test_name }} include_tasks: install.yml vars: test_name: '{{ item.name }}' test_server: '{{ item.server }}' vX: '{{ "v3/" if item.v3|default(false) else "v2/" }}' requires_auth: '{{ item.requires_auth|default(false) }}' args: apply: environment: ANSIBLE_CONFIG: '{{ galaxy_dir }}/ansible.cfg' loop: - name: galaxy_ng server: '{{ galaxy_ng_server }}' v3: true requires_auth: true - name: pulp_v2 server: '{{ pulp_v2_server }}' - name: pulp_v3 server: '{{ pulp_v3_server }}' v3: true # fake.fake does not exist but we check the output to ensure it checked all 3 # servers defined in the config. We hardcode to -vvv as that's what level the # message is shown - name: test install fallback on server list command: ansible-galaxy collection install fake.fake -vvv ignore_errors: yes environment: ANSIBLE_CONFIG: '{{ galaxy_dir }}/ansible.cfg' register: missing_fallback - name: assert test install fallback on server list assert: that: - missing_fallback.rc == 1 - '"Collection ''fake.fake'' is not available from server pulp_v2" in missing_fallback.stdout' - '"Collection ''fake.fake'' is not available from server pulp_v3" in missing_fallback.stdout' - '"Collection ''fake.fake'' is not available from server galaxy_ng" in missing_fallback.stdout' - name: run ansible-galaxy collection download tests include_tasks: download.yml args: apply: environment: ANSIBLE_CONFIG: '{{ galaxy_dir }}/ansible.cfg'