mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	Determine installed version by git commit hash
This commit is contained in:
		
							
								
								
									
										4
									
								
								.github/workflows/ansible.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/ansible.yml
									
									
									
									
										vendored
									
									
								
							| @@ -21,7 +21,7 @@ jobs: | ||||
|       - name: Install dependencies | ||||
|         run: | | ||||
|           python3 -m pip install --upgrade pip | ||||
|           python3 -m pip install molecule[ansible,docker] | ||||
|           python3 -m pip install molecule[ansible,docker] jmespath | ||||
|           ansible --version | ||||
|           docker --version | ||||
|           molecule --version | ||||
| @@ -47,7 +47,7 @@ jobs: | ||||
|       - name: Install dependencies | ||||
|         run: | | ||||
|           python3 -m pip install --upgrade pip | ||||
|           python3 -m pip install molecule[ansible,docker] | ||||
|           python3 -m pip install molecule[ansible,docker] jmespath | ||||
|           ansible --version | ||||
|           docker --version | ||||
|           molecule --version | ||||
|   | ||||
| @@ -5,9 +5,6 @@ | ||||
|     - name: set github ref as version when available | ||||
|       set_fact: | ||||
|         paperlessng_version: "{{ lookup('env', 'GITHUB_REF') | default('latest', True) }}" | ||||
|     - name: debug | ||||
|       debug: | ||||
|         var: paperlessng_version | ||||
|     - name: install paperless-ng with default parameters | ||||
|       include_role: | ||||
|         name: ansible | ||||
|   | ||||
| @@ -116,12 +116,12 @@ | ||||
| - name: package app | ||||
|   archive: | ||||
|     path: "{{ gitdir.path }}/dist/" | ||||
|     dest: "{{ gitdir.path }}/paperless-ng-{{ paperlessng_version }}.tar.xz" | ||||
|     dest: "{{ gitdir.path }}/paperless-ng-{{ paperlessng_commit }}.tar.xz" | ||||
|     format: xz | ||||
|  | ||||
| - name: extract paperless-ng | ||||
|   unarchive: | ||||
|     src: "{{ gitdir.path }}/paperless-ng-{{ paperlessng_version }}.tar.xz" | ||||
|     src: "{{ gitdir.path }}/paperless-ng-{{ paperlessng_commit }}.tar.xz" | ||||
|     remote_src: yes | ||||
|     dest: "{{ tempdir.path }}" | ||||
|  | ||||
|   | ||||
| @@ -111,23 +111,65 @@ | ||||
|       register: latest_release | ||||
|     - name: parse latest release version | ||||
|       set_fact: | ||||
|         paperlessng_version: "{{ latest_release.json['tag_name'] | regex_replace('^ng-(.+)$', '\\1') }}" | ||||
|         paperlessng_version: "{{ latest_release.json['tag_name'] }}" | ||||
|   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 | ||||
|   command: | ||||
|     cmd: 'grep -Po "(?<=Paperless-ng )\d+\.\d+\.\d+" {{ paperlessng_directory }}/docs/changelog.html' | ||||
|   changed_when: '"No such file or directory" in paperlessng_current_version.stderr or paperlessng_current_version.stdout != paperlessng_version | string' | ||||
|     cmd: "cat {{ paperlessng_directory }}/.installed_version" | ||||
|   changed_when: '"No such file or directory" in paperlessng_current_commit.stderr or paperlessng_current_commit.stdout != paperlessng_commit | string' | ||||
|   failed_when: false | ||||
|   ignore_errors: yes | ||||
|   register: paperlessng_current_version | ||||
|   register: paperlessng_current_commit | ||||
|  | ||||
| - name: register current state | ||||
|   set_fact: | ||||
|     fresh_installation: '{{ "No such file or directory" in paperlessng_current_version.stderr }}' | ||||
|     update_installation: '{{ "No such file or directory" not in paperlessng_current_version.stderr and paperlessng_current_version.stdout != paperlessng_version | string }}' | ||||
|     reconfigure_only: "{{ paperlessng_current_version.stdout == paperlessng_version | string }}" | ||||
|     fresh_installation: '{{ "No such file or directory" in paperlessng_current_commit.stderr }}' | ||||
|     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_commit.stdout == paperlessng_commit | string }}" | ||||
|  | ||||
| - block: | ||||
|     - name: backup current paperless-ng installation | ||||
| @@ -156,14 +198,14 @@ | ||||
|       uri: | ||||
|         url: "https://github.com/jonaswinkler/paperless-ng/releases/download/ng-{{ paperlessng_version }}/paperless-ng-{{ paperlessng_version }}.tar.xz" | ||||
|         method: GET | ||||
|         status_code: [200, 302, 404] | ||||
|         status_code: [200, 404] | ||||
|       register: release_archive | ||||
|     - name: install paperless-ng from source | ||||
|       include_tasks: install-source.yml | ||||
|       when: release_archive.status == 404 | ||||
|     - name: install paperless-ng from release archive | ||||
|       include_tasks: install-release.yml | ||||
|       when: release_archive.status != 404 | ||||
|       when: release_archive.status == 200 | ||||
|     - name: change owner and permissions of paperless-ng | ||||
|       command: | ||||
|         cmd: "{{ item }}" | ||||
| @@ -175,6 +217,13 @@ | ||||
|     - name: move paperless-ng | ||||
|       command: | ||||
|         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 | ||||
|       file: | ||||
|         path: "{{ tempdir.path }}" | ||||
| @@ -197,7 +246,7 @@ | ||||
|  | ||||
| - name: rename initial config | ||||
|   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" | ||||
|  | ||||
| - name: configure paperless-ng | ||||
| @@ -408,7 +457,7 @@ | ||||
|         # https://www.freedesktop.org/software/systemd/man/systemd.exec.html | ||||
|         { option: "User", value: "{{ paperlessng_system_user }}" }, | ||||
|         { option: "Group", value: "{{ paperlessng_system_group }}" }, | ||||
|         { option: "WorkingDirectory", value: "{{ paperlessng_directory }}/src", }, | ||||
|         { option: "WorkingDirectory", value: "{{ paperlessng_directory }}/src" }, | ||||
|         { option: "ProtectSystem", value: "full" }, | ||||
|         { option: "NoNewPrivileges", value: "true" }, | ||||
|         { option: "PrivateUsers", value: "true" }, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Fabian Koller
					Fabian Koller