Build and publish using GitHub actions

This commit is contained in:
Mark McDowall 2023-11-25 23:23:10 -05:00 committed by Mark McDowall
parent a49cf72869
commit 6b92b556bb
13 changed files with 676 additions and 32 deletions

29
.github/actions/archive/action.yml vendored Normal file
View File

@ -0,0 +1,29 @@
name: Archive
description: Archive binaries for deployment
inputs:
os:
description: 'OS that the packaging is running on'
required: true
artifact:
description: 'Binary artifact'
required: true
archive_type:
description: 'File type to use for the final package'
required: true
branch:
description: 'Git branch used for this build'
required: true
major_version:
description: 'Sonarr major version'
required: true
version:
description: 'Sonarr version'
required: true
runs:
using: 'composite'
steps:
- name: Archive Artifact
uses: thedoctor0/zip-release@0.7.5

78
.github/actions/package/action.yml vendored Normal file
View File

@ -0,0 +1,78 @@
name: Package
description: Packages binaries for deployment
inputs:
platform:
description: 'Binary platform'
required: true
framework:
description: '.net framework'
required: true
artifact:
description: 'Binary artifact'
required: true
branch:
description: 'Git branch used for this build'
required: true
major_version:
description: 'Sonarr major version'
required: true
version:
description: 'Sonarr version'
required: true
runs:
using: 'composite'
steps:
- name: Download Artifact
uses: actions/download-artifact@v4
with:
name: ${{ inputs.artifact }}
path: _output
- name: Download UI Artifact
uses: actions/download-artifact@v4
with:
name: build_ui
path: _output/UI
- name: Configure Environment Variables
shell: bash
run: |
echo "FRAMEWORK=${{ inputs.framework }}" >> "$GITHUB_ENV"
echo "BRANCH=${{ inputs.branch }}" >> "$GITHUB_ENV"
echo "SONARR_MAJOR_VERSION=${{ inputs.major_version }}" >> "$GITHUB_ENV"
echo "SONARR_VERSION=${{ inputs.version }}" >> "$GITHUB_ENV"
- name: Create Packages
shell: bash
run: $GITHUB_ACTION_PATH/package.sh
- name: Create Windows Installer (x64)
if: ${{ inputs.platform == 'windows' }}
working-directory: distribution/windows/setup
shell: cmd
run: |
SET RUNTIME=win-x64
build.bat
- name: Create Windows Installer (x86)
if: ${{ inputs.platform == 'windows' }}
working-directory: distribution/windows/setup
shell: cmd
run: |
SET RUNTIME=win-x86
build.bat
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: release_${{ inputs.platform }}
compression-level: 0
if-no-files-found: error
path: |
_artifacts/*.exe
_artifacts/*.tar.gz
_artifacts/*.zip

67
.github/actions/package/package.sh vendored Executable file
View File

@ -0,0 +1,67 @@
#!/bin/bash
outputFolder=_output
artifactsFolder=_artifacts
uiFolder="$outputFolder/UI"
framework="${FRAMEWORK:=net6.0}"
rm -rf $artifactsFolder
mkdir $artifactsFolder
for runtime in _output/*
do
name="${runtime##*/}"
folderName="$runtime/$framework"
sonarrFolder="$folderName/Sonarr"
archiveName="Sonarr.$BRANCH.$SONARR_VERSION.$name"
if [[ "$name" == 'UI' ]]; then
continue
fi
echo "Creating package for $name"
echo "Copying UI"
cp -r $uiFolder $sonarrFolder
echo "Setting permissions"
find $sonarrFolder -name "ffprobe" -exec chmod a+x {} \;
find $sonarrFolder -name "Sonarr" -exec chmod a+x {} \;
find $sonarrFolder -name "Sonarr.Update" -exec chmod a+x {} \;
if [[ "$name" == *"osx"* ]]; then
echo "Creating macOS package"
packageName="$name-app"
packageFolder="$outputFolder/$packageName"
rm -rf $packageFolder
mkdir $packageFolder
cp -r distribution/macOS/Sonarr.app $packageFolder
mkdir -p $packageFolder/Sonarr.app/Contents/MacOS
echo "Copying Binaries"
cp -r $sonarrFolder/* $packageFolder/Sonarr.app/Contents/MacOS
echo "Removing Update Folder"
rm -r $packageFolder/Sonarr.app/Contents/MacOS/Sonarr.Update
echo "Packaging macOS app Artifact"
(cd $packageFolder; zip -rq "../../$artifactsFolder/$archiveName-app.zip" ./Sonarr.app)
fi
echo "Packaging Artifact"
if [[ "$name" == *"linux"* ]] || [[ "$name" == *"osx"* ]] || [[ "$name" == *"freebsd"* ]]; then
tar -zcf "./$artifactsFolder/$archiveName.tar.gz" -C $folderName Sonarr
fi
if [[ "$name" == *"win"* ]]; then
if [ "$RUNNER_OS" = "Windows" ]
then
(cd $folderName; 7z a -tzip "../../../$artifactsFolder/$archiveName.zip" ./Sonarr)
else
(cd $folderName; zip -rq "../../../$artifactsFolder/$archiveName.zip" ./Sonarr)
fi
fi
done

View File

@ -0,0 +1,18 @@
name: Publish Test Artifact
description: Publishes a test artifact
inputs:
framework:
description: '.net framework'
required: true
runtime:
description: '.net runtime'
required: true
runs:
using: 'composite'
steps:
- uses: actions/upload-artifact@v4
with:
name: tests-${{ inputs.runtime }}
path: _tests/${{ inputs.framework }}/${{ inputs.runtime }}/publish/**/*

