mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-04-09 09:58:20 -05:00
Determine installed version by git commit hash
This commit is contained in:
parent
8d62493774
commit
6c3b1db4dd
4
.github/workflows/ansible.yml
vendored
4
.github/workflows/ansible.yml
vendored
@ -21,7 +21,7 @@ jobs:
|
|||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
python3 -m pip install --upgrade pip
|
python3 -m pip install --upgrade pip
|
||||||
python3 -m pip install molecule[ansible,docker]
|
python3 -m pip install molecule[ansible,docker] jmespath
|
||||||
ansible --version
|
ansible --version
|
||||||
docker --version
|
docker --version
|
||||||
molecule --version
|
molecule --version
|
||||||
@ -47,7 +47,7 @@ jobs:
|
|||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
python3 -m pip install --upgrade pip
|
python3 -m pip install --upgrade pip
|
||||||
python3 -m pip install molecule[ansible,docker]
|
python3 -m pip install molecule[ansible,docker] jmespath
|
||||||
ansible --version
|
ansible --version
|
||||||
docker --version
|
docker --version
|
||||||
molecule --version
|
molecule --version
|
||||||
|
@ -5,9 +5,6 @@
|
|||||||
- name: set github ref as version when available
|
- name: set github ref as version when available
|
||||||
set_fact:
|
set_fact:
|
||||||
paperlessng_version: "{{ lookup('env', 'GITHUB_REF') | default('latest', True) }}"
|
paperlessng_version: "{{ lookup('env', 'GITHUB_REF') | default('latest', True) }}"
|
||||||
- name: debug
|
|
||||||
debug:
|
|
||||||
var: paperlessng_version
|
|
||||||
- name: install paperless-ng with default parameters
|
- name: install paperless-ng with default parameters
|
||||||
include_role:
|
include_role:
|
||||||
name: ansible
|
name: ansible
|
||||||
|
@ -116,12 +116,12 @@
|
|||||||
- name: package app
|
- name: package app
|
||||||
archive:
|
archive:
|
||||||
path: "{{ gitdir.path }}/dist/"
|
path: "{{ gitdir.path }}/dist/"
|
||||||
dest: "{{ gitdir.path }}/paperless-ng-{{ paperlessng_version }}.tar.xz"
|
dest: "{{ gitdir.path }}/paperless-ng-{{ paperlessng_commit }}.tar.xz"
|
||||||
format: xz
|
format: xz
|
||||||
|
|
||||||
- name: extract paperless-ng
|
- name: extract paperless-ng
|
||||||
unarchive:
|
unarchive:
|
||||||
src: "{{ gitdir.path }}/paperless-ng-{{ paperlessng_version }}.tar.xz"
|
src: "{{ gitdir.path }}/paperless-ng-{{ paperlessng_commit }}.tar.xz"
|
||||||
remote_src: yes
|
remote_src: yes
|
||||||
dest: "{{ tempdir.path }}"
|
dest: "{{ tempdir.path }}"
|
||||||
|
|
||||||
|
@ -111,23 +111,65 @@
|
|||||||
register: latest_release
|
register: latest_release
|
||||||
- name: parse latest release version
|
- name: parse latest release version
|
||||||
set_fact:
|
set_fact:
|
||||||
paperlessng_version: "{{ latest_release.json['tag_name'] | regex_replace('^ng-(.+)$', '\\1') }}"
|
paperlessng_version: "{{ latest_release.json['tag_name'] }}"
|
||||||
when: paperlessng_version == "latest"
|
when: paperlessng_version == "latest"
|
||||||
|
|
||||||
# TODO store commit hash of installed version, use instead of version number
|
- block:
|
||||||
|
- name: sanitize version string
|
||||||
|
set_fact:
|
||||||
|
paperlessng_version: "{{ paperlessng_version | regex_replace('^ng-(\\d+\\.\\d+\\.\\d+)$', '\\1') }}"
|
||||||
|
- name: get tag data
|
||||||
|
uri:
|
||||||
|
url: https://api.github.com/repos/jonaswinkler/paperless-ng/tags
|
||||||
|
method: GET
|
||||||
|
register: tags
|
||||||
|
- name: get commit for target tag
|
||||||
|
set_fact:
|
||||||
|
paperlessng_commit: "{{ tags.json | json_query('[?name==`ng-' + paperlessng_version +'`] | [0].commit.sha') }}"
|
||||||
|
when: paperlessng_version | regex_search("^(ng-)?(\d+\.\d+\.\d+)$")
|
||||||
|
|
||||||
|
- block:
|
||||||
|
- name: check if version is branch
|
||||||
|
uri:
|
||||||
|
url: "https://api.github.com/repos/jonaswinkler/paperless-ng/branches/{{ paperlessng_version }}"
|
||||||
|
method: GET
|
||||||
|
status_code: [200, 404]
|
||||||
|
register: branch
|
||||||
|
- name: get commit for target branch
|
||||||
|
set_fact:
|
||||||
|
paperlessng_commit: "{{ branch.json | json_query('commit.sha') }}"
|
||||||
|
when: branch.status == 200
|
||||||
|
- block:
|
||||||
|
- name: check if version is commit-or-ref
|
||||||
|
uri:
|
||||||
|
url: "https://api.github.com/repos/jonaswinkler/paperless-ng/commits/{{ paperlessng_version }}"
|
||||||
|
method: GET
|
||||||
|
status_code: [200, 404, 422]
|
||||||
|
register: commit
|
||||||
|
- name: get commit for target commit-or-ref
|
||||||
|
set_fact:
|
||||||
|
paperlessng_commit: "{{ commit.json | json_query('sha') }}"
|
||||||
|
when: commit.status == 200
|
||||||
|
- name: fail
|
||||||
|
fail:
|
||||||
|
msg: "Can not determine commit from `paperlessng_version=={{ paperlessng_version }}`!"
|
||||||
|
when: commit.status != 200
|
||||||
|
when: branch.status == 404
|
||||||
|
when: not(paperlessng_version | regex_search("^(ng-)?(\d+\.\d+\.\d+)$"))
|
||||||
|
|
||||||
- name: check for paperless-ng installation
|
- name: check for paperless-ng installation
|
||||||
command:
|
command:
|
||||||
cmd: 'grep -Po "(?<=Paperless-ng )\d+\.\d+\.\d+" {{ paperlessng_directory }}/docs/changelog.html'
|
cmd: "cat {{ paperlessng_directory }}/.installed_version"
|
||||||
changed_when: '"No such file or directory" in paperlessng_current_version.stderr or paperlessng_current_version.stdout != paperlessng_version | string'
|
changed_when: '"No such file or directory" in paperlessng_current_commit.stderr or paperlessng_current_commit.stdout != paperlessng_commit | string'
|
||||||
failed_when: false
|
failed_when: false
|
||||||
ignore_errors: yes
|
ignore_errors: yes
|
||||||
register: paperlessng_current_version
|
register: paperlessng_current_commit
|
||||||
|
|
||||||
- name: register current state
|
- name: register current state
|
||||||
set_fact:
|
set_fact:
|
||||||
fresh_installation: '{{ "No such file or directory" in paperlessng_current_version.stderr }}'
|
fresh_installation: '{{ "No such file or directory" in paperlessng_current_commit.stderr }}'
|
||||||
update_installation: '{{ "No such file or directory" not in paperlessng_current_version.stderr and paperlessng_current_version.stdout != paperlessng_version | string }}'
|
update_installation: '{{ "No such file or directory" not in paperlessng_current_commit.stderr and paperlessng_current_commit.stdout != paperlessng_commit | string }}'
|
||||||
reconfigure_only: "{{ paperlessng_current_version.stdout == paperlessng_version | string }}"
|
reconfigure_only: "{{ paperlessng_current_commit.stdout == paperlessng_commit | string }}"
|
||||||
|
|
||||||
- block:
|
- block:
|
||||||
- name: backup current paperless-ng installation
|
- name: backup current paperless-ng installation
|
||||||
@ -156,14 +198,14 @@
|
|||||||
uri:
|
uri:
|
||||||
url: "https://github.com/jonaswinkler/paperless-ng/releases/download/ng-{{ paperlessng_version }}/paperless-ng-{{ paperlessng_version }}.tar.xz"
|
url: "https://github.com/jonaswinkler/paperless-ng/releases/download/ng-{{ paperlessng_version }}/paperless-ng-{{ paperlessng_version }}.tar.xz"
|
||||||
method: GET
|
method: GET
|
||||||
status_code: [200, 302, 404]
|
status_code: [200, 404]
|
||||||
register: release_archive
|
register: release_archive
|
||||||
- name: install paperless-ng from source
|
- name: install paperless-ng from source
|
||||||
include_tasks: install-source.yml
|
include_tasks: install-source.yml
|
||||||
when: release_archive.status == 404
|
when: release_archive.status == 404
|
||||||
- name: install paperless-ng from release archive
|
- name: install paperless-ng from release archive
|
||||||
include_tasks: install-release.yml
|
include_tasks: install-release.yml
|
||||||
when: release_archive.status != 404
|
when: release_archive.status == 200
|
||||||
- name: change owner and permissions of paperless-ng
|
- name: change owner and permissions of paperless-ng
|
||||||
command:
|
command:
|
||||||
cmd: "{{ item }}"
|
cmd: "{{ item }}"
|
||||||
@ -175,6 +217,13 @@
|
|||||||
- 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 }}"
|
||||||
|
- name: store commit hash of installed version
|
||||||
|
copy:
|
||||||
|
content: "{{ paperlessng_commit }}"
|
||||||
|
dest: "{{ paperlessng_directory }}/.installed_version"
|
||||||
|
owner: "{{ paperlessng_system_user }}"
|
||||||
|
group: "{{ paperlessng_system_group }}"
|
||||||
|
mode: "0440"
|
||||||
- name: remove temporary directory
|
- name: remove temporary directory
|
||||||
file:
|
file:
|
||||||
path: "{{ tempdir.path }}"
|
path: "{{ tempdir.path }}"
|
||||||
@ -197,7 +246,7 @@
|
|||||||
|
|
||||||
- name: rename initial config
|
- name: rename initial config
|
||||||
command:
|
command:
|
||||||
cmd: "mv {{ paperlessng_directory }}/paperless.conf {{ paperlessng_directory }}/paperless.conf.template"
|
cmd: "mv -f {{ paperlessng_directory }}/paperless.conf {{ paperlessng_directory }}/paperless.conf.template"
|
||||||
removes: "{{ paperlessng_directory }}/paperless.conf"
|
removes: "{{ paperlessng_directory }}/paperless.conf"
|
||||||
|
|
||||||
- name: configure paperless-ng
|
- name: configure paperless-ng
|
||||||
@ -408,7 +457,7 @@
|
|||||||
# https://www.freedesktop.org/software/systemd/man/systemd.exec.html
|
# https://www.freedesktop.org/software/systemd/man/systemd.exec.html
|
||||||
{ option: "User", value: "{{ paperlessng_system_user }}" },
|
{ option: "User", value: "{{ paperlessng_system_user }}" },
|
||||||
{ option: "Group", value: "{{ paperlessng_system_group }}" },
|
{ option: "Group", value: "{{ paperlessng_system_group }}" },
|
||||||
{ option: "WorkingDirectory", value: "{{ paperlessng_directory }}/src", },
|
{ option: "WorkingDirectory", value: "{{ paperlessng_directory }}/src" },
|
||||||
{ option: "ProtectSystem", value: "full" },
|
{ option: "ProtectSystem", value: "full" },
|
||||||
{ option: "NoNewPrivileges", value: "true" },
|
{ option: "NoNewPrivileges", value: "true" },
|
||||||
{ option: "PrivateUsers", value: "true" },
|
{ option: "PrivateUsers", value: "true" },
|
||||||
|
Loading…
x
Reference in New Issue
Block a user