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 <garfield69@outlook.com>
Co-authored-by: garfield69 <garfieldsixtynine@gmail.com>
Co-authored-by: Diego Heras <ngosang@hotmail.es>
This commit is contained in:
avengermsoft 2022-07-31 22:27:07 +03:00 committed by GitHub
parent 9c0b620721
commit 0def2f0bf3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 68 additions and 7 deletions

View File

@ -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.

View File

@ -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 }}

View File

@ -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

View File

@ -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);
}
}
}

View File

@ -6,6 +6,7 @@
<OutputType>Exe</OutputType>
<NoWarn></NoWarn>
<ServerGarbageCollection>false</ServerGarbageCollection>
<DefineConstants Condition="'$(RuntimeIdentifier)' == 'linux-musl-x64' or '$(RuntimeIdentifier)' == 'linux-musl-arm' or '$(RuntimeIdentifier)' == 'linux-musl-arm64'">ISLINUXMUSL</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net6.0|AnyCPU'">
@ -64,7 +65,9 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Jackett.Common\Jackett.Common.csproj" />
<ProjectReference Include="..\Jackett.Common\Jackett.Common.csproj">
<Properties Condition="$(DefineConstants.Contains('ISLINUXMUSL')) == 'true'">DefineConstants=ISLINUXMUSL</Properties>
</ProjectReference>
</ItemGroup>
<ItemGroup>

View File

@ -10,6 +10,7 @@
<NoWarn />
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningsAsErrors />
<DefineConstants Condition="'$(RuntimeIdentifier)' == 'linux-musl-x64' or '$(RuntimeIdentifier)' == 'linux-musl-arm' or '$(RuntimeIdentifier)' == 'linux-musl-arm64'">ISLINUXMUSL</DefineConstants>
</PropertyGroup>
<!-- Conditionally obtain references for the .NET461 target -->
@ -18,7 +19,9 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Jackett.Common\Jackett.Common.csproj" />
<ProjectReference Include="..\Jackett.Common\Jackett.Common.csproj">
<Properties Condition="$(DefineConstants.Contains('ISLINUXMUSL')) == 'true'">DefineConstants=ISLINUXMUSL</Properties>
</ProjectReference>
</ItemGroup>
</Project>

View File

@ -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;