88
.github/actions/test/action.yml vendored Normal file
View File

@ -0,0 +1,88 @@
name: Test
description: Runs unit/integration tests
inputs:
use_postgres:
description: 'Whether postgres should be used for the database'
os:
description: 'OS that the tests are running on'
required: true
artifact:
description: 'Test binary artifact'
required: true
pattern:
description: 'Pattern for DLLs'
required: true
filter:
description: 'Filter for tests'
required: true
integration_tests:
description: 'True if running integration tests'
binary_artifact:
description: 'Binary artifact for integration tests'
binary_path:
description: 'Path witin binary artifact for integration tests'
runs:
using: 'composite'
steps:
- name: Setup .NET
uses: actions/setup-dotnet@v3
- name: Setup Postgres
if: ${{ inputs.use_postgres }}
uses: ikalnytskyi/action-setup-postgres@v4
- name: Setup Test Variables
shell: bash
run: |
echo "RESULTS_NAME=${{ inputs.integration_tests && 'integation-' || 'unit-' }}${{ inputs.artifact }}${{ inputs.use_postgres && '-postgres' }}" >> "$GITHUB_ENV"
- name: Setup Postgres Environment Variables
if: ${{ inputs.use_postgres }}
shell: bash
run: |
echo "Sonarr__Postgres__Host=localhost" >> "$GITHUB_ENV"
echo "Sonarr__Postgres__Port=5432" >> "$GITHUB_ENV"
echo "Sonarr__Postgres__User=postgres" >> "$GITHUB_ENV"
echo "Sonarr__Postgres__Password=postgres" >> "$GITHUB_ENV"
- name: Download Artifact
uses: actions/download-artifact@v4
with:
name: ${{ inputs.artifact }}
path: _tests
- name: Download Binary Artifact
if: ${{ inputs.integration_tests }}
uses: actions/download-artifact@v4
with:
name: ${{ inputs.binary_artifact }}
path: _output
- name: Set up binary artifact
if: ${{ inputs.binary_path != '' }}
shell: bash
run: mv ./_output/${{inputs.binary_path}} _tests/bin
- name: Make executable
if: startsWith(inputs.os, 'windows') != true
shell: bash
run: chmod +x ./_tests/Sonarr.Test.Dummy && chmod +x ./_tests/ffprobe
- name: Make Sonarr binary executable
if: ${{ inputs.integration_tests && !startsWith(inputs.os, 'windows') }}
shell: bash
run: chmod +x ./_tests/bin/Sonarr
- name: Run tests
shell: bash
run: dotnet test ./_tests/Sonarr.*.Test.dll --filter "${{ inputs.filter }}" --logger trx --results-directory "${{ env.RESULTS_NAME }}"
- name: Publish Test Results
if: ${{ !cancelled() }}
uses: phoenix-actions/test-reporting@v12
with:
name: ${{ env.RESULTS_NAME }}
path: ${{ env.RESULTS_NAME }}/*.trx
reporter: dotnet-trx

9
.github/release.yml vendored Normal file
View File

@ -0,0 +1,9 @@
changelog:
exclude:
authors:
- Weblate
- SonarrBot
categories:
- title: Changes
labels:
- '*'

219
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,219 @@
name: Build
on:
push:
branches:
- develop
- main
pull_request:
branches:
- develop
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
FRAMEWORK: net6.0
BRANCH: ${{ github.head_ref || github.ref_name }}
SONARR_MAJOR_VERSION: 4
VERSION: 4.0.0
jobs:
backend:
runs-on: windows-latest
outputs:
framework: ${{ steps.variables.outputs.framework }}
major_version: ${{ steps.variables.outputs.major_version }}
version: ${{ steps.variables.outputs.version }}
steps:
- name: Check out
uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v3
- name: Setup Environment Variables
id: variables
shell: bash
run: |
# Add 800 to the build number because GitHub won't let us pick an arbitrary starting point
SONARR_VERSION="${{ env.VERSION }}.$((${{ github.run_number }}+800))"
DOTNET_VERSION=$(jq -r '.sdk.version' global.json)
echo "SDK_PATH=${{ env.DOTNET_ROOT }}/sdk/${DOTNET_VERSION}" >> "$GITHUB_ENV"
echo "SONARR_VERSION=$SONARR_VERSION" >> "$GITHUB_ENV"
echo "framework=${{ env.FRAMEWORK }}" >> "$GITHUB_OUTPUT"
echo "major_version=${{ env.SONARR_MAJOR_VERSION }}" >> "$GITHUB_OUTPUT"
echo "version=$SONARR_VERSION" >> "$GITHUB_OUTPUT"
- name: Enable Extra Platforms In SDK
shell: bash
run: ./build.sh --enable-extra-platforms-in-sdk
- name: Build Backend
shell: bash
run: ./build.sh --backend --enable-extra-platforms --packages
# Test Artifacts
- name: Publish win-x64 Test Artifact
uses: ./.github/actions/publish-test-artifact
with:
framework: ${{ env.FRAMEWORK }}
runtime: win-x64
- name: Publish linux-x64 Test Artifact
uses: ./.github/actions/publish-test-artifact
with:
framework: ${{ env.FRAMEWORK }}
runtime: linux-x64
- name: Publish osx-x64 Test Artifact
uses: ./.github/actions/publish-test-artifact
with:
framework: ${{ env.FRAMEWORK }}
runtime: osx-x64
# Build Artifacts (grouped by OS)
- name: Publish FreeBSD Artifact
uses: actions/upload-artifact@v4
with:
name: build_freebsd
path: _artifacts/freebsd-*/**/*
- name: Publish Linux Artifact
uses: actions/upload-artifact@v4
with:
name: build_linux
path: _artifacts/linux-*/**/*
- name: Publish macOS Artifact
uses: actions/upload-artifact@v4
with:
name: build_macos
path: _artifacts/osx-*/**/*
- name: Publish Windows Artifact
uses: actions/upload-artifact@v4
with:
name: build_windows
path: _artifacts/win-*/**/*
frontend:
runs-on: ubuntu-latest
steps:
- name: Check out
uses: actions/checkout@v3
- name: Volta
uses: volta-cli/action@v4
- name: Yarn Intsall
run: yarn install
- name: Lint
run: yarn lint
- name: Stylelint
run: yarn stylelint
- name: Build
run: yarn build --env production
- name: Publish UI Artifact
uses: actions/upload-artifact@v4
with:
name: build_ui
path: _output/UI/**/*
unit_test:
needs: backend
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
include:
- os: ubuntu-latest
artifact: tests-linux-x64
filter: TestCategory!=ManualTest&TestCategory!=WINDOWS&TestCategory!=IntegrationTest&TestCategory!=AutomationTest
- os: macos-latest
artifact: tests-osx-x64
filter: TestCategory!=ManualTest&TestCategory!=WINDOWS&TestCategory!=IntegrationTest&TestCategory!=AutomationTest
- os: windows-latest
artifact: tests-win-x64
filter: TestCategory!=ManualTest&TestCategory!=LINUX&TestCategory!=IntegrationTest&TestCategory!=AutomationTest
runs-on: ${{ matrix.os }}
steps:
- name: Check out
uses: actions/checkout@v3
- name: Test
uses: ./.github/actions/test
with:
os: ${{ matrix.os }}
artifact: ${{ matrix.artifact }}
pattern: Sonarr.*.Test.dll
filter: ${{ matrix.filter }}
unit_test_postgres:
needs: backend
runs-on: ubuntu-latest
steps:
- name: Check out
uses: actions/checkout@v3
- name: Test
uses: ./.github/actions/test
with:
os: ubuntu-latest
artifact: tests-linux-x64
pattern: Sonarr.*.Test.dll
filter: TestCategory!=ManualTest&TestCategory!=WINDOWS&TestCategory!=IntegrationTest&TestCategory!=AutomationTest
use_postgres: true
integration_test:
needs: backend
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
include:
- os: ubuntu-latest
artifact: tests-linux-x64
filter: TestCategory!=ManualTest&TestCategory!=WINDOWS&TestCategory=IntegrationTest
binary_artifact: build_linux
binary_path: linux-x64/${{ needs.backend.outputs.framework }}/Sonarr
- os: macos-latest
artifact: tests-osx-x64
filter: TestCategory!=ManualTest&TestCategory!=WINDOWS&TestCategory=IntegrationTest
binary_artifact: build_macos
binary_path: osx-x64/${{ needs.backend.outputs.framework }}/Sonarr
- os: windows-latest
artifact: tests-win-x64
filter: TestCategory!=ManualTest&TestCategory=WINDOWS&TestCategory=IntegrationTest
binary_artifact: build_windows
binary_path: win-x64/${{ needs.backend.outputs.framework }}/Sonarr
runs-on: ${{ matrix.os }}
steps:
- name: Check out
uses: actions/checkout@v3
- name: Test
uses: ./.github/actions/test
with:
os: ${{ matrix.os }}
artifact: ${{ matrix.artifact }}
pattern: Sonarr.*.Test.dll
filter: ${{ matrix.filter }}
integration_tests: true
binary_artifact: ${{ matrix.binary_artifact }}
binary_path: ${{ matrix.binary_path }}
deploy:
if: ${{ github.ref_name == 'develop' || github.ref_name == 'main' }}
needs: [backend, unit_test, unit_test_postgres, integration_test]
secrets: inherit
uses: ./.github/workflows/deploy.yml
with:
framework: ${{ needs.backend.outputs.framework }}
branch: ${{ github.ref_name }}
major_version: ${{ needs.backend.outputs.major_version }}
version: ${{ needs.backend.outputs.version }}

