From 6b92b556bb6506ba95df64932b5db2db88f0b52f Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Sat, 25 Nov 2023 23:23:10 -0500 Subject: [PATCH] Build and publish using GitHub actions --- .github/actions/archive/action.yml | 29 +++ .github/actions/package/action.yml | 78 +++++++ .github/actions/package/package.sh | 67 ++++++ .../actions/publish-test-artifact/action.yml | 18 ++ .github/actions/test/action.yml | 88 +++++++ .github/release.yml | 9 + .github/workflows/build.yml | 219 ++++++++++++++++++ .github/workflows/deploy.yml | 134 +++++++++++ build.sh | 47 ++-- distribution/windows/setup/build.bat | 5 +- distribution/windows/setup/sonarr.iss | 6 +- docs.sh | 3 +- global.json | 5 + 13 files changed, 676 insertions(+), 32 deletions(-) create mode 100644 .github/actions/archive/action.yml create mode 100644 .github/actions/package/action.yml create mode 100755 .github/actions/package/package.sh create mode 100644 .github/actions/publish-test-artifact/action.yml create mode 100644 .github/actions/test/action.yml create mode 100644 .github/release.yml create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/deploy.yml create mode 100644 global.json diff --git a/.github/actions/archive/action.yml b/.github/actions/archive/action.yml new file mode 100644 index 000000000..83e8a8ea9 --- /dev/null +++ b/.github/actions/archive/action.yml @@ -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 + diff --git a/.github/actions/package/action.yml b/.github/actions/package/action.yml new file mode 100644 index 000000000..99c4d4ff1 --- /dev/null +++ b/.github/actions/package/action.yml @@ -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 diff --git a/.github/actions/package/package.sh b/.github/actions/package/package.sh new file mode 100755 index 000000000..8dce60585 --- /dev/null +++ b/.github/actions/package/package.sh @@ -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 diff --git a/.github/actions/publish-test-artifact/action.yml b/.github/actions/publish-test-artifact/action.yml new file mode 100644 index 000000000..af3642043 --- /dev/null +++ b/.github/actions/publish-test-artifact/action.yml @@ -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/**/* diff --git a/.github/actions/test/action.yml b/.github/actions/test/action.yml new file mode 100644 index 000000000..8cab83ae9 --- /dev/null +++ b/.github/actions/test/action.yml @@ -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 diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 000000000..87eb8f2fe --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,9 @@ + changelog: + exclude: + authors: + - Weblate + - SonarrBot + categories: + - title: Changes + labels: + - '*' diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..e3174a2e3 --- /dev/null +++ b/.github/workflows/build.yml @@ -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 }} diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 000000000..af683e9d8 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -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 diff --git a/build.sh b/build.sh index 337e08b99..ee59d2f61 100755 --- a/build.sh +++ b/build.sh @@ -4,19 +4,18 @@ set -e outputFolder='_output' testPackageFolder='_tests' artifactsFolder="_artifacts"; +framework="${FRAMEWORK:=net6.0}" ProgressStart() { - echo "##teamcity[blockOpened name='$1']" - echo "##teamcity[progressStart '$1']" + echo "::group::$1" echo "Start '$1'" } ProgressEnd() { echo "Finish '$1'" - echo "##teamcity[progressFinish '$1']" - echo "##teamcity[blockClosed name='$1']" + echo "::endgroup::" } UpdateVersionNumber() @@ -140,7 +139,7 @@ PackageLinux() echo "Adding Sonarr.Mono to UpdatePackage" 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/libMonoPosixHelper.* $folder/Sonarr.Update fi @@ -168,7 +167,7 @@ PackageMacOS() echo "Adding Sonarr.Mono to UpdatePackage" 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/libMonoPosixHelper.* $folder/Sonarr.Update fi @@ -400,20 +399,20 @@ then if [[ -z "$RID" || -z "$FRAMEWORK" ]]; then - PackageTests "net6.0" "win-x64" - PackageTests "net6.0" "win-x86" - PackageTests "net6.0" "linux-x64" - PackageTests "net6.0" "linux-musl-x64" - PackageTests "net6.0" "osx-x64" + PackageTests "$framework" "win-x64" + PackageTests "$framework" "win-x86" + PackageTests "$framework" "linux-x64" + PackageTests "$framework" "linux-musl-x64" + PackageTests "$framework" "osx-x64" if [ "$ENABLE_EXTRA_PLATFORMS" = "YES" ]; then - PackageTests "net6.0" "freebsd-x64" + PackageTests "$framework" "freebsd-x64" fi else PackageTests "$FRAMEWORK" "$RID" fi - UploadTestArtifacts "net6.0" + UploadTestArtifacts "$framework" fi if [ "$FRONTEND" = "YES" ]; @@ -435,22 +434,22 @@ then if [[ -z "$RID" || -z "$FRAMEWORK" ]]; then - Package "net6.0" "win-x64" - Package "net6.0" "win-x86" - Package "net6.0" "linux-x64" - Package "net6.0" "linux-musl-x64" - Package "net6.0" "linux-arm64" - Package "net6.0" "linux-musl-arm64" - Package "net6.0" "linux-arm" - Package "net6.0" "osx-x64" - Package "net6.0" "osx-arm64" + Package "$framework" "win-x64" + Package "$framework" "win-x86" + Package "$framework" "linux-x64" + Package "$framework" "linux-musl-x64" + Package "$framework" "linux-arm64" + Package "$framework" "linux-musl-arm64" + Package "$framework" "linux-arm" + Package "$framework" "osx-x64" + Package "$framework" "osx-arm64" if [ "$ENABLE_EXTRA_PLATFORMS" = "YES" ]; then - Package "net6.0" "freebsd-x64" + Package "$framework" "freebsd-x64" fi else Package "$FRAMEWORK" "$RID" fi - UploadArtifacts "net6.0" + UploadArtifacts "$framework" fi diff --git a/distribution/windows/setup/build.bat b/distribution/windows/setup/build.bat index 6d7f64bef..6c205089e 100644 --- a/distribution/windows/setup/build.bat +++ b/distribution/windows/setup/build.bat @@ -3,8 +3,5 @@ @REM SET BRANCH=develop @REM SET FRAMEWORK=net6.0 @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 diff --git a/distribution/windows/setup/sonarr.iss b/distribution/windows/setup/sonarr.iss index a444a4b49..8401bdea9 100644 --- a/distribution/windows/setup/sonarr.iss +++ b/distribution/windows/setup/sonarr.iss @@ -40,7 +40,7 @@ Compression=lzma2/normal AppContact={#ForumsURL} VersionInfoVersion={#MajorVersion} SetupLogging=yes -OutputDir=output +OutputDir="..\..\..\_artifacts" AppverName={#AppName} [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 [Files] -Source: "..\..\..\_artifacts\{#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\Sonarr.exe"; DestDir: "{app}"; Flags: ignoreversion +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 [Icons] diff --git a/docs.sh b/docs.sh index 685a4d6e0..a0f21c41a 100755 --- a/docs.sh +++ b/docs.sh @@ -1,6 +1,7 @@ #!/bin/bash set -e +FRAMEWORK="net6.0" PLATFORM=$1 if [ "$PLATFORM" = "Windows" ]; then @@ -32,7 +33,7 @@ dotnet msbuild -restore $slnFile -p:Configuration=Debug -p:Platform=$platform -p dotnet new tool-manifest 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 diff --git a/global.json b/global.json new file mode 100644 index 000000000..5f5ece165 --- /dev/null +++ b/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "6.0.405" + } +}