New: Set up CI with Azure Pipelines (#897)
* Set up CI with Azure Pipelines [skip ci] * Remove Travis, Build Multiple Environments * Change Task Type to Bash * Checkout submodules * Remove Appveyor Tests, Add Azure Tests * Oops Forget Steps * bad name * test script fixes * add tests to build job * fixup tests * name test runs * fpcalc and artifacts * Try to fix installer * Publish separately * Try publish * Another go at artifacts * Tidy up * Add sentry, assembly info patching and bump version * Only patch one AssemblyInfo; set node version 10 * Try pipeline artifacts again * Tidy up - pipeline artifact seems to be way forward * Fix installer publish * first go at test job seperation * job names and depends/consitions for tests * pusblish single file test artifact * pipeline artifact for test * blitz the pattern filter * windows test jobs * mac tests, checkout on test jobs * try to download build artifact to test job * download and extract artifact * Set LD_LIBRARY_PATH and print some sqlite debug info on mac tests * fixup! tests * integration test fixes * fixup! integration test fixes * fixup! integration test fixes * more fixup * use bash cp * test fixups * mkdir before copy * linux works! add osx integration tests * im tooo tired * coverage attempt * coverage seperate stage * windows paths for integration test * switch coverage to windows where opencover actually works * fix test script * one last go * Simplify installer, try to fix name * Try to parallelize backend and frontend build * Try adding a matrix * Try matrix jobs not stages * Try to fix package step * Remove opencover install * Try to fix tests * coverage fixes * revert build.sh changes * triggers so we don't double build * Publish coverage package so we can debug * try coverage no build, output artifact * use the full pipeline workspace from build job * fix automation tests for new ui * Assorted fix attempts * Another go * MacOS debug * Tidy up, try to fix mac * Fix mac fpcalc, add mac integration tests * Add cross platform automation tests * Fix packages * Try to fix Automation tests * Don't wait on the installer to create standard packages * Fixes * delete logentries reference * run automation tests in headless mode * try install firefox mac * Revert "try install firefox mac" This reverts commit 4684bb19018747cb00407e1d8df64391f44f5183. * test sonarcloud prepare outputs * basic analyze and upload * don't limit fetch depth on analyze * manual scanner do front and backend? * full analyize with tests, coverage * should depend on tests, coverage * no need for condition on coverage * Fix up build numbering * Try to fix sonar * Separate coverage calculation and publication * Try to fix coverage uploadpull/6/head
parent
72947029f4
commit
6932046c5f
@ -1,35 +0,0 @@
|
|||||||
language: csharp
|
|
||||||
|
|
||||||
os:
|
|
||||||
- linux
|
|
||||||
- osx
|
|
||||||
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
- dos2unix
|
|
||||||
- libchromaprint-tools
|
|
||||||
update: true
|
|
||||||
homebrew:
|
|
||||||
packages:
|
|
||||||
- yarn
|
|
||||||
- dos2unix
|
|
||||||
update: true
|
|
||||||
|
|
||||||
solution: src/Lidarr.sln
|
|
||||||
|
|
||||||
before_install:
|
|
||||||
- nvm install 10
|
|
||||||
- nvm use 10
|
|
||||||
- curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 1.13.0
|
|
||||||
- export PATH=$HOME/.yarn/bin:$PATH
|
|
||||||
|
|
||||||
cache:
|
|
||||||
yarn: true
|
|
||||||
directories:
|
|
||||||
- node_modules
|
|
||||||
|
|
||||||
script:
|
|
||||||
- ./build.sh
|
|
||||||
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then ./test.sh Mac Unit; fi
|
|
||||||
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then ./test.sh Linux Unit; fi
|
|
@ -1,43 +0,0 @@
|
|||||||
#! /bin/bash
|
|
||||||
|
|
||||||
artifactsFolder="./_artifacts";
|
|
||||||
artifactsFolderWindows=$artifactsFolder/windows
|
|
||||||
artifactsFolderLinux=$artifactsFolder/linux
|
|
||||||
artifactsFolderMacOS=$artifactsFolder/macos
|
|
||||||
artifactsFolderMacOSApp=$artifactsFolder/macos-app
|
|
||||||
|
|
||||||
PublishArtifacts()
|
|
||||||
{
|
|
||||||
7z a $artifactsFolder/Lidarr.${APPVEYOR_REPO_BRANCH}.${APPVEYOR_BUILD_VERSION}.windows.zip $artifactsFolderWindows/*
|
|
||||||
|
|
||||||
7z a $artifactsFolder/Lidarr.${APPVEYOR_REPO_BRANCH}.${APPVEYOR_BUILD_VERSION}.osx-app.zip $artifactsFolderMacOSApp/*
|
|
||||||
|
|
||||||
7z a -ttar $artifactsFolder/Lidarr.${APPVEYOR_REPO_BRANCH}.${APPVEYOR_BUILD_VERSION}.osx.tar $artifactsFolderMacOS/*
|
|
||||||
7z a -tgzip $artifactsFolder/Lidarr.${APPVEYOR_REPO_BRANCH}.${APPVEYOR_BUILD_VERSION}.osx.tar.gz $artifactsFolder/Lidarr.${APPVEYOR_REPO_BRANCH}.${APPVEYOR_BUILD_VERSION}.osx.tar
|
|
||||||
rm -f $artifactsFolder/Lidarr.${APPVEYOR_REPO_BRANCH}.${APPVEYOR_BUILD_VERSION}.osx.tar
|
|
||||||
|
|
||||||
7z a -ttar $artifactsFolder/Lidarr.${APPVEYOR_REPO_BRANCH}.${APPVEYOR_BUILD_VERSION}.linux.tar $artifactsFolderLinux/*
|
|
||||||
7z a -tgzip $artifactsFolder/Lidarr.${APPVEYOR_REPO_BRANCH}.${APPVEYOR_BUILD_VERSION}.linux.tar.gz $artifactsFolder/Lidarr.${APPVEYOR_REPO_BRANCH}.${APPVEYOR_BUILD_VERSION}.linux.tar
|
|
||||||
rm -f $artifactsFolder/Lidarr.${APPVEYOR_REPO_BRANCH}.${APPVEYOR_BUILD_VERSION}.linux.tar
|
|
||||||
|
|
||||||
if [ "${CI_WINDOWS}" = "True" ]; then
|
|
||||||
./setup/inno/ISCC.exe "./setup/lidarr.iss"
|
|
||||||
cp ./setup/output/Lidarr.*windows.exe $artifactsFolder/Lidarr.${APPVEYOR_REPO_BRANCH}.${APPVEYOR_BUILD_VERSION}.windows-installer.exe
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
PublishSourceMaps()
|
|
||||||
{
|
|
||||||
# Only create release on develop
|
|
||||||
# Secure SENTRY_AUTH_TOKEN will only be decoded on branch builds, not PRs
|
|
||||||
if [ "${CI_WINDOWS}" = "True" ] && [ "${APPVEYOR_REPO_BRANCH}" = "develop" ] && [ ! -z "${SENTRY_AUTH_TOKEN}" ]; then
|
|
||||||
echo "Uploading source maps to sentry"
|
|
||||||
yarn sentry-cli releases new --finalize -p lidarr -p lidarr-ui -p lidarr-update "${APPVEYOR_BUILD_VERSION}-debug"
|
|
||||||
yarn sentry-cli releases -p lidarr-ui files "${APPVEYOR_BUILD_VERSION}-debug" upload-sourcemaps _output/UI/ --rewrite
|
|
||||||
yarn sentry-cli releases set-commits --auto "${APPVEYOR_BUILD_VERSION}-debug"
|
|
||||||
yarn sentry-cli releases deploys "${APPVEYOR_BUILD_VERSION}-debug" new -e nightly
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
PublishArtifacts
|
|
||||||
PublishSourceMaps
|
|
@ -1,72 +1,3 @@
|
|||||||
version: '0.6.2.{build}'
|
skip_commits:
|
||||||
|
|
||||||
image:
|
|
||||||
- Visual Studio 2017
|
|
||||||
- Ubuntu1804
|
|
||||||
|
|
||||||
assembly_info:
|
|
||||||
patch: true
|
|
||||||
file: 'src\NzbDrone.Common\Properties\SharedAssemblyInfo.cs'
|
|
||||||
assembly_version: '{version}'
|
|
||||||
assembly_file_version: '{version}'
|
|
||||||
assembly_informational_version: '{version}-rc1'
|
|
||||||
|
|
||||||
environment:
|
|
||||||
DOTNET_CLI_TELEMETRY_OPTOUT: 1
|
|
||||||
nodejs_version: "10"
|
|
||||||
SENTRY_AUTH_TOKEN:
|
|
||||||
secure: dIzaGkyqP8JefC+GyXH2RtBHCufpzegoJnxvwGenCsMZNgaVbnoNo4ZMnPY2WYpstCcdXmZb7hbPYmu4FRkKQ8xDQ34YNGlKRKnlFuOQoq8=
|
|
||||||
SENTRY_ORG: "lidarr"
|
|
||||||
|
|
||||||
install:
|
|
||||||
- git submodule update --init --recursive
|
|
||||||
- cmd: powershell Install-Product node $env:nodejs_version
|
|
||||||
- cmd: powershell Set-Service SCardSvr -StartupType Manual
|
|
||||||
- sh: nvm install $nodejs_version
|
|
||||||
- sh: sudo apt update
|
|
||||||
- sh: sudo apt install -y libchromaprint-tools
|
|
||||||
|
|
||||||
build_script:
|
|
||||||
- cmd: C:\msys64\usr\bin\bash -lc "cd \"$APPVEYOR_BUILD_FOLDER\" && exec ./build.sh
|
|
||||||
- sh: ./build.sh
|
|
||||||
|
|
||||||
after_build:
|
|
||||||
- cmd: C:\msys64\usr\bin\bash -lc "cd \"$APPVEYOR_BUILD_FOLDER\" && exec ./appveyor-package.sh
|
|
||||||
- sh: ./appveyor-package.sh
|
|
||||||
- ps: Get-ChildItem .\_artifacts\*.zip | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }
|
|
||||||
- ps: Get-ChildItem .\_artifacts\*.exe | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }
|
|
||||||
- ps: Get-ChildItem .\_artifacts\*.tar.gz | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }
|
|
||||||
|
|
||||||
test_script:
|
|
||||||
- node --version
|
|
||||||
- yarn --version
|
|
||||||
- cmd: C:\msys64\usr\bin\bash -lc "cd \"$APPVEYOR_BUILD_FOLDER\" && exec ./test.sh Windows Unit
|
|
||||||
- sh: ./test.sh Linux Unit
|
|
||||||
- sh: find "$APPVEYOR_BUILD_FOLDER" -type f -name 'myresults.xml' -print0 | xargs -0 -I '{}' curl -F 'file=@{}' "https://ci.appveyor.com/api/testresults/nunit3/$APPVEYOR_JOB_ID"
|
|
||||||
|
|
||||||
cache:
|
|
||||||
- node_modules -> package.json
|
|
||||||
|
|
||||||
pull_requests:
|
|
||||||
do_not_increment_build_number: true
|
|
||||||
|
|
||||||
skip_branch_with_pr: true
|
|
||||||
|
|
||||||
on_failure:
|
|
||||||
- ps: Get-ChildItem .\_artifacts\*.zip | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }
|
|
||||||
- ps: Get-ChildItem .\_artifacts\*.exe | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }
|
|
||||||
- ps: Get-ChildItem .\_artifacts\*.tar.gz | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }
|
|
||||||
|
|
||||||
only_commits:
|
|
||||||
files:
|
files:
|
||||||
- src/
|
- '**/**'
|
||||||
- osx/
|
|
||||||
- gulp/
|
|
||||||
- logo/
|
|
||||||
- setup/
|
|
||||||
- frontend/
|
|
||||||
- appveyor.yml
|
|
||||||
- build.sh
|
|
||||||
- test.sh
|
|
||||||
- package.json
|
|
||||||
- appveyor-package.sh
|
|
@ -0,0 +1,506 @@
|
|||||||
|
# Starter pipeline
|
||||||
|
# Start with a minimal pipeline that you can customize to build and deploy your code.
|
||||||
|
# Add steps that build, run tests, deploy, and more:
|
||||||
|
# https://aka.ms/yaml
|
||||||
|
|
||||||
|
variables:
|
||||||
|
outputFolder: './_output'
|
||||||
|
artifactsFolder: './_artifacts'
|
||||||
|
testsFolder: './_tests'
|
||||||
|
majorVersion: '0.6.2'
|
||||||
|
minorVersion: $[counter('minorVersion', 1076)]
|
||||||
|
lidarrVersion: '$(majorVersion).$(minorVersion)'
|
||||||
|
buildName: '$(Build.SourceBranchName).$(lidarrVersion)'
|
||||||
|
windowsInstaller: 'Lidarr.$(buildName).windows-installer.exe'
|
||||||
|
windowsZip: 'Lidarr.$(buildName).windows.zip'
|
||||||
|
macOsApp: 'Lidarr.$(buildName).osx-app.zip'
|
||||||
|
macOsTar: 'Lidarr.$(buildName).osx.tar.gz'
|
||||||
|
linuxTar: 'Lidarr.$(buildName).linux.tar.gz'
|
||||||
|
sentryOrg: 'lidarr'
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
branches:
|
||||||
|
include:
|
||||||
|
- develop
|
||||||
|
|
||||||
|
pr:
|
||||||
|
- develop
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- stage: Build_Backend
|
||||||
|
displayName: Build Backend
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
- job: Backend
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
Linux:
|
||||||
|
osName: 'Linux'
|
||||||
|
imageName: 'ubuntu-16.04'
|
||||||
|
Mac:
|
||||||
|
osName: 'Mac'
|
||||||
|
imageName: 'macos-10.13'
|
||||||
|
Windows:
|
||||||
|
osName: 'Windows'
|
||||||
|
imageName: 'vs2017-win2016'
|
||||||
|
|
||||||
|
pool:
|
||||||
|
vmImage: $(imageName)
|
||||||
|
steps:
|
||||||
|
# Set the build name properly. The 'name' property won't recursively expand so hack here:
|
||||||
|
- powershell: Write-Host "##vso[build.updatebuildnumber]$($env:LIDARRVERSION)"
|
||||||
|
displayName: Set Build Name
|
||||||
|
- checkout: self
|
||||||
|
submodules: true
|
||||||
|
fetchDepth: 1
|
||||||
|
- task: Assembly-Info-NetFramework@2
|
||||||
|
displayName: Patch AssemblyInfo
|
||||||
|
inputs:
|
||||||
|
Path: '$(Build.SourcesDirectory)'
|
||||||
|
FileNames: 'src/NzbDrone.Common/Properties/SharedAssemblyInfo.cs'
|
||||||
|
InsertAttributes: false
|
||||||
|
FileEncoding: 'auto'
|
||||||
|
WriteBOM: false
|
||||||
|
VersionNumber: '$(lidarrVersion)'
|
||||||
|
FileVersionNumber: '$(lidarrVersion)'
|
||||||
|
InformationalVersion: '$(lidarrVersion)-rc1'
|
||||||
|
- bash: ./build.sh --only-backend
|
||||||
|
displayName: Build Lidarr Backend
|
||||||
|
- publish: $(outputFolder)
|
||||||
|
artifact: '$(osName)Backend'
|
||||||
|
displayName: Publish Backend
|
||||||
|
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
|
||||||
|
- publish: $(Build.SourcesDirectory)
|
||||||
|
artifact: 'CoverageBuild'
|
||||||
|
displayName: Publish Coverage Package
|
||||||
|
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
|
||||||
|
- publish: $(testsFolder)
|
||||||
|
artifact: '$(osName)Tests'
|
||||||
|
displayName: Publish Test Package
|
||||||
|
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
|
||||||
|
|
||||||
|
- stage: Build_Frontend
|
||||||
|
displayName: Build Frontend
|
||||||
|
dependsOn: []
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
- job: Frontend
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
Linux:
|
||||||
|
osName: 'Linux'
|
||||||
|
imageName: 'ubuntu-16.04'
|
||||||
|
Mac:
|
||||||
|
osName: 'Mac'
|
||||||
|
imageName: 'macos-10.13'
|
||||||
|
Windows:
|
||||||
|
osName: 'Windows'
|
||||||
|
imageName: 'vs2017-win2016'
|
||||||
|
pool:
|
||||||
|
vmImage: $(imageName)
|
||||||
|
steps:
|
||||||
|
- task: NodeTool@0
|
||||||
|
displayName: Set Node.js version
|
||||||
|
inputs:
|
||||||
|
versionSpec: '10.x'
|
||||||
|
- checkout: self
|
||||||
|
submodules: true
|
||||||
|
fetchDepth: 1
|
||||||
|
- bash: ./build.sh --only-frontend
|
||||||
|
displayName: Build Lidarr Frontend
|
||||||
|
env:
|
||||||
|
FORCE_COLOR: 0
|
||||||
|
- publish: $(outputFolder)
|
||||||
|
artifact: '$(osName)Frontend'
|
||||||
|
displayName: Publish Frontend
|
||||||
|
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
|
||||||
|
|
||||||
|
- stage: Package
|
||||||
|
dependsOn:
|
||||||
|
- Build_Backend
|
||||||
|
- Build_Frontend
|
||||||
|
jobs:
|
||||||
|
- job: Windows_Installer
|
||||||
|
displayName: Create Installer
|
||||||
|
pool:
|
||||||
|
vmImage: 'vs2017-win2016'
|
||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
fetchDepth: 1
|
||||||
|
- task: DownloadPipelineArtifact@2
|
||||||
|
inputs:
|
||||||
|
buildType: 'current'
|
||||||
|
artifactName: WindowsBackend
|
||||||
|
targetPath: _output
|
||||||
|
displayName: Fetch Backend
|
||||||
|
- task: DownloadPipelineArtifact@2
|
||||||
|
inputs:
|
||||||
|
buildType: 'current'
|
||||||
|
artifactName: WindowsFrontend
|
||||||
|
targetPath: _output
|
||||||
|
displayName: Fetch Frontend
|
||||||
|
- bash: ./build.sh --only-packages
|
||||||
|
displayName: Create Packages
|
||||||
|
- bash: |
|
||||||
|
./setup/inno/ISCC.exe "./setup/lidarr.iss"
|
||||||
|
cp ./setup/output/Lidarr.*windows.exe ${BUILD_ARTIFACTSTAGINGDIRECTORY}/${WINDOWSINSTALLER}
|
||||||
|
displayName: Create Windows installer
|
||||||
|
- publish: $(Build.ArtifactStagingDirectory)
|
||||||
|
artifact: 'WindowsInstaller'
|
||||||
|
displayName: Publish Installer
|
||||||
|
|
||||||
|
- job: Other_Packages
|
||||||
|
displayName: Create Standard Packages
|
||||||
|
pool:
|
||||||
|
vmImage: 'ubuntu-16.04'
|
||||||
|
steps:
|
||||||
|
- bash: sudo apt install dos2unix
|
||||||
|
- checkout: self
|
||||||
|
fetchDepth: 1
|
||||||
|
- task: DownloadPipelineArtifact@2
|
||||||
|
inputs:
|
||||||
|
buildType: 'current'
|
||||||
|
artifactName: WindowsBackend
|
||||||
|
targetPath: _output
|
||||||
|
displayName: Fetch Backend
|
||||||
|
- task: DownloadPipelineArtifact@2
|
||||||
|
inputs:
|
||||||
|
buildType: 'current'
|
||||||
|
artifactName: WindowsFrontend
|
||||||
|
targetPath: _output
|
||||||
|
displayName: Fetch Frontend
|
||||||
|
- bash: ./build.sh --only-packages
|
||||||
|
displayName: Create Packages
|
||||||
|
- bash: |
|
||||||
|
chmod a+x $(artifactsFolder)/macos/Lidarr/fpcalc
|
||||||
|
chmod a+x $(artifactsFolder)/macos-app/Lidarr.app/Contents/MacOS/fpcalc
|
||||||
|
displayName: Make fpcalc Executable
|
||||||
|
- task: ArchiveFiles@2
|
||||||
|
displayName: Create Windows zip
|
||||||
|
inputs:
|
||||||
|
archiveFile: '$(Build.ArtifactStagingDirectory)/$(windowsZip)'
|
||||||
|
archiveType: 'zip'
|
||||||
|
includeRootFolder: false
|
||||||
|
rootFolderOrFile: $(artifactsFolder)/windows
|
||||||
|
- task: ArchiveFiles@2
|
||||||
|
displayName: Create MacOS app
|
||||||
|
inputs:
|
||||||
|
archiveFile: '$(Build.ArtifactStagingDirectory)/$(macOsApp)'
|
||||||
|
archiveType: 'zip'
|
||||||
|
includeRootFolder: false
|
||||||
|
rootFolderOrFile: $(artifactsFolder)/macos-app
|
||||||
|
- task: ArchiveFiles@2
|
||||||
|
displayName: Create MacOS tar
|
||||||
|
inputs:
|
||||||
|
archiveFile: '$(Build.ArtifactStagingDirectory)/$(macOsTar)'
|
||||||
|
archiveType: 'tar'
|
||||||
|
tarCompression: 'gz'
|
||||||
|
includeRootFolder: false
|
||||||
|
rootFolderOrFile: $(artifactsFolder)/macos
|
||||||
|
- task: ArchiveFiles@2
|
||||||
|
displayName: Create Linux tar
|
||||||
|
inputs:
|
||||||
|
archiveFile: '$(Build.ArtifactStagingDirectory)/$(linuxTar)'
|
||||||
|
archiveType: 'tar'
|
||||||
|
tarCompression: 'gz'
|
||||||
|
includeRootFolder: false
|
||||||
|
rootFolderOrFile: $(artifactsFolder)/linux
|
||||||
|
- publish: $(Build.ArtifactStagingDirectory)
|
||||||
|
artifact: 'Packages'
|
||||||
|
displayName: Publish Packages
|
||||||
|
- bash: |
|
||||||
|
echo "Uploading source maps to sentry"
|
||||||
|
yarn sentry-cli releases new --finalize -p lidarr -p lidarr-ui -p lidarr-update "${LIDARRVERSION}-debug"
|
||||||
|
yarn sentry-cli releases -p lidarr-ui files "${LIDARRVERSION}-debug" upload-sourcemaps _output/UI/ --rewrite
|
||||||
|
yarn sentry-cli releases set-commits --auto "${LIDARRVERSION}-debug"
|
||||||
|
yarn sentry-cli releases deploys "${LIDARRVERSION}-debug" new -e nightly
|
||||||
|
displayName: Publish Sentry Source Maps
|
||||||
|
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/develop'))
|
||||||
|
env:
|
||||||
|
SENTRY_AUTH_TOKEN: $(sentryAuthToken)
|
||||||
|
|
||||||
|
- stage: Unit_Test
|
||||||
|
displayName: Unit Tests
|
||||||
|
dependsOn: Build_Backend
|
||||||
|
condition: succeeded()
|
||||||
|
jobs:
|
||||||
|
- job: Unit
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
Linux:
|
||||||
|
osName: 'Linux'
|
||||||
|
imageName: 'ubuntu-16.04'
|
||||||
|
Mac:
|
||||||
|
osName: 'Mac'
|
||||||
|
imageName: 'macos-10.13'
|
||||||
|
Windows:
|
||||||
|
osName: 'Windows'
|
||||||
|
imageName: 'vs2017-win2016'
|
||||||
|
|
||||||
|
pool:
|
||||||
|
vmImage: $(imageName)
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- checkout: none
|
||||||
|
- task: DownloadPipelineArtifact@2
|
||||||
|
displayName: Download Test Artifact
|
||||||
|
inputs:
|
||||||
|
buildType: 'current'
|
||||||
|
artifactName: WindowsTests
|
||||||
|
targetPath: $(testsFolder)
|
||||||
|
- bash: |
|
||||||
|
wget https://github.com/acoustid/chromaprint/releases/download/v1.4.3/chromaprint-fpcalc-1.4.3-linux-x86_64.tar.gz
|
||||||
|
sudo tar xf chromaprint-fpcalc-1.4.3-linux-x86_64.tar.gz --strip-components=1 --directory /usr/bin
|
||||||
|
displayName: Install fpcalc
|
||||||
|
condition: and(succeeded(), eq(variables['osName'], 'Linux'))
|
||||||
|
- powershell: Set-Service SCardSvr -StartupType Manual
|
||||||
|
displayName: Enable Windows Test Service
|
||||||
|
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
|
||||||
|
- bash: |
|
||||||
|
chmod a+x _tests/fpcalc
|
||||||
|
export DYLD_FALLBACK_LIBRARY_PATH=${BUILD_SOURCESDIRECTORY}/_tests
|
||||||
|
displayName: Make fpcalc Executable
|
||||||
|
condition: and(succeeded(), eq(variables['osName'], 'Mac'))
|
||||||
|
- task: Bash@3
|
||||||
|
displayName: Run Tests
|
||||||
|
env:
|
||||||
|
DYLD_FALLBACK_LIBRARY_PATH: $(Build.SourcesDirectory)/_tests
|
||||||
|
TEST_DIR: $(Build.SourcesDirectory)/_tests
|
||||||
|
inputs:
|
||||||
|
targetType: 'filePath'
|
||||||
|
filePath: '$(testsFolder)/test.sh'
|
||||||
|
arguments: '$(osName) Unit Test'
|
||||||
|
- publish: TestResult.xml
|
||||||
|
artifact: 'TestResult'
|
||||||
|
displayName: Publish Test Result
|
||||||
|
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
|
||||||
|
- task: PublishTestResults@2
|
||||||
|
displayName: Publish Test Results
|
||||||
|
inputs:
|
||||||
|
testResultsFormat: 'NUnit'
|
||||||
|
testResultsFiles: '**/TestResult.xml'
|
||||||
|
testRunTitle: '$(osName) Unit Tests'
|
||||||
|
|
||||||
|
- stage: Integration_Automation
|
||||||
|
displayName: Integration / Automation
|
||||||
|
dependsOn: Package
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
- job: Integration
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
Linux:
|
||||||
|
osName: 'Linux'
|
||||||
|
imageName: 'ubuntu-16.04'
|
||||||
|
pattern: 'Lidarr.**.linux.tar.gz'
|
||||||
|
# Mac:
|
||||||
|
# osName: 'Mac'
|
||||||
|
# imageName: 'macos-10.13'
|
||||||
|
# pattern: 'Lidarr.**.osx.tar.gz'
|
||||||
|
Windows:
|
||||||
|
osName: 'Windows'
|
||||||
|
imageName: 'vs2017-win2016'
|
||||||
|
pattern: 'Lidarr.**.windows.zip'
|
||||||
|
|
||||||
|
pool:
|
||||||
|
vmImage: $(imageName)
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- script: |
|
||||||
|
wget https://github.com/acoustid/chromaprint/releases/download/v1.4.3/chromaprint-fpcalc-1.4.3-linux-x86_64.tar.gz
|
||||||
|
sudo tar xf chromaprint-fpcalc-1.4.3-linux-x86_64.tar.gz --strip-components=1 --directory /usr/bin
|
||||||
|
displayName: Install fpcalc
|
||||||
|
condition: and(succeeded(), eq(variables['osName'], 'Linux'))
|
||||||
|
- checkout: none
|
||||||
|
- task: DownloadPipelineArtifact@2
|
||||||
|
displayName: Download Test Artifact
|
||||||
|
inputs:
|
||||||
|
buildType: 'current'
|
||||||
|
artifactName: WindowsTests
|
||||||
|
targetPath: $(testsFolder)
|
||||||
|
- task: DownloadPipelineArtifact@2
|
||||||
|
displayName: Download Build Artifact
|
||||||
|
inputs:
|
||||||
|
buildType: 'current'
|
||||||
|
artifactName: Packages
|
||||||
|
itemPattern: '**/$(pattern)'
|
||||||
|
targetPath: $(Build.ArtifactStagingDirectory)
|
||||||
|
- task: ExtractFiles@1
|
||||||
|
inputs:
|
||||||
|
archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
|
||||||
|
destinationFolder: '$(Build.ArtifactStagingDirectory)/bin'
|
||||||
|
displayName: Extract Package
|
||||||
|
- bash: |
|
||||||
|
mkdir -p ./bin/
|
||||||
|
cp -r -v ${BUILD_ARTIFACTSTAGINGDIRECTORY}/bin/Lidarr/. ./bin/
|
||||||
|
displayName: Move Package Contents
|
||||||
|
- task: Bash@3
|
||||||
|
displayName: Run Integration Tests
|
||||||
|
inputs:
|
||||||
|
targetType: 'filePath'
|
||||||
|
filePath: '$(testsFolder)/test.sh'
|
||||||
|
arguments: $(osName) Integration Test
|
||||||
|
- task: PublishTestResults@2
|
||||||
|
inputs:
|
||||||
|
testResultsFormat: 'NUnit'
|
||||||
|
testResultsFiles: '**/TestResult.xml'
|
||||||
|
testRunTitle: '$(osName) Integration Tests'
|
||||||
|
displayName: Publish Test Results
|
||||||
|
|
||||||
|
- job: Automation
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
Linux:
|
||||||
|
osName: 'Linux'
|
||||||
|
imageName: 'ubuntu-16.04'
|
||||||
|
pattern: 'Lidarr.**.linux.tar.gz'
|
||||||
|
Mac:
|
||||||
|
osName: 'Mac'
|
||||||
|
imageName: 'macos-10.13'
|
||||||
|
pattern: 'Lidarr.**.osx.tar.gz'
|
||||||
|
Windows:
|
||||||
|
osName: 'Windows'
|
||||||
|
imageName: 'vs2017-win2016'
|
||||||
|
pattern: 'Lidarr.**.windows.zip'
|
||||||
|
|
||||||
|
pool:
|
||||||
|
vmImage: $(imageName)
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- checkout: none
|
||||||
|
- task: DownloadPipelineArtifact@2
|
||||||
|
displayName: Download Test Artifact
|
||||||
|
inputs:
|
||||||
|
buildType: 'current'
|
||||||
|
artifactName: WindowsTests
|
||||||
|
targetPath: $(testsFolder)
|
||||||
|
- task: DownloadPipelineArtifact@2
|
||||||
|
displayName: Download Build Artifact
|
||||||
|
inputs:
|
||||||
|
buildType: 'current'
|
||||||
|
artifactName: Packages
|
||||||
|
itemPattern: '**/$(pattern)'
|
||||||
|
targetPath: $(Build.ArtifactStagingDirectory)
|
||||||
|
- task: ExtractFiles@1
|
||||||
|
inputs:
|
||||||
|
archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
|
||||||
|
destinationFolder: '$(Build.ArtifactStagingDirectory)/bin'
|
||||||
|
displayName: Extract Package
|
||||||
|
- bash: |
|
||||||
|
mkdir -p ./bin/
|
||||||
|
cp -r -v ${BUILD_ARTIFACTSTAGINGDIRECTORY}/bin/Lidarr/. ./bin/
|
||||||
|
displayName: Move Package Contents
|
||||||
|
- bash: |
|
||||||
|
if [[ $OSNAME == "Mac" ]]; then
|
||||||
|
url=https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-macos.tar.gz
|
||||||
|
elif [[ $OSNAME == "Linux" ]]; then
|
||||||
|
url=https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-linux64.tar.gz
|
||||||
|
else
|
||||||
|
echo "Unhandled OS"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
curl -s -L "$url" | tar -xz
|
||||||
|
chmod +x geckodriver
|
||||||
|
mv geckodriver _tests
|
||||||
|
displayName: Install Gecko Driver
|
||||||
|
condition: and(succeeded(), ne(variables['osName'], 'Windows'))
|
||||||
|
- bash: ls -lR
|
||||||
|
- task: Bash@3
|
||||||
|
displayName: Run Automation Tests
|
||||||
|
inputs:
|
||||||
|
targetType: 'filePath'
|
||||||
|
filePath: '$(testsFolder)/test.sh'
|
||||||
|
arguments: $(osName) Automation Test
|
||||||
|
- task: PublishTestResults@2
|
||||||
|
inputs:
|
||||||
|
testResultsFormat: 'NUnit'
|
||||||
|
testResultsFiles: '**/TestResult.xml'
|
||||||
|
testRunTitle: '$(osName) Automation Tests'
|
||||||
|
displayName: Publish Test Results
|
||||||
|
|
||||||
|
- stage: Coverage
|
||||||
|
dependsOn: Build_Backend
|
||||||
|
condition: succeeded()
|
||||||
|
jobs:
|
||||||
|
- job: Windows_Coverage
|
||||||
|
displayName: Windows
|
||||||
|
pool:
|
||||||
|
vmImage: 'vs2017-win2016'
|
||||||
|
steps:
|
||||||
|
- checkout: none
|
||||||
|
- task: DownloadPipelineArtifact@2
|
||||||
|
inputs:
|
||||||
|
buildType: 'current'
|
||||||
|
artifactName: CoverageBuild
|
||||||
|
targetPath: $(Build.SourcesDirectory)
|
||||||
|
- task: Bash@3
|
||||||
|
displayName: Coverage Unit Tests
|
||||||
|
inputs:
|
||||||
|
targetType: 'filePath'
|
||||||
|
filePath: ./test.sh
|
||||||
|
arguments: Windows Unit Coverage
|
||||||
|
- publish: ./_tests/CoverageResults
|
||||||
|
artifact: 'CoverageResults'
|
||||||
|
displayName: Publish Coverage Result Artifact
|
||||||
|
|
||||||
|
- stage: Coverage_Upload
|
||||||
|
dependsOn: Coverage
|
||||||
|
condition: succeeded()
|
||||||
|
displayName: Coverage Upload
|
||||||
|
jobs:
|
||||||
|
- job: Upload
|
||||||
|
pool:
|
||||||
|
vmImage: 'vs2017-win2016'
|
||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
fetchDepth: 1
|
||||||
|
- task: DownloadPipelineArtifact@2
|
||||||
|
inputs:
|
||||||
|
buildType: 'current'
|
||||||
|
artifactName: CoverageResults
|
||||||
|
targetPath: 'CoverageResults'
|
||||||
|
- task: PublishCodeCoverageResults@1
|
||||||
|
displayName: Publish Coverage Results
|
||||||
|
inputs:
|
||||||
|
codeCoverageTool: 'cobertura'
|
||||||
|
summaryFileLocation: './CoverageResults/coverage.cobertura.xml'
|
||||||
|
|
||||||
|
- stage: Analyze
|
||||||
|
dependsOn:
|
||||||
|
- Coverage
|
||||||
|
- Unit_Test
|
||||||
|
displayName: Analyze
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
- job: Analyze
|
||||||
|
pool:
|
||||||
|
vmImage: vs2017-win2016
|
||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
submodules: true
|
||||||
|
- task: DownloadPipelineArtifact@2
|
||||||
|
inputs:
|
||||||
|
buildType: 'current'
|
||||||
|
artifactName: CoverageResults
|
||||||
|
targetPath: $(Build.SourcesDirectory)/CoverageResults
|
||||||
|
- task: DownloadPipelineArtifact@2
|
||||||
|
inputs:
|
||||||
|
buildType: 'current'
|
||||||
|
artifactName: TestResult
|
||||||
|
targetPath: $(Build.SourcesDirectory)/TestResults
|
||||||
|
- task: SonarCloudPrepare@1
|
||||||
|
env:
|
||||||
|
SONAR_SCANNER_OPTS: ''
|
||||||
|
inputs:
|
||||||
|
SonarCloud: 'SonarCloud'
|
||||||
|
organization: 'lidarr'
|
||||||
|
scannerMode: 'CLI'
|
||||||
|
configMode: 'manual'
|
||||||
|
cliProjectKey: 'lidarr_Lidarr'
|
||||||
|
cliProjectName: 'Lidarr'
|
||||||
|
cliSources: '.'
|
||||||
|
extraProperties: |
|
||||||
|
sonar.exclusions=**/obj/**,**/*.dll,**/NzbDrone.Core.Test/Files/**/*
|
||||||
|
sonar.cs.opencover.reportsPaths=$(Build.SourcesDirectory)/CoverageResults/**/coverage.opencover.xml
|
||||||
|
sonar.cs.nunit.reportsPaths=$(Build.SourcesDirectory)/TestResults/**/TestResult.xml
|
||||||
|
- task: SonarCloudAnalyze@1
|
Loading…
Reference in new issue