From 0def2f0bf33ef314b5557c476189c6e8b7a4eeb4 Mon Sep 17 00:00:00 2001 From: avengermsoft Date: Sun, 31 Jul 2022 22:27:07 +0300 Subject: [PATCH] ci/cd: build linux-musl artifacts (#12886) Documentation - [Alpine Linux](https://github.com/Jackett/Jackett/wiki/Installation-on-Alpine-Linux) - [OpenWrt](https://github.com/Jackett/Jackett/wiki/Installation-on-OpenWrt) Co-authored-by: garfield69 Co-authored-by: garfield69 Co-authored-by: Diego Heras --- README.md | 8 +++++++ azure-pipelines.yml | 21 +++++++++++++++++ src/Jackett.Common/Services/UpdateService.cs | 8 +++++-- src/Jackett.Common/Utils/Variants.cs | 24 ++++++++++++++++++-- src/Jackett.Server/Jackett.Server.csproj | 5 +++- src/Jackett.Updater/Jackett.Updater.csproj | 5 +++- src/Jackett.Updater/Program.cs | 4 +++- 7 files changed, 68 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index d5453aff5..36a75e2ca 100644 --- a/README.md +++ b/README.md @@ -744,10 +744,18 @@ Download and extract the latest `Jackett.Binaries.macOS.tar.gz` or `Jackett.Bina Detailed instructions are available at [LinuxServer.io Jackett Docker](https://hub.docker.com/r/linuxserver/jackett/). The Jackett Docker is highly recommended, especially if you are having Mono stability issues or having issues running Mono on your system e.g. QNAP, Synology. Thanks to [LinuxServer.io](https://linuxserver.io) +## Installation on Alpine Linux +Detailed instructions are available at [Jackett's Wiki](https://github.com/Jackett/Jackett/wiki/Installation-on-Alpine-Linux). + + ## Installation on Synology Jackett is available as a [beta package](https://synocommunity.com/package/jackett) from [SynoCommunity](https://synocommunity.com/) +## Installation on OpenWrt +Detailed instructions are available at [Jackett's Wiki](https://github.com/Jackett/Jackett/wiki/Installation-on-OpenWrt). + + ## Running Jackett behind a reverse proxy When running jackett behind a reverse proxy make sure that the original hostname of the request is passed to Jackett. If HTTPS is used also set the X-Forwarded-Proto header to "https". Don't forget to adjust the "Base path override" Jackett option accordingly. diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 50b98f02d..b2d8f9cc2 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -78,6 +78,27 @@ stages: runtime: linux-arm64 archiveType: tar artifactName: Jackett.Binaries.LinuxARM64.tar.gz + LinuxMuslAMDx64: + buildDescription: Linux musl AMD x64 + imageName: ubuntu-20.04 + framework: $(netCoreFramework) + runtime: linux-musl-x64 + archiveType: tar + artifactName: Jackett.Binaries.LinuxMuslAMDx64.tar.gz + LinuxMuslARM32: + buildDescription: Linux musl ARM32 + imageName: ubuntu-20.04 + framework: $(netCoreFramework) + runtime: linux-musl-arm + archiveType: tar + artifactName: Jackett.Binaries.LinuxMuslARM32.tar.gz + LinuxMuslARM64: + buildDescription: Linux musl ARM64 + imageName: ubuntu-20.04 + framework: $(netCoreFramework) + runtime: linux-musl-arm64 + archiveType: tar + artifactName: Jackett.Binaries.LinuxMuslARM64.tar.gz pool: vmImage: $(imageName) displayName: ${{ variables.buildDescription }} diff --git a/src/Jackett.Common/Services/UpdateService.cs b/src/Jackett.Common/Services/UpdateService.cs index 8be99be54..37d3e0124 100644 --- a/src/Jackett.Common/Services/UpdateService.cs +++ b/src/Jackett.Common/Services/UpdateService.cs @@ -161,7 +161,9 @@ namespace Jackett.Common.Services private string GetUpdaterPath(string tempDirectory) => variant == Variants.JackettVariant.CoreMacOs || variant == Variants.JackettVariant.CoreMacOsArm64 || variant == Variants.JackettVariant.CoreLinuxAmdx64 || variant == Variants.JackettVariant.CoreLinuxArm32 || - variant == Variants.JackettVariant.CoreLinuxArm64 + variant == Variants.JackettVariant.CoreLinuxArm64 || + variant == Variants.JackettVariant.CoreLinuxMuslAmdx64 || variant == Variants.JackettVariant.CoreLinuxMuslArm32 || + variant == Variants.JackettVariant.CoreLinuxMuslArm64 ? Path.Combine(tempDirectory, "Jackett", "JackettUpdater") : Path.Combine(tempDirectory, "Jackett", "JackettUpdater.exe"); @@ -265,7 +267,9 @@ namespace Jackett.Common.Services if (variant == Variants.JackettVariant.CoreMacOs || variant == Variants.JackettVariant.CoreMacOsArm64 || variant == Variants.JackettVariant.CoreLinuxAmdx64 || variant == Variants.JackettVariant.CoreLinuxArm32 - || variant == Variants.JackettVariant.CoreLinuxArm64 || variant == Variants.JackettVariant.Mono) + || variant == Variants.JackettVariant.CoreLinuxArm64 || variant == Variants.JackettVariant.Mono + || variant == Variants.JackettVariant.CoreLinuxMuslAmdx64 || variant == Variants.JackettVariant.CoreLinuxMuslArm32 + || variant == Variants.JackettVariant.CoreLinuxMuslArm64) { // When the files get extracted, the execute permission for jackett and JackettUpdater don't get carried across diff --git a/src/Jackett.Common/Utils/Variants.cs b/src/Jackett.Common/Utils/Variants.cs index a9bc5020f..9420da011 100644 --- a/src/Jackett.Common/Utils/Variants.cs +++ b/src/Jackett.Common/Utils/Variants.cs @@ -15,7 +15,10 @@ namespace Jackett.Common.Utils CoreMacOsArm64, CoreLinuxAmdx64, CoreLinuxArm32, - CoreLinuxArm64 + CoreLinuxArm64, + CoreLinuxMuslAmdx64, + CoreLinuxMuslArm32, + CoreLinuxMuslArm64 } public JackettVariant GetVariant() @@ -29,12 +32,21 @@ namespace Jackett.Common.Utils return JackettVariant.CoreMacOs; if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) && RuntimeInformation.ProcessArchitecture == Architecture.Arm64) return JackettVariant.CoreMacOsArm64; +#if ISLINUXMUSL + if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && RuntimeInformation.ProcessArchitecture == Architecture.X64) + return JackettVariant.CoreLinuxMuslAmdx64; + if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && RuntimeInformation.ProcessArchitecture == Architecture.Arm) + return JackettVariant.CoreLinuxMuslArm32; + if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && RuntimeInformation.ProcessArchitecture == Architecture.Arm64) + return JackettVariant.CoreLinuxMuslArm64; +#else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && RuntimeInformation.ProcessArchitecture == Architecture.X64) return JackettVariant.CoreLinuxAmdx64; if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && RuntimeInformation.ProcessArchitecture == Architecture.Arm) return JackettVariant.CoreLinuxArm32; if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && RuntimeInformation.ProcessArchitecture == Architecture.Arm64) return JackettVariant.CoreLinuxArm64; +#endif } else { @@ -67,6 +79,12 @@ namespace Jackett.Common.Utils return "Jackett.Binaries.LinuxARM32.tar.gz"; case JackettVariant.CoreLinuxArm64: return "Jackett.Binaries.LinuxARM64.tar.gz"; + case JackettVariant.CoreLinuxMuslAmdx64: + return "Jackett.Binaries.LinuxMuslAMDx64.tar.gz"; + case JackettVariant.CoreLinuxMuslArm32: + return "Jackett.Binaries.LinuxMuslARM32.tar.gz"; + case JackettVariant.CoreLinuxMuslArm64: + return "Jackett.Binaries.LinuxMuslARM64.tar.gz"; default: return ""; } @@ -76,7 +94,9 @@ namespace Jackett.Common.Utils { return (variant == JackettVariant.CoreMacOs || variant == JackettVariant.CoreMacOsArm64 || variant == JackettVariant.CoreLinuxAmdx64 || variant == JackettVariant.CoreLinuxArm32 - || variant == JackettVariant.CoreLinuxArm64); + || variant == JackettVariant.CoreLinuxArm64 + || variant == JackettVariant.CoreLinuxMuslAmdx64 || variant == JackettVariant.CoreLinuxMuslArm32 + || variant == JackettVariant.CoreLinuxMuslArm64); } } } diff --git a/src/Jackett.Server/Jackett.Server.csproj b/src/Jackett.Server/Jackett.Server.csproj index 6f0664420..a5a4fb503 100644 --- a/src/Jackett.Server/Jackett.Server.csproj +++ b/src/Jackett.Server/Jackett.Server.csproj @@ -6,6 +6,7 @@ Exe false + ISLINUXMUSL @@ -64,7 +65,9 @@ - + + DefineConstants=ISLINUXMUSL + diff --git a/src/Jackett.Updater/Jackett.Updater.csproj b/src/Jackett.Updater/Jackett.Updater.csproj index f536c127e..445c000c6 100644 --- a/src/Jackett.Updater/Jackett.Updater.csproj +++ b/src/Jackett.Updater/Jackett.Updater.csproj @@ -10,6 +10,7 @@ false + ISLINUXMUSL @@ -18,7 +19,9 @@ - + + DefineConstants=ISLINUXMUSL + diff --git a/src/Jackett.Updater/Program.cs b/src/Jackett.Updater/Program.cs index 26e844cdc..73512f70c 100644 --- a/src/Jackett.Updater/Program.cs +++ b/src/Jackett.Updater/Program.cs @@ -671,7 +671,9 @@ namespace Jackett.Updater if (variant == Variants.JackettVariant.CoreMacOs || variant == Variants.JackettVariant.CoreMacOsArm64 || variant == Variants.JackettVariant.CoreLinuxAmdx64 || variant == Variants.JackettVariant.CoreLinuxArm32 - || variant == Variants.JackettVariant.CoreLinuxArm64) + || variant == Variants.JackettVariant.CoreLinuxArm64 + || variant == Variants.JackettVariant.CoreLinuxMuslAmdx64 || variant == Variants.JackettVariant.CoreLinuxMuslArm32 + || variant == Variants.JackettVariant.CoreLinuxMuslArm64) { startInfo.UseShellExecute = false; startInfo.CreateNoWindow = true;