mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-04-09 09:58:20 -05:00
molecule scenario to test upgrading from releases
Provide a separate scenario to install the last release, then update to the current one. Also includes improved deployment verification (check if uploading a .txt through the API works).
This commit is contained in:
parent
19f73f5782
commit
8884a4dfdf
9
.github/workflows/ansible.yml
vendored
9
.github/workflows/ansible.yml
vendored
@ -26,10 +26,15 @@ jobs:
|
|||||||
docker --version
|
docker --version
|
||||||
molecule --version
|
molecule --version
|
||||||
python --version
|
python --version
|
||||||
- name: Test with molecule
|
- name: Test fresh installation with molecule
|
||||||
run: |
|
run: |
|
||||||
cd ansible
|
cd ansible
|
||||||
molecule test
|
molecule test -s fresh
|
||||||
|
working-directory: "${{ github.repository }}"
|
||||||
|
- name: Test release update with molecule
|
||||||
|
run: |
|
||||||
|
cd ansible
|
||||||
|
molecule test -s update
|
||||||
working-directory: "${{ github.repository }}"
|
working-directory: "${{ github.repository }}"
|
||||||
# # https://galaxy.ansible.com/docs/contributing/importing.html
|
# # https://galaxy.ansible.com/docs/contributing/importing.html
|
||||||
# release:
|
# release:
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Converge
|
|
||||||
hosts: all
|
|
||||||
tasks:
|
|
||||||
- name: "Include ansible"
|
|
||||||
include_role:
|
|
||||||
name: "ansible"
|
|
@ -1,14 +0,0 @@
|
|||||||
---
|
|
||||||
# This is an example playbook to execute Ansible tests.
|
|
||||||
|
|
||||||
- name: Verify
|
|
||||||
hosts: all
|
|
||||||
gather_facts: false
|
|
||||||
tasks:
|
|
||||||
- name: check if webserver is up
|
|
||||||
uri:
|
|
||||||
url: http://localhost:8000
|
|
||||||
status_code: [200, 302]
|
|
||||||
return_content: yes
|
|
||||||
register: landingpage
|
|
||||||
failed_when: "'Sign in</button>' not in landingpage.content"
|
|
7
ansible/molecule/fresh/converge.yml
Normal file
7
ansible/molecule/fresh/converge.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
- name: fresh installation
|
||||||
|
hosts: all
|
||||||
|
tasks:
|
||||||
|
- name: install paperless-ng with default parameters
|
||||||
|
include_role:
|
||||||
|
name: ansible
|
60
ansible/molecule/fresh/verify.yml
Normal file
60
ansible/molecule/fresh/verify.yml
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
---
|
||||||
|
- name: Verify
|
||||||
|
hosts: all
|
||||||
|
gather_facts: false
|
||||||
|
|
||||||
|
vars_files:
|
||||||
|
- ../../defaults/main.yml
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: check if webserver is up
|
||||||
|
uri:
|
||||||
|
url: http://localhost:8000
|
||||||
|
status_code: [200, 302]
|
||||||
|
return_content: yes
|
||||||
|
register: landingpage
|
||||||
|
failed_when: "'Sign in</button>' not in landingpage.content"
|
||||||
|
|
||||||
|
- name: check if document posting works
|
||||||
|
uri:
|
||||||
|
url: http://localhost:8000/api/documents/post_document/
|
||||||
|
method: POST
|
||||||
|
body_format: form-multipart
|
||||||
|
body:
|
||||||
|
document:
|
||||||
|
content: FOO
|
||||||
|
filename: document.txt
|
||||||
|
mime_type: text/plain
|
||||||
|
headers:
|
||||||
|
Authorization: 'Basic {{ (paperlessng_superuser_name + ":" + paperlessng_superuser_password) | b64encode }}'
|
||||||
|
return_content: yes
|
||||||
|
register: post_document
|
||||||
|
failed_when: "'OK' not in post_document.content"
|
||||||
|
|
||||||
|
- name: verify uploaded document has been accepted
|
||||||
|
uri:
|
||||||
|
url: http://localhost:8000/api/logs/
|
||||||
|
headers:
|
||||||
|
Authorization: 'Basic {{ (paperlessng_superuser_name + ":" + paperlessng_superuser_password) | b64encode }}'
|
||||||
|
return_content: yes
|
||||||
|
register: logs
|
||||||
|
failed_when: "'Consuming document.txt' not in logs.content"
|
||||||
|
|
||||||
|
# assumes txt consumption finished by now, might have to sleep a bit
|
||||||
|
- name: verify uploaded document has been consumed
|
||||||
|
uri:
|
||||||
|
url: http://localhost:8000/api/logs/
|
||||||
|
headers:
|
||||||
|
Authorization: 'Basic {{ (paperlessng_superuser_name + ":" + paperlessng_superuser_password) | b64encode }}'
|
||||||
|
return_content: yes
|
||||||
|
register: logs
|
||||||
|
failed_when: "'document consumption finished' not in logs.content"
|
||||||
|
|
||||||
|
- name: verify uploaded document is avaiable
|
||||||
|
uri:
|
||||||
|
url: http://localhost:8000/api/documents/1/
|
||||||
|
headers:
|
||||||
|
Authorization: 'Basic {{ (paperlessng_superuser_name + ":" + paperlessng_superuser_password) | b64encode }}'
|
||||||
|
return_content: yes
|
||||||
|
register: document
|
||||||
|
failed_when: "'Not found.' in document.content or 'FOO' not in document.content"
|
11
ansible/molecule/update/converge.yml
Normal file
11
ansible/molecule/update/converge.yml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
- name: update previous release to newest release
|
||||||
|
hosts: all
|
||||||
|
tasks:
|
||||||
|
- name: set current version as installation target
|
||||||
|
set_fact:
|
||||||
|
paperlessng_version: 0.9.14
|
||||||
|
|
||||||
|
- name: update to newest paperless-ng release
|
||||||
|
include_role:
|
||||||
|
name: ansible
|
35
ansible/molecule/update/molecule.yml
Normal file
35
ansible/molecule/update/molecule.yml
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
---
|
||||||
|
dependency:
|
||||||
|
name: galaxy
|
||||||
|
driver:
|
||||||
|
name: docker
|
||||||
|
platforms:
|
||||||
|
- name: ubuntu_focal
|
||||||
|
image: jrei/systemd-ubuntu:20.04
|
||||||
|
privileged: true
|
||||||
|
volumes:
|
||||||
|
- /sys/fs/cgroup:/sys/fs/cgroup:ro
|
||||||
|
tmpfs:
|
||||||
|
- /tmp
|
||||||
|
- /run
|
||||||
|
- /run/lock
|
||||||
|
override_command: False
|
||||||
|
# ubuntu 18.04 bionic works except that
|
||||||
|
# the default redis configuration expects IPv6 which is not enabled in docker by default
|
||||||
|
# the default Python environment is configured for ASCII instead of UTF-8
|
||||||
|
# ubuntu 16.04 xenial only has Python 3.5 which is EOL and breaks multiple dependencies
|
||||||
|
- name: debian_buster
|
||||||
|
image: jrei/systemd-debian:10
|
||||||
|
privileged: true
|
||||||
|
volumes:
|
||||||
|
- /sys/fs/cgroup:/sys/fs/cgroup:ro
|
||||||
|
tmpfs:
|
||||||
|
- /tmp
|
||||||
|
- /run
|
||||||
|
- /run/lock
|
||||||
|
override_command: False
|
||||||
|
# debian 9 stretch only has Python 3.5 which is EOL and breaks multiple dependencies
|
||||||
|
provisioner:
|
||||||
|
name: ansible
|
||||||
|
verifier:
|
||||||
|
name: ansible
|
10
ansible/molecule/update/prepare.yml
Normal file
10
ansible/molecule/update/prepare.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
- name: install previous release
|
||||||
|
hosts: all
|
||||||
|
tasks:
|
||||||
|
- name: set previous version as installation target
|
||||||
|
set_fact:
|
||||||
|
paperlessng_version: 0.9.13
|
||||||
|
|
||||||
|
- name: install previous paperless-ng release
|
||||||
|
include_role:
|
||||||
|
name: ansible
|
60
ansible/molecule/update/verify.yml
Normal file
60
ansible/molecule/update/verify.yml
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
---
|
||||||
|
- name: Verify
|
||||||
|
hosts: all
|
||||||
|
gather_facts: false
|
||||||
|
|
||||||
|
vars_files:
|
||||||
|
- ../../defaults/main.yml
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: check if webserver is up
|
||||||
|
uri:
|
||||||
|
url: http://localhost:8000
|
||||||
|
status_code: [200, 302]
|
||||||
|
return_content: yes
|
||||||
|
register: landingpage
|
||||||
|
failed_when: "'Sign in</button>' not in landingpage.content"
|
||||||
|
|
||||||
|
- name: check if document posting works
|
||||||
|
uri:
|
||||||
|
url: http://localhost:8000/api/documents/post_document/
|
||||||
|
method: POST
|
||||||
|
body_format: form-multipart
|
||||||
|
body:
|
||||||
|
document:
|
||||||
|
content: FOO
|
||||||
|
filename: document.txt
|
||||||
|
mime_type: text/plain
|
||||||
|
headers:
|
||||||
|
Authorization: 'Basic {{ (paperlessng_superuser_name + ":" + paperlessng_superuser_password) | b64encode }}'
|
||||||
|
return_content: yes
|
||||||
|
register: post_document
|
||||||
|
failed_when: "'OK' not in post_document.content"
|
||||||
|
|
||||||
|
- name: verify uploaded document has been accepted
|
||||||
|
uri:
|
||||||
|
url: http://localhost:8000/api/logs/
|
||||||
|
headers:
|
||||||
|
Authorization: 'Basic {{ (paperlessng_superuser_name + ":" + paperlessng_superuser_password) | b64encode }}'
|
||||||
|
return_content: yes
|
||||||
|
register: logs
|
||||||
|
failed_when: "'Consuming document.txt' not in logs.content"
|
||||||
|
|
||||||
|
# assumes txt consumption finished by now, might have to sleep a bit
|
||||||
|
- name: verify uploaded document has been consumed
|
||||||
|
uri:
|
||||||
|
url: http://localhost:8000/api/logs/
|
||||||
|
headers:
|
||||||
|
Authorization: 'Basic {{ (paperlessng_superuser_name + ":" + paperlessng_superuser_password) | b64encode }}'
|
||||||
|
return_content: yes
|
||||||
|
register: logs
|
||||||
|
failed_when: "'document consumption finished' not in logs.content"
|
||||||
|
|
||||||
|
- name: verify uploaded document is avaiable
|
||||||
|
uri:
|
||||||
|
url: http://localhost:8000/api/documents/1/
|
||||||
|
headers:
|
||||||
|
Authorization: 'Basic {{ (paperlessng_superuser_name + ":" + paperlessng_superuser_password) | b64encode }}'
|
||||||
|
return_content: yes
|
||||||
|
register: document
|
||||||
|
failed_when: "'Not found.' in document.content or 'FOO' not in document.content"
|
@ -155,7 +155,7 @@
|
|||||||
|
|
||||||
- name: move paperless-ng
|
- name: move paperless-ng
|
||||||
command:
|
command:
|
||||||
cmd: "cp -a {{ tempdir.path }}/paperless-ng/ {{ paperlessng_directory }}"
|
cmd: "cp -a {{ tempdir.path }}/paperless-ng/. {{ paperlessng_directory }}"
|
||||||
when: not reconfigure_only
|
when: not reconfigure_only
|
||||||
|
|
||||||
- name: remove temporary directory
|
- name: remove temporary directory
|
||||||
@ -367,7 +367,7 @@
|
|||||||
owner: "{{ paperlessng_system_user }}"
|
owner: "{{ paperlessng_system_user }}"
|
||||||
group: "{{ paperlessng_system_group }}"
|
group: "{{ paperlessng_system_group }}"
|
||||||
mode: g-w,o-rwx
|
mode: g-w,o-rwx
|
||||||
when: venv.changed or not not reconfigure_only
|
when: venv.changed or not reconfigure_only
|
||||||
|
|
||||||
- name: configure ghostscript for PDF
|
- name: configure ghostscript for PDF
|
||||||
lineinfile:
|
lineinfile:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user