Skip to content
This repository has been archived by the owner on Jan 30, 2024. It is now read-only.

Commit

Permalink
Story: ansible-pulp CI needs to test micro updates to Pulp 3
Browse files Browse the repository at this point in the history
Implementation includes:
1. 2 new scenarios default-upgrade & source-upgrade, which pull
pre-built (from current state of ansible-pulp master branch
& molecule), pulpcore 3.0.0 with pulp_file 0.1.0 images.
2. Fixing a long-standing bug whereby the source scenario was
run on top of the default scenario. Thereby essentially
testing 3.0.0 -> 3.1.0dev upgrades.

Fixes: #5892
ansible-pulp CI needs to test micro updates to Pulp 3
https://pulp.plan.io/issues/5892
  • Loading branch information
mikedep333 committed Jan 14, 2020
1 parent 0c0f33f commit ee5c255
Show file tree
Hide file tree
Showing 20 changed files with 232 additions and 5 deletions.
4 changes: 4 additions & 0 deletions .travis.yml
Expand Up @@ -20,6 +20,10 @@ matrix:
env: TOXENV=py36
- python: 3.7
env: TOXENV=py37
before_install:
- docker pull quay.io/pulp/pulp-ci-c7:3.0.0
- docker pull quay.io/pulp/pulp-ci-dbuster:3.0.0
- docker pull quay.io/pulp/pulp-ci-f31:3.0.0
install:
- pip install --upgrade pip
- pip install tox
Expand Down
1 change: 1 addition & 0 deletions molecule/default-upgrade/.ansible-lint
1 change: 1 addition & 0 deletions molecule/default-upgrade/debian-redis-server.service
9 changes: 9 additions & 0 deletions molecule/default-upgrade/group_vars/all
@@ -0,0 +1,9 @@
---
pulp_default_admin_password: password
pulp_upgrade: true
pulp_install_plugins:
pulp-file:
upgrade: true
pulp_settings:
secret_key: secret
content_origin: "http://{{ ansible_fqdn }}"
51 changes: 51 additions & 0 deletions molecule/default-upgrade/molecule.yml
@@ -0,0 +1,51 @@
---
dependency:
name: galaxy
role-file: requirements.yml
driver:
name: docker
lint:
name: yamllint
# This is ignored by molecule, but can be reused in yaml
.platform_base: &platform_base
privileged: False
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
tmpfs:
- /tmp
- /run
- /run/lock
capabilities:
- NET_ADMIN
- NET_RAW
platforms:
- <<: *platform_base
name: centos-7
# molecule often fails to pull, so we pull all images in .travis.yml
image: quay.io/pulp/pulp-ci-c7:3.0.0
command: /sbin/init
pre_build_image: true
- <<: *platform_base
name: debian-10
image: quay.io/pulp/pulp-ci-dbuster:3.0.0
command: /sbin/init
pre_build_image: true
- <<: *platform_base
name: fedora-31
image: quay.io/pulp/pulp-ci-f31:3.0.0
command: /usr/sbin/init
pre_build_image: true
provisioner:
name: ansible
inventory:
links:
host_vars: ../scenario_resources/host_vars/
lint:
name: ansible-lint
scenario:
name: default-upgrade
verifier:
name: inspec
lint:
name: rubocop
enabled: false
1 change: 1 addition & 0 deletions molecule/default-upgrade/playbook.yml
8 changes: 8 additions & 0 deletions molecule/default-upgrade/prepare.yml
@@ -0,0 +1,8 @@
---
- hosts: all
tasks:
- name: Hot patch redis-server service for docker operation (Debian)
copy:
src: debian-redis-server.service
dest: /etc/systemd/system/redis-server.service
when: ansible_distribution == "Debian"
1 change: 1 addition & 0 deletions molecule/default-upgrade/requirements.yml
1 change: 1 addition & 0 deletions molecule/default-upgrade/roles
1 change: 1 addition & 0 deletions molecule/source-upgrade/.ansible-lint
1 change: 1 addition & 0 deletions molecule/source-upgrade/Dockerfile.j2
11 changes: 11 additions & 0 deletions molecule/source-upgrade/all
@@ -0,0 +1,11 @@
---
pulp_default_admin_password: password
pulp_source_dir: '/var/lib/pulp/devel/pulpcore'
pulp_install_plugins:
pulp-file:
source_dir: "/var/lib/pulp/devel/pulp_file"
developer_user_home: /var/lib/pulp
developer_user: pulp
pulp_settings:
secret_key: secret
content_origin: "http://{{ ansible_fqdn }}"
1 change: 1 addition & 0 deletions molecule/source-upgrade/debian-redis-server.service
16 changes: 16 additions & 0 deletions molecule/source-upgrade/group_vars/all
@@ -0,0 +1,16 @@
---
pulp_default_admin_password: password
pulp_source_dir: '/var/lib/pulp/devel/pulpcore'
pulp_upgrade: true
# Needed to determine whether or not pulpcore was actually upgraded, to
# trigger the handler.
pulp_pip_editable: false
pulp_install_plugins:
pulp-file:
upgrade: true
source_dir: "/var/lib/pulp/devel/pulp_file"
developer_user_home: /var/lib/pulp
developer_user: pulp
pulp_settings:
secret_key: secret
content_origin: "http://{{ ansible_fqdn }}"
48 changes: 48 additions & 0 deletions molecule/source-upgrade/molecule.yml
@@ -0,0 +1,48 @@
---
dependency:
name: galaxy
role-file: requirements.yml
driver:
name: docker
lint:
name: yamllint
# This is ignored by molecule, but can be reused in yaml
.platform_base: &platform_base
privileged: False
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
tmpfs:
- /tmp
- /run
- /run/lock
capabilities:
- NET_ADMIN
- NET_RAW
platforms:
- <<: *platform_base
name: debian-10
# molecule often fails to pull, so we pull all images in .travis.yml
image: quay.io/pulp/pulp-ci-dbuster:3.0.0
command: /sbin/init
pre_build_image: true
- <<: *platform_base
name: fedora-31
image: quay.io/pulp/pulp-ci-f31:3.0.0
command: /usr/sbin/init
pre_build_image: true
provisioner:
name: ansible
inventory:
links:
host_vars: ../scenario_resources/host_vars/
lint:
name: ansible-lint
scenario:
name: source-upgrade
playbooks:
prepare: prepare.yml
verifier:
name: inspec
lint:
name: rubocop
enabled: false
1 change: 1 addition & 0 deletions molecule/source-upgrade/playbook.yml
42 changes: 42 additions & 0 deletions molecule/source-upgrade/prepare.yml
@@ -0,0 +1,42 @@
---
- hosts:
- all
tasks:
- name: Install required packages
package:
name:
- git
state: present