134
.github/workflows/deploy.yml vendored Normal file
View File

@ -0,0 +1,134 @@
name: Deploy
on:
workflow_call:
inputs:
framework:
description: '.net framework'
type: string
required: true
branch:
description: 'Git branch used for this build'
type: string
required: true
major_version:
description: 'Sonarr major version'
type: string
required: true
version:
description: 'Sonarr version'
type: string
required: true
secrets:
SERVICES_API_KEY:
required: true
jobs:
package:
strategy:
matrix:
platform: [freebsd, linux, macos, windows]
include:
- platform: freebsd
os: ubuntu-latest
- platform: linux
os: ubuntu-latest
- platform: macos
os: ubuntu-latest
- platform: windows
os: windows-latest
runs-on: ${{ matrix.os }}
steps:
- name: Check out
uses: actions/checkout@v3
- name: Package
uses: ./.github/actions/package
with:
framework: ${{ inputs.framework }}
platform: ${{ matrix.platform }}
artifact: build_${{ matrix.platform }}
branch: ${{ inputs.branch }}
major_version: ${{ inputs.major_version }}
version: ${{ inputs.version }}
release:
needs: package
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Check out
uses: actions/checkout@v3
- name: Download release artifacts
uses: actions/download-artifact@v4
with:
path: _artifacts
pattern: release_*
merge-multiple: true
- name: Create release
uses: ncipollo/release-action@v1
with:
artifacts: _artifacts/Sonarr.*
commit: ${{ github.sha }}
generateReleaseNotes: true
name: ${{ inputs.version }}
prerelease: ${{ inputs.branch != 'main' }}
skipIfReleaseExists: true
tag: v${{ inputs.version }}
- name: Publish to Services
shell: bash
working-directory: _artifacts
run: |
branch=${{ inputs.branch }}
version=${{ inputs.version }}
lastCommit=${{ github.sha }}
hashes="["
addHash() {
path=$1
os=$2
arch=$3
type=$4
local hash=$(sha256sum *.$version.$path | awk '{ print $1; }')
echo "{ \""Os\"": \""$os\"", \""Arch\"": \""$arch\"", \""Type\"": \""$type\"", \""Hash\"": \""$hash\"" }"
}
hashes="$hashes $(addHash "linux-arm.tar.gz" "linux" "arm" "archive")"
hashes="$hashes, $(addHash "linux-arm64.tar.gz" "linux" "arm64" "archive")"
hashes="$hashes, $(addHash "linux-x64.tar.gz" "linux" "x64" "archive")"
# hashes="$hashes, $(addHash "linux-x86.tar.gz" "linux" "x86" "archive")"
# hashes="$hashes, $(addHash "linux-musl-arm.tar.gz" "linuxmusl" "arm" "archive")"
hashes="$hashes, $(addHash "linux-musl-arm64.tar.gz" "linuxmusl" "arm64" "archive")"
hashes="$hashes, $(addHash "linux-musl-x64.tar.gz" "linuxmusl" "x64" "archive")"
hashes="$hashes, $(addHash "osx-arm64.tar.gz" "osx" "arm64" "archive")"
hashes="$hashes, $(addHash "osx-x64.tar.gz" "osx" "x64" "archive")"
hashes="$hashes, $(addHash "osx-arm64-app.zip" "osx" "arm64" "installer")"
hashes="$hashes, $(addHash "osx-x64-app.zip" "osx" "x64" "installer")"
hashes="$hashes, $(addHash "win-x64.zip" "windows" "x64" "archive")"
hashes="$hashes, $(addHash "win-x86.zip" "windows" "x86" "archive")"
hashes="$hashes, $(addHash "win-x64-installer.exe" "windows" "x64" "installer")"
hashes="$hashes, $(addHash "win-x86-installer.exe" "windows" "x86" "installer")"
hashes="$hashes, $(addHash "freebsd-x64.tar.gz" "freebsd" "x64" "archive")"
hashes="$hashes ]"
json="{\""branch\"":\""$branch\"", \""version\"":\""$version\"", \""lastCommit\"":\""$lastCommit\"", \""hashes\"":$hashes, \""gitHubRelease\"":true}"
url="https://services.sonarr.tv/v1/update"
echo "Publishing update $version ($branch) to: $url"
echo "$json"
curl -H "Content-Type: application/json" -H "X-Api-Key: ${{ secrets.SERVICES_API_KEY }}" -X POST -d "$json" --fail-with-body $url

