* Merge basic install layers
* Move `TACHIDESK_RELEASE_DOWNLOAD_URL` to where it's needed
This improves cachability, because the `ARG` taints all layers following
it. Since we change this arg for every release, the whole container had
to be rebuilt and redownloaded, when only the layer with the actual jar
file needs it.
* Move `ARG`s to the latest layer we can
`ARG`s taint every layer following, so move the `LABEL` to the last
layer, and the JAR download to the second-to-last, allowing for caching
of every layer except those two.
* Merge user creation layers and move `chmod`
The `chmod` needs to be after all copy and download if we want to avoid
permission problems (previous commit was not functional at runtime due
to insufficient permissions). This way, the files will be owned by the
correct user, and readable by all, while not creating unnecessary
layers.
* C: handler for abort
CEF will kill the thread if the GPU process cannot be created. This
brings down Suwayomi with it, so instead just kill the thread and inform
Java about the exception.
* Two-stage build to download an build catch_abort
Building JNI extensions requires JDK, but we don't need it at runtime,
so create a build-step based on JDK, then copy the built binary over
* Add catch handler to github action
* Add `LD_PRELOAD` to startup script
Closes#131
* Script to download and extract a JCEF release
Closely mirrors what KCEF does, but written in glorious AWK
* Call kcef_download and link downloaded JCEF where Suwayomi expects it
The script downloads JCEF into /opt. Link this folder at runtime into
the data folder where Suwayomi expects it. This allows us to easily
bundle the predownloaded release without modifying Suwayomi startup.
Move `LD_PRELOAD` down a bit to avoid warnings about preloading
libcef.so before the symlink exists.
* Add KCEF url to workflow to embed JCEF into container
* Support KCEF
Install native dependencies required by JCEF
Sets up JNI libraries as required by the browser process
Launch Suwayomi in a XVFB environment to fake X11
* Copy libraries to home folder instead
Otherwise, other architectures are not supported
Search path is :
[/usr/java/packages/lib/libnativewindow_awt.so, /usr/lib64/libnativewindow_awt.so, /usr/lib64/libnativewindow_awt.so, /usr/lib/libnativewindow_awt.so, /usr/lib/libnativewindow_awt.so, /home/suwayomi/libnativewindow_awt.so, /home/suwayomi/natives/linux-amd64/libnativewindow_awt.so]
* Overwrite server.conf settings only for provided env vars
Currently on every start the whole server.conf file gets replaced which causes any changed settings during runtime to get lost
* Fix readme formatting
* Add "webUIEnabled" env variable
This is the only setting that can not be changed via the UI
* Remove default values from readme
If we explicitly set the user.home property, then Java doesn't consult
/etc/passwd to determine $HOME, fixing the problems that necessitated
updating /etc/passwd in the first place.
Signed-off-by: Chance Zibolski <chance.zibolski@gmail.com>
Because we use the Java user.home property to get the default
configuration directory, there needs to be an entry for the correct user
in /etc/passwd. For this to work with arbitrary UID/GID, that means
updating /etc/shadow dynamically based on the UID/GID in the container
before starting the application.
Signed-off-by: Chance Zibolski <chance.zibolski@gmail.com>
1. Typo in the preview repo name.
2. Combined the dry-run fail message into the test step
3. Converted the release metadata step to use jq
4. Removed redundant information from the container labels