mirror of https://github.com/ansible/ansible.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
5.0 KiB
YAML
138 lines
5.0 KiB
YAML
- name: test tarfile dependency resolution without querying distribution servers
|
|
vars:
|
|
init_dir: "{{ galaxy_dir }}/offline/setup"
|
|
build_dir: "{{ galaxy_dir }}/offline/build"
|
|
install_dir: "{{ galaxy_dir }}/offline/collections"
|
|
block:
|
|
- name: create test directories
|
|
file:
|
|
path: "{{ item }}"
|
|
state: directory
|
|
loop:
|
|
- "{{ init_dir }}"
|
|
- "{{ build_dir }}"
|
|
- "{{ install_dir }}"
|
|
|
|
- name: initialize two collections
|
|
command: ansible-galaxy collection init ns.{{ item }} --init-path {{ init_dir }}
|
|
loop:
|
|
- coll1
|
|
- coll2
|
|
|
|
- name: add one collection as the dependency of the other
|
|
lineinfile:
|
|
path: "{{ galaxy_dir }}/offline/setup/ns/coll1/galaxy.yml"
|
|
regexp: "^dependencies:*"
|
|
line: "dependencies: {'ns.coll2': '>=1.0.0'}"
|
|
|
|
- name: build both collections
|
|
command: ansible-galaxy collection build {{ init_dir }}/ns/{{ item }}
|
|
args:
|
|
chdir: "{{ build_dir }}"
|
|
loop:
|
|
- coll1
|
|
- coll2
|
|
|
|
- name: install the dependency from the tarfile
|
|
command: ansible-galaxy collection install {{ build_dir }}/ns-coll2-1.0.0.tar.gz -p {{ install_dir }} -s offline
|
|
|
|
- name: install the tarfile with the installed dependency
|
|
command: ansible-galaxy collection install {{ build_dir }}/ns-coll1-1.0.0.tar.gz -p {{ install_dir }} -s offline
|
|
|
|
- name: empty the installed collections directory
|
|
file:
|
|
path: "{{ install_dir }}"
|
|
state: "{{ item }}"
|
|
loop:
|
|
- absent
|
|
- directory
|
|
|
|
- name: edit skeleton with new versions to test upgrading
|
|
lineinfile:
|
|
path: "{{ galaxy_dir }}/offline/setup/ns/{{ item }}/galaxy.yml"
|
|
regexp: "^version:.*$"
|
|
line: "version: 2.0.0"
|
|
loop:
|
|
- coll1
|
|
- coll2
|
|
|
|
- name: build the tarfiles to test upgrading
|
|
command: ansible-galaxy collection build {{ init_dir }}/ns/{{ item }}
|
|
args:
|
|
chdir: "{{ build_dir }}"
|
|
loop:
|
|
- coll1
|
|
- coll2
|
|
|
|
- name: install the tarfile and its dep with an unreachable server (expected error)
|
|
command: ansible-galaxy collection install {{ build_dir }}/ns-coll1-1.0.0.tar.gz -p {{ install_dir }} -s offline
|
|
environment:
|
|
ANSIBLE_FORCE_COLOR: False
|
|
ANSIBLE_NOCOLOR: True
|
|
ignore_errors: yes
|
|
register: missing_dep
|
|
|
|
- name: install the tarfile with a missing dependency and --offline
|
|
command: ansible-galaxy collection install --offline {{ build_dir }}/ns-coll1-1.0.0.tar.gz -p {{ install_dir }} -s offline
|
|
environment:
|
|
ANSIBLE_FORCE_COLOR: False
|
|
ANSIBLE_NOCOLOR: True
|
|
ignore_errors: yes
|
|
register: missing_dep_offline
|
|
|
|
- assert:
|
|
that:
|
|
- missing_dep.failed
|
|
- missing_dep_offline.failed
|
|
- galaxy_err in missing_dep.stderr
|
|
- missing_err in missing_dep_offline.stderr
|
|
vars:
|
|
galaxy_err: "ERROR! Unknown error when attempting to call Galaxy at '{{ offline_server }}'"
|
|
missing_err: |-
|
|
ERROR! Failed to resolve the requested dependencies map. Could not satisfy the following requirements:
|
|
* ns.coll2:>=1.0.0 (dependency of ns.coll1:1.0.0)
|
|
|
|
- name: install the dependency from the tarfile
|
|
command: ansible-galaxy collection install {{ build_dir }}/ns-coll2-1.0.0.tar.gz -p {{ install_dir }}
|
|
|
|
- name: install the tarfile with --offline for dep resolution
|
|
command: ansible-galaxy collection install {{ build_dir }}/ns-coll1-1.0.0.tar.gz {{ cli_opts }}
|
|
vars:
|
|
cli_opts: "--offline -p {{ install_dir }} -s offline"
|
|
register: offline_install
|
|
|
|
- name: upgrade using tarfile with --offline for dep resolution
|
|
command: ansible-galaxy collection install {{ build_dir }}/ns-coll1-2.0.0.tar.gz {{ cli_opts }}
|
|
vars:
|
|
cli_opts: "--offline --upgrade -p {{ install_dir }} -s offline"
|
|
register: offline_upgrade
|
|
|
|
- name: reinstall ns-coll1-1.0.0 to test upgrading the dependency too
|
|
command: ansible-galaxy collection install {{ build_dir }}/ns-coll1-1.0.0.tar.gz {{ cli_opts }}
|
|
vars:
|
|
cli_opts: "--offline --force -p {{ install_dir }} -s offline"
|
|
|
|
- name: upgrade both collections using tarfiles and --offline
|
|
command: ansible-galaxy collection install {{ collections }} {{ cli_opts }}
|
|
vars:
|
|
collections: "{{ build_dir }}/ns-coll1-2.0.0.tar.gz {{ build_dir }}/ns-coll2-2.0.0.tar.gz"
|
|
cli_opts: "--offline --upgrade -s offline"
|
|
register: upgrade_all
|
|
|
|
- assert:
|
|
that:
|
|
- '"ns.coll1:1.0.0 was installed successfully" in offline_install.stdout'
|
|
- '"ns.coll1:2.0.0 was installed successfully" in offline_upgrade.stdout'
|
|
- '"ns.coll1:2.0.0 was installed successfully" in upgrade_all.stdout'
|
|
- '"ns.coll2:2.0.0 was installed successfully" in upgrade_all.stdout'
|
|
|
|
always:
|
|
- name: clean up test directories
|
|
file:
|
|
path: "{{ item }}"
|
|
state: absent
|
|
loop:
|
|
- "{{ init_dir }}"
|
|
- "{{ build_dir }}"
|
|
- "{{ install_dir }}"
|