jellyfin/deployment
Terror-Gene f888c4b641
Fix missing Unraid cache mount
Cache folder was not mounted outside of the Docker image since its separation from the config folder.
Config HostDir was only updated for consistency, previous directory was overridden by unraid into the appdata/appname folder anyway.
Name capitalization was corrected as this is only used by new installations & does not affect current installations/updates.
2019-04-11 03:19:05 +09:30
..
centos-package-x64 Remove superfluous comments 2019-02-09 19:12:55 -05:00
debian-package-armhf Add Debian armhf (Rasberry Pi) build plus crossbuild 2019-02-23 20:07:05 -05:00
debian-package-x64 Use new libexecdir location for jellyfin-ffmpeg 2019-03-28 18:21:25 -04:00
docker Add dependencies.txt entries for Docker builds 2019-01-19 18:45:29 -05:00
fedora-package-x64 Finalise removal of --ffprobe switch 2019-03-12 22:09:18 +00:00
linux-x64 Move dotnet to a per-platform dependency 2019-01-20 12:34:52 -05:00
macos Rename MacOS build 2019-02-18 22:06:44 -05:00
portable Rename framework to portable 2019-02-18 22:07:12 -05:00
ubuntu-package-armhf Split lists echoes into separate lines 2019-03-30 12:19:49 -04:00
ubuntu-package-x64 Fix control file for Microsoft Docker setup 2019-02-09 19:32:06 -05:00
unraid/docker-templates Fix missing Unraid cache mount 2019-04-11 03:19:05 +09:30
win-x64 Copy install script from new location 2019-03-06 09:22:38 -05:00
win-x86 Copy install script from new location 2019-03-06 09:22:38 -05:00
windows Fix Path 2019-02-20 21:04:52 +01:00
common.build.sh Get the version string from build.yaml 2019-03-30 12:42:33 -04:00
README.md Improve description of keep_artifacts flag 2019-02-05 21:37:56 -05:00

Jellyfin Packaging

This directory contains the packaging configuration of Jellyfin for multiple platforms. The specification is below; all package platforms must follow the specification to be compatable with the central build script.

Package List

Operating System Packages

  • debian-package-x64: Package for Debian and Ubuntu amd64 systems.
  • fedora-package-x64: Package for Fedora, CentOS, and Red Hat Enterprise Linux amd64 systems.

Portable Builds (archives)

  • debian-x64: Portable binary archive for Debian amd64 systems.
  • ubuntu-x64: Portable binary archive for Ubuntu amd64 systems.
  • linux-x64: Portable binary archive for generic Linux amd64 systems.
  • osx-x64: Portable binary archive for MacOS amd64 systems.
  • win-x64: Portable binary archive for Windows amd64 systems.
  • win-x86: Portable binary archive for Windows i386 systems.

Other Builds

These builds are not necessarily run from the build script, but are present for other platforms.

  • framework: Compiled .dll for use with .NET Core runtime on any system.
  • docker: Docker manifests for auto-publishing.
  • unraid: unRaid Docker template; not built by build but imported into unRaid directly.
  • win-generic: Portable binary for generic Windows systems.

Package Specification

Dependencies

  • If a platform requires additional build dependencies, the required binary names, i.e. to validate which <binary>, should be specified in a dependencies.txt file inside the platform directory.

  • Each dependency should be present on its own line.

Action Scripts

  • Actions are defined in BASH scripts with the name <action>.sh within the platform directory.

  • The list of valid actions are:

    1. build: Builds a set of binaries.
    2. package: Assembles the compiled binaries into a package.
    3. sign: Performs signing actions on a package.
    4. publish: Performs a publishing action for a package.
    5. clean: Cleans up any artifacts from the previous actions.
  • All package actions are optional, however at least one should generate output files, and any that do should contain a clean action.

  • Actions are executed in the order specified above, and later actions may depend on former actions.

  • Actions except for clean should set -o errexit to terminate on failed actions.

  • The clean action should always exit 0 even if no work is done or it fails.

  • The clean action can be passed a variable as argument 1, named keep_artifacts, containing either the value y or n. It is indended to handle situations when the user runs build --keep-artifacts and should be handled intelligently. Usually, this is used to preserve Docker images while still removing temporary directories.

Output Files

  • Upon completion of the defined actions, at least one output file must be created in the <platform>/pkg-dist directory.

  • Output files will be moved to the directory jellyfin-build/<platform> one directory above the repository root upon completion.

Common Functions

  • A number of common functions are defined in deployment/common.build.sh for use by platform scripts.

  • Each action script should import the common functions to define a number of standard variables.

  • The common variables are:

    • ROOT: The Jellyfin repostiory root, usually ../...
    • CONFIG: The .NET config, usually Release.
    • DOTNETRUNTIME: The .NET --runtime value, platform-dependent.
    • OUTPUT_DIR: The intermediate output dir, usually ./dist/jellyfin_${VERSION}.
    • BUILD_CONTEXT: The Docker build context, usually ../...
    • DOCKERFILE: The Dockerfile, usually Dockerfile in the platform directory.
    • IMAGE_TAG: A tag for the built Docker image.
    • PKG_DIR: The final binary output directory for collection, invariably pkg-dist.
    • ARCHIVE_CMD: The compression/archive command for release archives, usually tar -xvzf or zip.

get_version

Reads the version information from SharedVersion.cs.

Arguments: ROOT

build_jellyfin

Build a standard self-contained binary in the current OS context.

Arguments: ROOT CONFIG DOTNETRUNTIME OUTPUT_DIR

build_jellyfin_docker

Build a standard self-contained binary in a Docker image.

Arguments: BUILD_CONTEXT DOCKERFILE IMAGE_TAG

clean_jellyfin

Clean up a build for housekeeping.

Arguments: ROOT CONFIG OUTPUT_DIR PKG_DIR

package_portable

Produce a compressed archive.

Arguments: ROOT OUTPUT_DIR PKG_DIR ARCHIVE_CMD