mirror of
https://github.com/Jackett/Jackett
synced 2025-01-03 05:36:44 +00:00
Add Azure Pipelines support (#7024)
* Add Azure Pipelines support * Move to correct folder * Make display names clearer
This commit is contained in:
parent
5bb163d521
commit
43ddc7a854
1 changed files with 385 additions and 0 deletions
385
azure-pipelines.yml
Normal file
385
azure-pipelines.yml
Normal file
|
@ -0,0 +1,385 @@
|
|||
name: $(majorVersion).$(minorVersion).$(patchVersion)
|
||||
variables:
|
||||
majorVersion: 0
|
||||
minorVersion: 13
|
||||
patchVersion: $[counter(variables['minorVersion'], 1)] #this will reset when we bump minor
|
||||
jackettVersion: $(majorVersion).$(minorVersion).$(patchVersion)
|
||||
buildConfiguration: Release
|
||||
netCoreFramework: netcoreapp3.1
|
||||
|
||||
stages:
|
||||
- stage: BuildJackett
|
||||
displayName: Create Binaries
|
||||
jobs:
|
||||
- job: Build
|
||||
workspace:
|
||||
clean: all
|
||||
strategy:
|
||||
matrix:
|
||||
Mono:
|
||||
buildDescription: Mono
|
||||
imageName: ubuntu-latest
|
||||
framework: net461
|
||||
runtime: linux-x64
|
||||
archiveType: tar
|
||||
artifactName: Jackett.Binaries.Mono.tar.gz
|
||||
Windows:
|
||||
buildDescription: Windows
|
||||
imageName: windows-latest
|
||||
framework: netcoreapp3.1
|
||||
runtime: win-x86
|
||||
archiveType: zip
|
||||
artifactName: Jackett.Binaries.Windows.zip
|
||||
macOS:
|
||||
buildDescription: macOS
|
||||
imageName: macOS-latest
|
||||
framework: $(netCoreFramework)
|
||||
runtime: osx-x64
|
||||
archiveType: tar
|
||||
artifactName: Jackett.Binaries.macOS.tar.gz
|
||||
LinuxAmdx64:
|
||||
buildDescription: Linux AMD x64
|
||||
imageName: ubuntu-latest
|
||||
framework: $(netCoreFramework)
|
||||
runtime: linux-x64
|
||||
archiveType: tar
|
||||
artifactName: Jackett.Binaries.LinuxAMDx64.tar.gz
|
||||
LinuxARM32:
|
||||
buildDescription: Linux ARM32
|
||||
imageName: ubuntu-latest
|
||||
framework: $(netCoreFramework)
|
||||
runtime: linux-arm
|
||||
archiveType: tar
|
||||
artifactName: Jackett.Binaries.LinuxARM32.tar.gz
|
||||
LinuxARM64:
|
||||
buildDescription: Linux ARM64
|
||||
imageName: ubuntu-latest
|
||||
framework: $(netCoreFramework)
|
||||
runtime: linux-arm64
|
||||
archiveType: tar
|
||||
artifactName: Jackett.Binaries.LinuxARM64.tar.gz
|
||||
pool:
|
||||
vmImage: $(imageName)
|
||||
displayName: ${{ variables.buildDescription }}
|
||||
steps:
|
||||
- checkout: self
|
||||
|
||||
- task: UseDotNet@2
|
||||
displayName: Install .NET Core SDK
|
||||
inputs:
|
||||
packageType: sdk
|
||||
version: 3.1.100
|
||||
installationPath: $(Agent.ToolsDirectory)/dotnet
|
||||
|
||||
- task: DotNetCoreCLI@2
|
||||
displayName: Build Jackett Server
|
||||
inputs:
|
||||
command: publish
|
||||
projects: 'src/Jackett.Server/Jackett.Server.csproj'
|
||||
publishWebProjects: false
|
||||
zipAfterPublish: false
|
||||
arguments: '--configuration $(buildConfiguration) --runtime $(runtime) --framework $(framework) --output $(Build.BinariesDirectory) /p:AssemblyVersion=$(jackettVersion) /p:FileVersion=$(jackettVersion) /p:InformationalVersion=$(jackettVersion) /p:Version=$(jackettVersion)'
|
||||
|
||||
- task: DotNetCoreCLI@2
|
||||
displayName: Build Jackett Updater
|
||||
inputs:
|
||||
command: publish
|
||||
projects: 'src/Jackett.Updater/Jackett.Updater.csproj'
|
||||
publishWebProjects: false
|
||||
zipAfterPublish: false
|
||||
arguments: '--configuration $(buildConfiguration) --runtime $(runtime) --framework $(framework) --output $(Build.BinariesDirectory) /p:AssemblyVersion=$(jackettVersion) /p:FileVersion=$(jackettVersion) /p:InformationalVersion=$(jackettVersion) /p:Version=$(jackettVersion)'
|
||||
|
||||
- task: DotNetCoreCLI@2
|
||||
displayName: Build Jackett Tray (Windows only)
|
||||
condition: and(succeeded(), startsWith(variables['runtime'], 'win'))
|
||||
inputs:
|
||||
command: publish
|
||||
projects: 'src/Jackett.Tray/Jackett.Tray.csproj'
|
||||
publishWebProjects: false
|
||||
zipAfterPublish: false
|
||||
arguments: '--configuration $(buildConfiguration) --runtime $(runtime) --framework $(framework) --output $(Build.BinariesDirectory) /p:AssemblyVersion=$(jackettVersion) /p:FileVersion=$(jackettVersion) /p:InformationalVersion=$(jackettVersion) /p:Version=$(jackettVersion)'
|
||||
|
||||
- task: DotNetCoreCLI@2
|
||||
displayName: Build Jackett Service (Windows only)
|
||||
condition: and(succeeded(), startsWith(variables['runtime'], 'win'))
|
||||
inputs:
|
||||
command: publish
|
||||
projects: 'src/Jackett.Service/Jackett.Service.csproj'
|
||||
publishWebProjects: false
|
||||
zipAfterPublish: false
|
||||
arguments: '--configuration $(buildConfiguration) --runtime $(runtime) --framework $(framework) --output $(Build.BinariesDirectory) /p:AssemblyVersion=$(jackettVersion) /p:FileVersion=$(jackettVersion) /p:InformationalVersion=$(jackettVersion) /p:Version=$(jackettVersion)'
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: Copy Jackett Server
|
||||
inputs:
|
||||
SourceFolder: $(Build.BinariesDirectory)/Jackett.Server
|
||||
contents: '**'
|
||||
targetFolder: $(Build.BinariesDirectory)/Jackett
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: Copy Jackett Updater
|
||||
inputs:
|
||||
SourceFolder: $(Build.BinariesDirectory)/Jackett.Updater
|
||||
contents: JackettUpdater*
|
||||
targetFolder: $(Build.BinariesDirectory)/Jackett
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: Copy Jackett Tray (Windows only)
|
||||
condition: and(succeeded(), startsWith(variables['runtime'], 'win'))
|
||||
inputs:
|
||||
SourceFolder: $(Build.BinariesDirectory)/Jackett.Tray
|
||||
contents: |
|
||||
System.Drawing.dll
|
||||
System.Security.Cryptography.ProtectedData.dll
|
||||
WindowsBase.dll
|
||||
targetFolder: $(Build.BinariesDirectory)/Jackett
|
||||
overWrite: true
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: Copy Jackett Tray Part 2 (Windows only)
|
||||
condition: and(succeeded(), startsWith(variables['runtime'], 'win'))
|
||||
inputs:
|
||||
SourceFolder: $(Build.BinariesDirectory)/Jackett.Tray
|
||||
contents: '*'
|
||||
targetFolder: $(Build.BinariesDirectory)/Jackett
|
||||
overWrite: false
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: Copy Jackett Service (Windows only)
|
||||
condition: and(succeeded(), startsWith(variables['runtime'], 'win'))
|
||||
inputs:
|
||||
SourceFolder: $(Build.BinariesDirectory)/Jackett.Service
|
||||
contents: JackettService*
|
||||
targetFolder: $(Build.BinariesDirectory)/Jackett
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: Copy Mono Specific Scripts
|
||||
condition: and(succeeded(), startsWith(variables['buildDescription'], 'Mono'))
|
||||
inputs:
|
||||
SourceFolder: $(Build.SourcesDirectory)
|
||||
contents: |
|
||||
install_service_systemd_mono.sh
|
||||
Upstart.config
|
||||
targetFolder: $(Build.BinariesDirectory)/Jackett
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: Copy macOS Specific Scripts
|
||||
condition: and(succeeded(), startsWith(variables['buildDescription'], 'macOS'))
|
||||
inputs:
|
||||
SourceFolder: $(Build.SourcesDirectory)
|
||||
contents: install_service_macos
|
||||
targetFolder: $(Build.BinariesDirectory)/Jackett
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: Copy Linux Specific Scripts
|
||||
condition: and(succeeded(), startsWith(variables['buildDescription'], 'Linux'))
|
||||
inputs:
|
||||
SourceFolder: $(Build.SourcesDirectory)
|
||||
contents: |
|
||||
install_service_systemd.sh
|
||||
jackett_launcher.sh
|
||||
targetFolder: $(Build.BinariesDirectory)/Jackett
|
||||
|
||||
#There is an issue with Mono 5.8 (fixed in Mono 5.12) where its expecting to use its own patched version of System.Net.Http.dll, instead of the version supplied in folder
|
||||
#https://github.com/dotnet/corefx/issues/19914
|
||||
#https://bugzilla.xamarin.com/show_bug.cgi?id=60315
|
||||
#The workaround is to delete System.Net.Http.dll and patch the .exe.config file
|
||||
#Mono on FreeBSD doesn't like the bundled System.Runtime.InteropServices.RuntimeInformation -> Delete it
|
||||
#https://github.com/dotnet/corefx/issues/23989
|
||||
#https://github.com/Jackett/Jackett/issues/3547
|
||||
- task: PowerShell@2
|
||||
displayName: Patch Mono Build (Mono only)
|
||||
condition: and(succeeded(), startsWith(variables['buildDescription'], 'Mono'))
|
||||
inputs:
|
||||
workingDirectory: $(Build.BinariesDirectory)/Jackett
|
||||
targetType: inline
|
||||
script: |
|
||||
$file = '$(Build.BinariesDirectory)/Jackett/JackettConsole.exe.config'
|
||||
$xml = [xml] (Get-Content $file)
|
||||
$newVersion = $xml.SelectSingleNode("configuration/runtime/*[name()='assemblyBinding']/*[name()='dependentAssembly']/*[name()='assemblyIdentity'][@name='System.Net.Http']/../*[name()='bindingRedirect']/@newVersion")
|
||||
$newVersion.Value = '4.0.0.0'
|
||||
$xml.Save($file)
|
||||
Remove-Item '$(Build.BinariesDirectory)/Jackett/System.Net.Http.dll'
|
||||
Remove-Item '$(Build.BinariesDirectory)/Jackett/System.Runtime.InteropServices.RuntimeInformation.dll'
|
||||
|
||||
- task: Bash@3
|
||||
displayName: Set Folder and File Permissions (Mono, Linux and macOS)
|
||||
condition: and(succeeded(), not(startsWith(variables['runtime'], 'win')))
|
||||
inputs:
|
||||
workingDirectory: $(Build.BinariesDirectory)/Jackett
|
||||
targetType: inline
|
||||
script: |
|
||||
chmod 755 $(find "$(Build.BinariesDirectory)"/Jackett -type d)
|
||||
chmod 644 $(find "$(Build.BinariesDirectory)"/Jackett -type f)
|
||||
chmod 755 jackett
|
||||
chmod 755 JackettUpdater
|
||||
if [ -f install_service_systemd_mono.sh ]; then chmod 755 install_service_systemd_mono.sh; fi
|
||||
if [ -f install_service_macos ]; then chmod 755 install_service_macos; fi
|
||||
if [ -f install_service_systemd.sh ]; then chmod 755 install_service_systemd.sh; fi
|
||||
if [ -f jackett_launcher.sh ]; then chmod 755 jackett_launcher.sh; fi
|
||||
|
||||
- task: ArchiveFiles@2
|
||||
displayName: Compress Binaries
|
||||
inputs:
|
||||
rootFolderOrFile: $(Build.BinariesDirectory)/Jackett
|
||||
includeRootFolder: true
|
||||
archiveType: '$(archiveType)'
|
||||
tarCompression: gz
|
||||
archiveFile: '$(Build.ArtifactStagingDirectory)/$(artifactName)'
|
||||
|
||||
- task: CmdLine@2
|
||||
displayName: Create Jackett Installer (Windows only)
|
||||
condition: and(succeeded(), startsWith(variables['runtime'], 'win'))
|
||||
inputs:
|
||||
script: >
|
||||
iscc.exe $(Build.SourcesDirectory)/Installer.iss
|
||||
/O"$(Build.ArtifactStagingDirectory)"
|
||||
/DMyFileForVersion=$(Build.BinariesDirectory)/Jackett/Jackett.Common.dll
|
||||
/DMySourceFolder=$(Build.BinariesDirectory)/Jackett
|
||||
/DMyOutputFilename=Jackett.Installer.Windows
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
inputs:
|
||||
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
|
||||
|
||||
- task: DotNetCoreCLI@2
|
||||
displayName: Unit Tests (Windows only)
|
||||
condition: and(succeeded(), startsWith(variables['runtime'], 'win'))
|
||||
inputs:
|
||||
command: test
|
||||
projects: '**/*.Test*/*.csproj'
|
||||
arguments: '--configuration $(buildConfiguration) --framework $(framework)'
|
||||
|
||||
- task: DotNetCoreCLI@2
|
||||
displayName: Unit Tests (Mono, Linux and macOS)
|
||||
condition: and(succeeded(), not(startsWith(variables['runtime'], 'win')))
|
||||
inputs:
|
||||
command: test
|
||||
projects: '**/*.Test*/*.csproj'
|
||||
arguments: '--configuration $(buildConfiguration) --framework $(framework) --runtime $(runtime)'
|
||||
|
||||
|
||||
- stage: Integration
|
||||
displayName: Integration Tests
|
||||
dependsOn: BuildJackett
|
||||
jobs:
|
||||
- job: Selenium
|
||||
workspace:
|
||||
clean: all
|
||||
strategy:
|
||||
matrix:
|
||||
Mono:
|
||||
buildDescription: Mono
|
||||
imageName: ubuntu-latest
|
||||
artifactName: Jackett.Binaries.Mono.tar.gz
|
||||
Windows:
|
||||
buildDescription: Windows
|
||||
imageName: windows-latest
|
||||
artifactName: Jackett.Binaries.Windows.zip
|
||||
# Enable once ChromeDriver is deployed to macOS image https://github.com/actions/virtual-environments/issues/7
|
||||
# macOS:
|
||||
# buildDescription: macOS
|
||||
# imageName: macOS-latest
|
||||
# artifactName: Jackett.Binaries.macOS.tar.gz
|
||||
LinuxAmdx64:
|
||||
buildDescription: Linux AMD x64
|
||||
imageName: ubuntu-latest
|
||||
artifactName: Jackett.Binaries.LinuxAMDx64.tar.gz
|
||||
pool:
|
||||
vmImage: $(imageName)
|
||||
displayName: ${{ variables.buildDescription }}
|
||||
steps:
|
||||
- checkout: self
|
||||
|
||||
- task: DownloadPipelineArtifact@2
|
||||
displayName: Download artifacts for integration tests
|
||||
inputs:
|
||||
patterns: '**/Jackett*'
|
||||
path: $(Build.ArtifactStagingDirectory)
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: Install Jackett (Windows only)
|
||||
condition: and(succeeded(), eq(variables['buildDescription'], 'Windows'))
|
||||
inputs:
|
||||
workingDirectory: $(Build.ArtifactStagingDirectory)/drop
|
||||
targetType: inline
|
||||
script: |
|
||||
Start-Process ./Jackett.Installer.Windows.exe /silent -NoNewWindow -Wait
|
||||
|
||||
- task: Bash@3
|
||||
displayName: Install Jackett (Mono, Linux and macOS)
|
||||
condition: and(succeeded(), ne(variables['buildDescription'], 'Windows'))
|
||||
inputs:
|
||||
workingDirectory: $(Build.ArtifactStagingDirectory)/drop
|
||||
targetType: inline
|
||||
script: |
|
||||
tar xzf "$(artifactName)"
|
||||
cd Jackett
|
||||
if [[ "$(artifactName)" == *"Mono"* ]]; then mono --version; fi
|
||||
if [[ "$(artifactName)" == *"Mono"* ]]; then sudo ./install_service_systemd_mono.sh; fi
|
||||
if [[ "$(artifactName)" == *"macOS"* ]]; then sudo ./install_service_macos; fi
|
||||
if [[ "$(artifactName)" == *"LinuxAMDx64"* ]]; then sudo ./install_service_systemd.sh; fi
|
||||
|
||||
#Remove this task once ChromeDriver is deployed to Ubuntu image https://github.com/actions/virtual-environments/issues/9
|
||||
- task: Bash@3
|
||||
displayName: Install ChromeDriver (Linux and Mono)
|
||||
condition: and(succeeded(), eq(variables['imageName'], 'ubuntu-latest'))
|
||||
inputs:
|
||||
targetType: inline
|
||||
script: |
|
||||
CHROME_VERSION=$(google-chrome --version | cut -f 3 -d ' ' | cut -d '.' -f 1) \
|
||||
&& CHROMEDRIVER_RELEASE=$(curl --location --fail --retry 3 http://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROME_VERSION}) \
|
||||
&& curl --silent --show-error --location --fail --retry 3 --output /tmp/chromedriver_linux64.zip "http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_RELEASE/chromedriver_linux64.zip" \
|
||||
&& cd /tmp \
|
||||
&& unzip chromedriver_linux64.zip \
|
||||
&& rm -rf chromedriver_linux64.zip \
|
||||
&& sudo mv chromedriver /usr/local/bin/chromedriver \
|
||||
&& sudo chmod +x /usr/local/bin/chromedriver \
|
||||
&& chromedriver --version
|
||||
echo "##vso[task.setvariable variable=CHROMEWEBDRIVER]/usr/local/bin"
|
||||
|
||||
- task: UseDotNet@2
|
||||
displayName: Install .NET Core SDK
|
||||
inputs:
|
||||
packageType: sdk
|
||||
version: 3.1.100
|
||||
installationPath: $(Agent.ToolsDirectory)/dotnet
|
||||
|
||||
- task: DotNetCoreCLI@2
|
||||
displayName: Run Integration Tests
|
||||
inputs:
|
||||
command: test
|
||||
projects: '**/*IntegrationTest*/*.csproj'
|
||||
|
||||
|
||||
- stage: PublishGithub
|
||||
displayName: Publish to Github
|
||||
dependsOn: Integration
|
||||
condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
|
||||
jobs:
|
||||
- job: Publish
|
||||
workspace:
|
||||
clean: all
|
||||
steps:
|
||||
- checkout: self
|
||||
|
||||
- task: DownloadPipelineArtifact@2
|
||||
displayName: Download artifacts for publish
|
||||
inputs:
|
||||
patterns: '**/Jackett*'
|
||||
path: $(Build.ArtifactStagingDirectory)
|
||||
|
||||
- task: GitHubRelease@0
|
||||
displayName: Create Github release
|
||||
inputs:
|
||||
gitHubConnection: github.com_junglebus
|
||||
repositoryName: '$(Build.Repository.Name)'
|
||||
action: create
|
||||
target: $(Build.SourceVersion)
|
||||
tagSource: manual
|
||||
tag: v$(Build.BuildNumber)
|
||||
title: v$(Build.BuildNumber)
|
||||
assets: $(Build.ArtifactStagingDirectory)/*
|
||||
isDraft: true
|
||||
addChangeLog: true
|
||||
compareWith: lastNonDraftRelease
|
Loading…
Reference in a new issue