Package all the things

This commit is contained in:
Mark McDowall 2024-01-06 12:05:11 -08:00
parent e51107f1c9
commit d640a069cd
8 changed files with 116 additions and 79 deletions

View File

@ -2,6 +2,12 @@ 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
@ -18,7 +24,7 @@ inputs:
runs:
using: 'composite'
steps:
- name: Download UI Artifact
- name: Download Artifact
uses: actions/download-artifact@v4
with:
name: ${{ inputs.artifact }}
@ -27,19 +33,48 @@ runs:
- name: Download UI Artifact
uses: actions/download-artifact@v4
with:
name: ui
name: build_ui
path: _output/UI
- name: Configure Environment Variables
shell: bash
runs: |
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: List Artifacts
- name: Create Windows Installer (x64)
if: ${{ inputs.platform == 'windows' }}
shell: cmd
run: |
SET RUNTIME=win-x64
cd ./distribution/windows/setup
./distribution/windows/setup/build.bat
- name: Create Windows Installer (x86)
if: ${{ inputs.platform == 'windows' }}
shell: cmd
run: |
SET RUNTIME=win-x86
cd ./distribution/windows/setup
./distribution/windows/setup/build.bat
- name: List Artifacts (Testing)
shell: bash
run: ls -l _artifacts
# - name: Upload Artifact
# uses: actions/upload-artifact@v4
# with:
# name: ${{ env.RESULTS_NAME }}
# path: ${{ env.RESULTS_NAME }}
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: release_${{ inputs.platform }}
path: |
_artifacts/*.exe
_artifacts/*.tar.gz
_artifacts/*.zip

View File

@ -3,20 +3,17 @@
outputFolder=_output
artifactsFolder=_artifacts
uiFolder="$outputFolder/UI"
framework="${FRAMEWORK:=net6.0}"
for folder in _artifacts/*
for runtime in _artifacts/*
do
name="${folder##*/}"
folderName="$outputFolder/$name"
name="${runtime##*/}"
folderName="$runtime/$framework/Sonarr"
sonarrFolder="$folderName/Sonarr"
echo "Creating package for $name"
rm -rf $folderName
mkdir $folderName
cp -r "$folder/net6.0/Sonarr" $sonarrFolder
echo "Copying UI folder"
echo "Copying UI runtime"
cp -r $uiFolder $sonarrFolder
echo "Setting permissions"

View File

@ -1,17 +0,0 @@
# https://docs.github.com/en/actions/creating-actions/creating-a-composite-action
name: Publish Artifact
description: Publishes a build artifact
inputs:
runtime:
description: '.net runtime'
required: true
runs:
using: 'composite'
steps:
- uses: actions/upload-artifact@v4
with:
name: ${{ inputs.runtime }}
path: _artifacts/${{ inputs.runtime }}/net6.0/**/*

View File

@ -4,6 +4,9 @@ name: Publish Test Artifact
description: Publishes a test artifact
inputs:
framework:
description: '.net framework'
required: true
runtime:
description: '.net runtime'
required: true
@ -14,4 +17,4 @@ runs:
- uses: actions/upload-artifact@v4
with:
name: tests-${{ inputs.runtime }}
path: _tests/net6.0/${{ inputs.runtime }}/publish/**/*
path: _tests/${{ inputs.framework }}/${{ inputs.runtime }}/publish/**/*

View File

@ -14,7 +14,8 @@ concurrency:
cancel-in-progress: true
env:
BRANCH: ${{ github.head_ref || github.ref_name }}
FRAMEWORK: net6.0
BRANCH: ${{ github.head_ref || github.ref_name }}
SONARR_MAJOR_VERSION: 4
VERSION: 4.0.0
@ -22,6 +23,7 @@ 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:
@ -38,6 +40,7 @@ jobs:
DOTNET_VERSION=$(jq -r '.sdk.version' global.json)
echo "SDK_PATH=${{ env.DOTNET_ROOT }}/sdk/${DOTNET_VERSION}" >> "$GITHUB_ENV"
echo "SONARR_VERSION=${{ env.VERSION }}.${{ github.run_number }}" >> "$GITHUB_ENV"
echo "framework=${{ env.FRAMEWORK }}" >> "$GITHUB_OUTPUT"
echo "major_version=${{ env.SONARR_MAJOR_VERSION }}" >> "$GITHUB_OUTPUT"
echo "version=${{ env.VERSION }}.${{ github.run_number }}" >> "$GITHUB_OUTPUT"
@ -54,16 +57,19 @@ jobs:
- 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)
@ -113,7 +119,7 @@ jobs:
- name: Publish UI Artifact
uses: actions/upload-artifact@v4
with:
name: ui
name: build_ui
path: _output/UI/**/*
unit_test:
@ -170,17 +176,17 @@ jobs:
artifact: tests-linux-x64
filter: TestCategory!=ManualTest&TestCategory!=WINDOWS&TestCategory=IntegrationTest
binary_artifact: build_linux
binary_path: linux-x64/net6.0/Sonarr
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/net6.0/Sonarr
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/net6.0/Sonarr
binary_path: win-x64/${{ needs.backend.outputs.framework }}/Sonarr
runs-on: ${{ matrix.os }}
steps:
- name: Check out
@ -203,6 +209,7 @@ jobs:
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 }}

View File

@ -3,19 +3,39 @@ name: Deploy
on:
workflow_call:
inputs:
framework:
description: '.net framework'
type: string
required: true
branch:
required: true
description: 'Git branch used for this build'
type: string
required: true
major_version:
required: true
description: 'Sonarr major version'
type: string
required: true
version:
required: true
description: 'Sonarr version'
type: string
required: true
jobs:
package_windows:
runs-on: windows-latest
package:
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
include:
- os: ubuntu-latest
platform: freebsd
- os: ubuntu-latest
platform: linux
- os: ubuntu-latest
platform: macos
- os: windows-latest
platform: windows
runs-on: ${{ matrix.os }}
steps:
- name: Check out
uses: actions/checkout@v3
@ -23,19 +43,9 @@ jobs:
- name: Package
uses: ./.github/actions/package
with:
artifact: build_windows
framework: ${{ inputs.framework }}
platform: ${{ matrix.platform }}
artifact: build_${{ matrix.platform }}
branch: ${{ inputs.branch }}
major_version: ${{ inputs.major_version }}
version: ${{ inputs.version }}
# package_linux:
# runs-on: ubuntu-latest
# steps:
# - name: Check out
# uses: actions/checkout@v3
# - name: Download Artifact
# uses: actions/download-artifact@v4
# with:
# name: build_linux
# path: _artifacts

View File

@ -4,6 +4,7 @@ set -e
outputFolder='_output'
testPackageFolder='_tests'
artifactsFolder="_artifacts";
framework="${FRAMEWORK:=net6.0}"
ProgressStart()
{
@ -138,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
@ -166,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
@ -398,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" ];
@ -433,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

View File

@ -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