Commit Graph

1306 Commits

Author SHA1 Message Date
Kostiantyn
7057643b5d Fix ESLint step in UI testing job and add CodeCov tokens (#1084)
* Add missing script line back to the `package.json`

* Set CodeCov token for coverage upload steps

---------

Co-authored-by: Konstantin Koval <kkb@ukr.net>
2024-10-03 18:03:50 +02:00
Kostiantyn
bf765abde4 Fetch all tags during checkout (#1072)
Co-authored-by: Konstantin Koval <kkb@ukr.net>
2024-10-03 13:13:59 +02:00
Kostiantyn
57d5ac5235 Bump version (#1070)
Co-authored-by: Konstantin Koval <kkb@ukr.net>
2024-10-01 16:11:02 +02:00
Kostiantyn
dee3a151e9 Update GitHub workflows with various improvements (#1028)
Updated DB images in tests to align with the PROD setup
Try to upload coverage only if tests were executed (passed or failed) - not skipped or canceled
Added ESLint execution after UI tests with results exported to artifact
Shifted scheduled run time from 00 minutes according to GitHub recommendations, as the 00 minutes of each hour is the busiest time
Dynamically extract a list of langs from the repo to use them for CodeQL analysis instead of hardcoded ones
Updated versions of several outdated actions
Added the Autobuild step before CodeQL analysis for GO
Added the Anchore dependency scan job, reporting to the Security tab. I can add steps to manage PR comments with the results, but I need a token to be provided by @viktorstrate
Added the Hadolint Dockerfile scan job, reporting to the Security tab. I can add steps to manage PR comments with the results, but I need a token to be provided by @viktorstrate
Implemented weekly rebuild of images for the latest commit in the master branch and the latest released tag. It will recreate images with the recent base image and 3rd-party dependencies even if there were no new pushes for a long time
Added the Dockle container analysis job to be run on master and tag and validate just pushed images, reporting to the Security tab
Added golangci-lint config to the /api folder, as a starting point and for local usage
Added 2 weekly jobs for Dependabot:
-- Maintain dependencies for GitHub Actions
-- Maintain dependencies for Dockerfile

---------

Co-authored-by: Konstantin Koval
2024-10-01 15:50:44 +03:00
Googol Lee
f861c97b49 Include all heif plugins in one so file. 2024-09-30 19:53:17 +02:00
Googol Lee
9547be075c Build libheif with all dependencies in one so file. 2024-09-30 17:16:09 +02:00
Kostiantyn
d1193c5ca4 Refactoring part 1: Fix some annoying linter warnings in API code (#1064)
* names, constants of reusable strings, removed unneeded `if`, replaced deprecated imports

* more deprecated imports replaced

* What is this?))

* Fix a path and quote a var in Dockerfile

* Addressing review comments

---------

Co-authored-by: Konstantin Koval <kkb@ukr.net>
2024-09-30 14:45:02 +02:00
Kostiantyn
70a3944e21 Bump gqlgen (#1061)
Co-authored-by: Konstantin Koval <kkb@ukr.net>
2024-09-30 11:07:25 +02:00
Googol Lee
a1263feac4 Update gqlgen and fix the code. (#1055) 2024-09-17 17:00:03 +02:00
Googol Lee
340c181442 Use self-building dependencies and update the code with imagemagick. (#1053) 2024-09-17 15:02:23 +02:00
Googol Lee
4b678f201d Fix cache pushing problem. (#1052) 2024-09-13 16:11:29 +02:00
Googol Lee
4655684b49 Fix cache flag in dependencies workflow. (#1050) 2024-09-13 13:41:39 +02:00
Googol Lee
49ae7d17df Fix cache options. (#1049) 2024-09-13 11:44:30 +02:00
Kostiantyn
e8914e0890 new deps (#1048)
Co-authored-by: Konstantin Koval <kkb@ukr.net>
2024-09-12 22:17:01 +02:00
Googol Lee
17b27d7e60 Add build workflow for workers. (#1047) 2024-09-12 19:09:03 +02:00
Amandus
8e602f8d2b docs: Add reminder to url encode postgres password env variable (#1041) 2024-09-06 17:49:48 +02:00
Googol Lee
0ffa7e05fa Bump to golang 1.23 (#1046) 2024-09-06 17:43:19 +02:00
Googol Lee
d91ce8ff42 Rollback uid/gid to 999. (#1044) 2024-09-06 15:34:32 +02:00
Googol Lee
a6cbfc76f3 Back to bookworm. (#1040) 2024-09-06 13:32:22 +02:00
Googol Lee
6e1e1d12ce Update to magick 7 in alpine. (#1035) 2024-09-02 22:12:00 +02:00
Googol Lee
85c1e52b06 Use alpine as base images. (#1033) 2024-09-02 18:35:45 +02:00
Googol Lee
ad13172a32 Switch to Debian testing and imagemagick. (#1021) 2024-08-29 10:30:06 +02:00
Googol Lee
6c5c304492 Fix the default value of BUILD_DATE. (#1027) 2024-08-29 09:01:42 +02:00
Googol Lee
bb66a8b791 Fix release version and date in UI. (#1025) 2024-08-27 21:46:29 +02:00
Jorilx
bef9e7c666 Add support for GIF images (#1024) 2024-08-20 22:41:30 +02:00
Kostiantyn
5438fbb3f4 Update crypto and image versions (#1015)
Co-authored-by: Konstantin Koval <kkb@ukr.net>
2024-08-11 20:02:24 +02:00
Googol Lee
cf1a66975d API server listens with the address of PHOTOVIEW_LISTEN_IP, #1010. (#1014)
Fix the listened host reference in the `main()` function
2024-08-09 17:32:07 +03:00
Googol Lee
ebcbe6c057 Update workflow using Dockerfile. (#1003) 2024-08-03 23:17:54 +02:00
Kostiantyn
4d9ce30583 Bump 'crypto' and 'gorm' versions based on Dependabot PRs (#1008)
Co-authored-by: Konstantin Koval
2024-08-03 19:36:18 +03:00
Googol Lee
bdae9a67ce Add Set up Docker development environment in README.md (#997) 2024-07-23 21:56:30 +02:00
Googol Lee
0345bc1481 Update Set up development environment in README.md. (#995) 2024-07-16 23:10:38 +02:00
dependabot[bot]
7559a609aa Bump the npm_and_yarn group across 1 directory with 4 updates (#991)
Bumps the npm_and_yarn group with 4 updates in the /ui directory: [postcss](https://github.com/postcss/postcss), [braces](https://github.com/micromatch/braces), [ejs](https://github.com/mde/ejs) and [ws](https://github.com/websockets/ws).


Updates `postcss` from 8.4.38 to 8.4.39
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.38...8.4.39)

Updates `braces` from 3.0.2 to 3.0.3
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

Updates `ejs` from 3.1.8 to 3.1.10
- [Release notes](https://github.com/mde/ejs/releases)
- [Commits](https://github.com/mde/ejs/compare/v3.1.8...v3.1.10)

Updates `ws` from 7.5.6 to 7.5.10
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.5.6...7.5.10)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: direct:production
  dependency-group: npm_and_yarn
- dependency-name: braces
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: ejs
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: ws
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-10 19:29:42 +03:00
Blake Schafer
dad4533983 Create CONTRIBUTING.md (#943)
* Create CONTRIBUTING.md

Creating a resource file for any developer who wants to contribute to this open-source project. Adding more details than what was already provided, giving a detailed walkthrough for newcomers on how to make changes in the code.

* Implement the suggestions from the feedback, as well as merge the template from the discussion #934

---------

Co-authored-by: Konstantin Koval <kkb@ukr.net>
2024-07-09 20:56:01 +02:00
Googol Lee
365328457e Building scripts for apt/homebrew platforms. (#993) 2024-07-09 12:34:55 +02:00
Googol Lee
2f8f01b6d3 Add nodemon for ui developing. 2024-07-07 10:05:26 +02:00
Googol Lee
eab10af4a3 Remove loading env from tests. (#988)
* Remove loading env from tests.

* Rollback the test workflow.
2024-07-03 21:28:36 +03:00
Lajos Koszti
10e9e354b5 order root albums by path on settings page (#983)
Once you have more than a few paths assigned to a user, it becomes
quite hard to oversee the list.

Personally, I would add my albums to Photoview one by one, so I can
manage the processing better. For example, I can review and fix the face
recognition for one new album at a time, and I don't need to deal with
too much data.
Since I started to add the albums in a random order, it's relatively
hard to find which album is added and which is not.

An easy fix is to order the photo paths by their name.

- Extended the query of the rootAlbums to order them by path
2024-07-01 20:04:50 +02:00
Kostiantyn
df9af39a16 Validate incoming GPS data (#951)
* Validate incoming GPS data and throw an error if it is incorrect, storing Null values

* Extracted GPS data processing to function in external parser; optimized IF in internal parser; removed unnecessary comments; set exact values for positive test

* Add the migration for removing existing invalid GPS data and its test; added better errors to asserts in the GPS validation test

* Install FFmpeg and ExifTool on the API unit-test environment

* Fix 'stripped.jpg', 'IncorrectGPS.jpg', and 'CorrectGPS.jpg' tests for the external parser

* Optimized data validation in the external parser, returned error by the internal parser for invalid data, updated test to expect errors and handle them

* Switched from error to log entry in case of incorrect GPS data, as error handling is not so transparent in the internal parser

---------

Co-authored-by: Konstantin Koval
2024-06-29 10:32:48 +03:00
Kostiantyn
55d6097cc1 Update GO version in the go.mod and read it by the job to setup the testing environment for unit tests (#980)
Co-authored-by: Konstantin Koval
2024-06-28 14:59:31 +02:00
Googol Lee
e36b09753a Bump go version and modules. (#976)
* Bump go version to 1.22. Bump all go module to the newest version, except pinning libheif@v1.15.1 to match the c lib version in Debian bookworm.

* Update go_wrapper.sh to fit golang image.

* Update the way to set go envs.

* Test against go 1.22

* Set default shell for all building stage in Dockerfile.
2024-06-28 10:10:18 +03:00
Googol Lee
1cd34109b6 Optimize user's album filter. #705 (#962) 2024-06-27 21:21:09 +02:00
Kostiantyn
f79d379e38 Urgent small fixes in the Dockerfile and Compose configs (#972)
* Freeze UID and GID for the `photoview` user inside the image; added alternative permission configs description to the Readme and Makefile (as a comment); switched the default tag in the compose from `2` to `master`, as this is the most common user misunderstanding according to the issues and Discord questions

* Revert back to the tag `2` with the assumption of the release happening soon

---------

Co-authored-by: Konstantin Koval
v2.4.0
2024-06-23 14:28:02 +02:00
Kostiantyn
cd8d086429 Fix missing space and word duplication (#964)
Co-authored-by: Konstantin Koval <kkb@ukr.net>
2024-06-17 13:27:05 +01:00
Kostiantyn
df1610b13c change healthcheck command for MariaDB container (#963)
Co-authored-by: Konstantin Koval
2024-06-02 19:02:14 +01:00
Googol Lee
ddacba85db Fix timeline order with sqlite3. It should be ordered as MySQL and PGSQL like (year, month, day). (#954) 2024-05-31 09:35:41 +01:00
Kostiantyn
6693920b61 Configure shell to fail if any part of piped command chain fails. Fix Hadolint issue DL4006 (#947)
Co-authored-by: Konstantin Koval <kkb@ukr.net>
2024-05-31 09:34:46 +01:00
Kostiantyn
d47bca280e configure SQLite to work in multi-connection mode, so it is not locked when scanner runs a job (#955)
Co-authored-by: Konstantin Koval <kkb@ukr.net>
2024-05-31 09:32:47 +01:00
David Valdez
7c7089e320 Fix download path on custom base path (#889)
Co-authored-by: Konstantin Koval <kkb@ukr.net>
2024-05-20 11:31:53 +01:00
Kostiantyn
0193f7703d Refactor docker deployment and user setup (#863)
* Fix #862, address #826 and maybe some other tickets: reimplemented the docker-compose user setup to enhance product setup experience and cover much more cases.

* make unique DB container name and use it in communication from Photoview

* Removed unnecessary healthcheck for photoview from docker-compose.example.yml, as it is defined in the Dockerfile; optimized Dockerfile combining all RUN directives of PROD stage into 1, which will produce single layer and save some space; added Dockerfile-dev, docker-compose-dev.yml, and new "dev" and "dev-down" directives into Makefile, which allows to setup development env in Docker. Instructions of how to use it are in comments at the beginning of Dockerfile-dev and docker-compose-dev.yml files

* Set RWX permissions to the application's working folder for any user, so that the image could be later run with non-root permissions and the app still be able to do needed operations in the FS

* Enhanced the "Getting started" section in the readme; added the `help` target and enhanced comments in the Makefile; commented out the `docker system prune -f` with the comment about the command and why it is there; added optional and commented by default `7zz` commands to the `backup` section of the Makefile

* Use `slim` base image for final photoview image

* Implement SQLite support according to the PR #851

* Removed deprecated `version` line from compose files; optimized dockerfile to build with less layers and run as non-root; mapped only Photoview related services to Watchtower by default instead of updating all running images on a host; added template for Postgres to the .env; reverted compose executable definition, so the new compose is called when present; added a tip about `lnav` to help

* fix a typo in the username; add support of PostgreSQL; split and optimize backup target in Makefile

* Fixed some typos and styling in Readme, excluded dev-environment setup from the PR; added a list of tips on how to secure Photoview in the Advanced setup section of Readme

* Implemented many security improvements, suggested by @Omar007, switched to the dedicated Darktable's repo to install the latest released version, as asked in #935; switched Watchtower to labels instead of profiles

* forgot the compose file

* move face models back to /app folder; comment out and document unnecessary vars in compose; fix a typo in a few vars

* Exclude Makefile in the root folder from git; documented multiple mounts case better; fixed incorrect SQLite DB path

* Fixed several bugs after complete testing cycle with all 3 DBs

* removed hardcoded port in Dockerfile

* Pin the major version for the `photoview` image for stability

* Revert back to the port 80 inside the container on product owner's request

* Provide a minimal compose file and update the readme accordingly

* Handle incorrect media file and folder permissions; set correct permissions for storage folder; fix healthcheck command for postgres

---------

Co-authored-by: Konstantin Koval <kkb@ukr.net>
2024-05-15 10:58:02 +02:00
Jordan Hellier
4133694bc2 fix: remove logging of database url in place for just dialect (#940) 2024-04-27 13:18:56 +01:00