- name: Create user {{ developer_user }}
user:
name: '{{ developer_user }}'
home: '{{ developer_user_home }}'
when: developer_user is defined

- name: Clone pulp repository
git:
repo: 'https://github.com/pulp/pulpcore.git'
dest: '{{ pulp_source_dir }}'
update: yes

- name: Clone pulp_file repository
git:
repo: 'https://github.com/pulp/pulp_file.git'
dest: '{{ item.value.source_dir }}'
update: yes
with_dict: '{{ pulp_install_plugins }}'

- name: Make devel directory world-writable
file:
path: /var/lib/pulp/
state: directory
mode: 0777
recurse: true
become: true

- name: Hot patch redis-server service for docker operation (Debian)
copy:
src: debian-redis-server.service
dest: /etc/systemd/system/redis-server.service
when: ansible_distribution == "Debian"
1 change: 1 addition & 0 deletions molecule/source-upgrade/requirements.yml
1 change: 1 addition & 0 deletions molecule/source-upgrade/roles
37 changes: 32 additions & 5 deletions tox.ini
Expand Up @@ -19,20 +19,47 @@ whitelist_externals =
# We removed cleanup and destroy from the end because they complicate Travis
# debugging.
commands =
# We run the upgrade tests 1st because assuming a fast internet connection,
# (to download the pre_built image of pulp 3.0.0), they take less long.
molecule lint -s default-upgrade
molecule dependency -s default-upgrade
molecule syntax -s default-upgrade
molecule create -s default-upgrade
molecule prepare -s default-upgrade
molecule converge -s default-upgrade
# There is no output while the idempotence test runs, so prevent Travis
# from failing when the idempotence test takes longer than Travis's normal
# 10 minute wait for output.
# NOTE: --debug would only provide output for seconds at the beginning
# and end.
{env:TRAVIS_WAIT:} molecule idempotence -s default-upgrade
molecule side-effect -s default-upgrade
molecule verify -s default-upgrade
molecule destroy -s default-upgrade
molecule lint -s source-upgrade
molecule dependency -s source-upgrade
molecule syntax -s source-upgrade
molecule create -s source-upgrade
molecule prepare -s source-upgrade
molecule converge -s source-upgrade
# pip installing from source always replaces the installed version, thus
# the task is always reports changed. During upgrades, we need the handlers
# to run on the pip install tasks, so we can't alter said tasks to never
# report changed. So let's just not run idempotency on this scenario.
# {env:TRAVIS_WAIT:} molecule idempotence -s source-upgrade
molecule side-effect -s source-upgrade
molecule verify -s source-upgrade
molecule destroy -s source-upgrade
molecule lint -s default
molecule dependency -s default
molecule syntax -s default
molecule create -s default
molecule prepare -s default
molecule converge -s default
# There is no output while the idempotence test runs, so prevent Travis
# from failing when the idempotence test takes longer than Travis's normal
# 10 minute wait for output.
# NOTE: --debug would only provide output for seconds at the beginning
# and end.
{env:TRAVIS_WAIT:} molecule idempotence -s default
molecule side-effect -s default
molecule verify -s default
molecule destroy -s default
molecule lint -s source
molecule dependency -s source
molecule syntax -s source
Expand Down

0 comments on commit ee5c255

Please sign in to comment.