View File

@ -4,19 +4,18 @@ set -e
outputFolder='_output' outputFolder='_output'
testPackageFolder='_tests' testPackageFolder='_tests'
artifactsFolder="_artifacts"; artifactsFolder="_artifacts";
framework="${FRAMEWORK:=net6.0}"
ProgressStart() ProgressStart()
{ {
echo "##teamcity[blockOpened name='$1']" echo "::group::$1"
echo "##teamcity[progressStart '$1']"
echo "Start '$1'" echo "Start '$1'"
} }
ProgressEnd() ProgressEnd()
{ {
echo "Finish '$1'" echo "Finish '$1'"
echo "##teamcity[progressFinish '$1']" echo "::endgroup::"
echo "##teamcity[blockClosed name='$1']"
} }
UpdateVersionNumber() UpdateVersionNumber()
@ -140,7 +139,7 @@ PackageLinux()
echo "Adding Sonarr.Mono to UpdatePackage" echo "Adding Sonarr.Mono to UpdatePackage"
cp $folder/Sonarr.Mono.* $folder/Sonarr.Update cp $folder/Sonarr.Mono.* $folder/Sonarr.Update
if [ "$framework" = "net6.0" ]; then if [ "$framework" = "$framework" ]; then
cp $folder/Mono.Posix.NETStandard.* $folder/Sonarr.Update cp $folder/Mono.Posix.NETStandard.* $folder/Sonarr.Update
cp $folder/libMonoPosixHelper.* $folder/Sonarr.Update cp $folder/libMonoPosixHelper.* $folder/Sonarr.Update
fi fi
@ -168,7 +167,7 @@ PackageMacOS()
echo "Adding Sonarr.Mono to UpdatePackage" echo "Adding Sonarr.Mono to UpdatePackage"
cp $folder/Sonarr.Mono.* $folder/Sonarr.Update cp $folder/Sonarr.Mono.* $folder/Sonarr.Update
if [ "$framework" = "net6.0" ]; then if [ "$framework" = "$framework" ]; then
cp $folder/Mono.Posix.NETStandard.* $folder/Sonarr.Update cp $folder/Mono.Posix.NETStandard.* $folder/Sonarr.Update
cp $folder/libMonoPosixHelper.* $folder/Sonarr.Update cp $folder/libMonoPosixHelper.* $folder/Sonarr.Update
fi fi
@ -400,20 +399,20 @@ then
if [[ -z "$RID" || -z "$FRAMEWORK" ]]; if [[ -z "$RID" || -z "$FRAMEWORK" ]];
then then
PackageTests "net6.0" "win-x64" PackageTests "$framework" "win-x64"
PackageTests "net6.0" "win-x86" PackageTests "$framework" "win-x86"
PackageTests "net6.0" "linux-x64" PackageTests "$framework" "linux-x64"
PackageTests "net6.0" "linux-musl-x64" PackageTests "$framework" "linux-musl-x64"
PackageTests "net6.0" "osx-x64" PackageTests "$framework" "osx-x64"
if [ "$ENABLE_EXTRA_PLATFORMS" = "YES" ]; if [ "$ENABLE_EXTRA_PLATFORMS" = "YES" ];
then then
PackageTests "net6.0" "freebsd-x64" PackageTests "$framework" "freebsd-x64"
fi fi
else else
PackageTests "$FRAMEWORK" "$RID" PackageTests "$FRAMEWORK" "$RID"
fi fi
UploadTestArtifacts "net6.0" UploadTestArtifacts "$framework"
fi fi
if [ "$FRONTEND" = "YES" ]; if [ "$FRONTEND" = "YES" ];
@ -435,22 +434,22 @@ then
if [[ -z "$RID" || -z "$FRAMEWORK" ]]; if [[ -z "$RID" || -z "$FRAMEWORK" ]];
then then
Package "net6.0" "win-x64" Package "$framework" "win-x64"
Package "net6.0" "win-x86" Package "$framework" "win-x86"
Package "net6.0" "linux-x64" Package "$framework" "linux-x64"
Package "net6.0" "linux-musl-x64" Package "$framework" "linux-musl-x64"
Package "net6.0" "linux-arm64" Package "$framework" "linux-arm64"
Package "net6.0" "linux-musl-arm64" Package "$framework" "linux-musl-arm64"
Package "net6.0" "linux-arm" Package "$framework" "linux-arm"
Package "net6.0" "osx-x64" Package "$framework" "osx-x64"
Package "net6.0" "osx-arm64" Package "$framework" "osx-arm64"
if [ "$ENABLE_EXTRA_PLATFORMS" = "YES" ]; if [ "$ENABLE_EXTRA_PLATFORMS" = "YES" ];
then then
Package "net6.0" "freebsd-x64" Package "$framework" "freebsd-x64"
fi fi
else else
Package "$FRAMEWORK" "$RID" Package "$FRAMEWORK" "$RID"
fi fi
UploadArtifacts "net6.0" UploadArtifacts "$framework"
fi fi

