New: Bump to net8.0 #876
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
on: | |
push: | |
branches: | |
- develop | |
- main | |
paths-ignore: | |
- 'src/Sonarr.Api.*/openapi.json' | |
pull_request: | |
branches: | |
- develop | |
paths-ignore: | |
- 'src/NzbDrone.Core/Localization/Core/**' | |
- 'src/Sonarr.Api.*/openapi.json' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
env: | |
FRAMEWORK: net8.0 | |
RAW_BRANCH_NAME: ${{ github.head_ref || github.ref_name }} | |
SONARR_MAJOR_VERSION: 4 | |
VERSION: 4.0.4 | |
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@v4 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
- 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 "BRANCH=${RAW_BRANCH_NAME/\//-}" >> "$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-arm64 Test Artifact | |
uses: ./.github/actions/publish-test-artifact | |
with: | |
framework: ${{ env.FRAMEWORK }} | |
runtime: osx-arm64 | |
# 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@v4 | |
- name: Volta | |
uses: volta-cli/action@v4 | |
- name: Yarn Install | |
run: yarn install | |
- name: Lint | |
run: yarn lint | |
- name: Stylelint | |
run: yarn stylelint -f github | |
- 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-arm64 | |
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@v4 | |
- 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@v4 | |
- 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: | |
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 | |
binary_artifact: build_linux | |
binary_path: linux-x64/${{ needs.backend.outputs.framework }}/Sonarr | |
- os: macos-latest | |
artifact: tests-osx-arm64 | |
filter: TestCategory!=ManualTest&TestCategory!=WINDOWS&TestCategory=IntegrationTest | |
binary_artifact: build_macos | |
binary_path: osx-arm64/${{ needs.backend.outputs.framework }}/Sonarr | |
- os: windows-latest | |
artifact: tests-win-x64 | |
filter: TestCategory!=ManualTest&TestCategory!=LINUX&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@v4 | |
- 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, frontend, 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 }} | |
notify: | |
name: Discord Notification | |
needs: [backend, frontend, unit_test, unit_test_postgres, integration_test, deploy] | |
if: ${{ !cancelled() && (github.ref_name == 'develop' || github.ref_name == 'main') }} | |
env: | |
STATUS: ${{ contains(needs.*.result, 'failure') && 'failure' || 'success' }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Notify | |
uses: tsickert/discord-webhook@v6.0.0 | |
with: | |
webhook-url: ${{ secrets.DISCORD_WEBHOOK_URL }} | |
username: 'GitHub Actions' | |
avatar-url: 'https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png' | |
embed-title: "${{ github.workflow }}: ${{ env.STATUS == 'success' && 'Success' || 'Failure' }}" | |
embed-url: 'https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}' | |
embed-description: | | |
**Branch** ${{ github.ref }} | |
**Build** ${{ needs.backend.outputs.version }} | |
embed-color: ${{ env.STATUS == 'success' && '3066993' || '15158332' }} |