View File

@ -3,8 +3,5 @@
@REM SET BRANCH=develop @REM SET BRANCH=develop
@REM SET FRAMEWORK=net6.0 @REM SET FRAMEWORK=net6.0
@REM SET RUNTIME=win-x64 @REM SET RUNTIME=win-x64
echo ##teamcity[progressStart 'Building setup file']
inno\ISCC.exe sonarr.iss
echo ##teamcity[progressFinish 'Building setup file']
echo ##teamcity[publishArtifacts 'distribution\windows\setup\output\*%RUNTIME%*.exe'] inno\ISCC.exe sonarr.iss

View File

@ -40,7 +40,7 @@ Compression=lzma2/normal
AppContact={#ForumsURL} AppContact={#ForumsURL}
VersionInfoVersion={#MajorVersion} VersionInfoVersion={#MajorVersion}
SetupLogging=yes SetupLogging=yes
OutputDir=output OutputDir="..\..\..\_artifacts"
AppverName={#AppName} AppverName={#AppName}
[Languages] [Languages]
@ -53,8 +53,8 @@ Name: "startupShortcut"; Description: "Create shortcut in Startup folder (Starts
Name: "none"; Description: "Do not start automatically"; GroupDescription: "Start automatically"; Flags: exclusive unchecked Name: "none"; Description: "Do not start automatically"; GroupDescription: "Start automatically"; Flags: exclusive unchecked
[Files] [Files]
Source: "..\..\..\_artifacts\{#Runtime}\{#Framework}\Sonarr\Sonarr.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "..\..\..\_output\{#Runtime}\{#Framework}\Sonarr\Sonarr.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\..\..\_artifacts\{#Runtime}\{#Framework}\Sonarr\*"; Excludes: "Sonarr.Update"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs Source: "..\..\..\_output\{#Runtime}\{#Framework}\Sonarr\*"; Excludes: "Sonarr.Update"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons] [Icons]

View File

@ -1,6 +1,7 @@
#!/bin/bash #!/bin/bash
set -e set -e
FRAMEWORK="net6.0"
PLATFORM=$1 PLATFORM=$1
if [ "$PLATFORM" = "Windows" ]; then if [ "$PLATFORM" = "Windows" ]; then
@ -32,7 +33,7 @@ dotnet msbuild -restore $slnFile -p:Configuration=Debug -p:Platform=$platform -p
dotnet new tool-manifest dotnet new tool-manifest
dotnet tool install --version 6.5.0 Swashbuckle.AspNetCore.Cli dotnet tool install --version 6.5.0 Swashbuckle.AspNetCore.Cli
dotnet tool run swagger tofile --output ./src/Sonarr.Api.V3/openapi.json "$outputFolder/net6.0/$RUNTIME/Sonarr.dll" v3 & dotnet tool run swagger tofile --output ./src/Sonarr.Api.V3/openapi.json "$outputFolder/$FRAMEWORK/$RUNTIME/Sonarr.dll" v3 &
sleep 30 sleep 30

5
global.json Normal file
View File

@ -0,0 +1,5 @@
{
"sdk": {
"version": "6.0.405"
}
}