Create build artifacts
This commit is contained in:
parent
9f5da7bfa3
commit
5df0f3953e
|
@ -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
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
name: Package
|
||||||
|
description: Packages binaries for deployment
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
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 UI Artifact
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: ${{ inputs.artifact }}
|
||||||
|
path: _artifacts
|
||||||
|
|
||||||
|
- name: Download UI Artifact
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: ui
|
||||||
|
path: _output/UI
|
||||||
|
|
||||||
|
- name: Create Packages
|
||||||
|
shell: bash
|
||||||
|
run: ./.github/actions/package.sh
|
||||||
|
|
||||||
|
- name: List Artifacts
|
||||||
|
shell: bash
|
||||||
|
run: ls -l _artifacts
|
||||||
|
|
||||||
|
# - name: Upload Artifact
|
||||||
|
# uses: actions/upload-artifact@v4
|
||||||
|
# with:
|
||||||
|
# name: ${{ env.RESULTS_NAME }}
|
||||||
|
# path: ${{ env.RESULTS_NAME }}
|
|
@ -0,0 +1,62 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
outputFolder=_output
|
||||||
|
artifactsFolder=_artifacts
|
||||||
|
uiFolder="$outputFolder/UI"
|
||||||
|
|
||||||
|
for folder in _artifacts/*
|
||||||
|
do
|
||||||
|
name="${folder##*/}"
|
||||||
|
folderName="$outputFolder/$name"
|
||||||
|
sonarrFolder="$folderName/Sonarr"
|
||||||
|
|
||||||
|
echo "Creating package for $name"
|
||||||
|
|
||||||
|
rm -rf $folderName
|
||||||
|
mkdir $folderName
|
||||||
|
cp -r "$folder/net6.0/Sonarr" $sonarrFolder
|
||||||
|
|
||||||
|
echo "Copying UI folder"
|
||||||
|
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/$name-app.zip" ./Sonarr.app)
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Packaging Artifact"
|
||||||
|
if [[ "$name" == *"linux"* ]] || [[ "$name" == *"osx"* ]] || [[ "$name" == *"freebsd"* ]]; then
|
||||||
|
tar -zcf "$artifactsFolder/$name.tar.gz" -C $folderName Sonarr
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$name" == *"win"* ]]; then
|
||||||
|
if [ "$RUNNER_OS" = "Windows" ]
|
||||||
|
then
|
||||||
|
7z a -tzip "$artifactsFolder/$name.zip" $folderName
|
||||||
|
else
|
||||||
|
(cd $folderName; zip -rq "../../$artifactsFolder/$name.zip" ./Sonarr)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
|
@ -1,6 +1,6 @@
|
||||||
# https://docs.github.com/en/actions/creating-actions/creating-a-composite-action
|
# https://docs.github.com/en/actions/creating-actions/creating-a-composite-action
|
||||||
|
|
||||||
name: Run test on DLLs matching the specified pattern
|
name: Test
|
||||||
description: Runs unit/integration tests
|
description: Runs unit/integration tests
|
||||||
|
|
||||||
inputs:
|
inputs:
|
||||||
|
@ -38,7 +38,7 @@ runs:
|
||||||
- name: Setup Test Variables
|
- name: Setup Test Variables
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
echo "RESULTS_NAME=${{ inputs.integration_tests && 'integation_' || 'unit_' }}${{ inputs.artifact }}${{ inputs.use_postgres && '_postgres' }}" >> "$GITHUB_ENV"
|
echo "RESULTS_NAME=${{ inputs.integration_tests && 'integation-' || 'unit-' }}${{ inputs.artifact }}${{ inputs.use_postgres && '_postgres' }}" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
- name: Setup Postgres Environment Variables
|
- name: Setup Postgres Environment Variables
|
||||||
if: ${{ inputs.use_postgres }}
|
if: ${{ inputs.use_postgres }}
|
||||||
|
|
|
@ -21,6 +21,9 @@ env:
|
||||||
jobs:
|
jobs:
|
||||||
backend:
|
backend:
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
|
outputs:
|
||||||
|
major_version: ${{ steps.variables.outputs.major_version }}
|
||||||
|
version: ${{ steps.variables.outputs.version }}
|
||||||
steps:
|
steps:
|
||||||
- name: Check out
|
- name: Check out
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
@ -29,12 +32,14 @@ jobs:
|
||||||
uses: actions/setup-dotnet@v3
|
uses: actions/setup-dotnet@v3
|
||||||
|
|
||||||
- name: Setup Environment Variables
|
- name: Setup Environment Variables
|
||||||
|
id: variables
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
echo "Run ID: ${{ github.run_id }}"
|
|
||||||
DOTNET_VERSION=$(jq -r '.sdk.version' global.json)
|
DOTNET_VERSION=$(jq -r '.sdk.version' global.json)
|
||||||
echo "SDK_PATH=${{ env.DOTNET_ROOT }}/sdk/${DOTNET_VERSION}" >> "$GITHUB_ENV"
|
echo "SDK_PATH=${{ env.DOTNET_ROOT }}/sdk/${DOTNET_VERSION}" >> "$GITHUB_ENV"
|
||||||
echo "SONARR_VERSION=${{ env.VERSION }}.${{ github.run_number }}" >> "$GITHUB_ENV"
|
echo "SONARR_VERSION=${{ env.VERSION }}.${{ github.run_number }}" >> "$GITHUB_ENV"
|
||||||
|
echo "major_version=${{ env.SONARR_MAJOR_VERSION }}" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "version=${{ env.VERSION }}.${{ github.run_number }}" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
- name: Enable Extra Platforms In SDK
|
- name: Enable Extra Platforms In SDK
|
||||||
shell: bash
|
shell: bash
|
||||||
|
@ -66,22 +71,22 @@ jobs:
|
||||||
- name: Publish FreeBSD Artifact
|
- name: Publish FreeBSD Artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: freebsd
|
name: build_freebsd
|
||||||
path: _artifacts/freebsd-*/**/*
|
path: _artifacts/freebsd-*/**/*
|
||||||
- name: Publish Linux Artifact
|
- name: Publish Linux Artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: linux
|
name: build_linux
|
||||||
path: _artifacts/linux-*/**/*
|
path: _artifacts/linux-*/**/*
|
||||||
- name: Publish macOS Artifact
|
- name: Publish macOS Artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: macos
|
name: build_macos
|
||||||
path: _artifacts/osx-*/**/*
|
path: _artifacts/osx-*/**/*
|
||||||
- name: Publish Windows Artifact
|
- name: Publish Windows Artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: windows
|
name: build_windows
|
||||||
path: _artifacts/win-*/**/*
|
path: _artifacts/win-*/**/*
|
||||||
|
|
||||||
frontend:
|
frontend:
|
||||||
|
@ -164,17 +169,17 @@ jobs:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
artifact: tests-linux-x64
|
artifact: tests-linux-x64
|
||||||
filter: TestCategory!=ManualTest&TestCategory!=WINDOWS&TestCategory=IntegrationTest
|
filter: TestCategory!=ManualTest&TestCategory!=WINDOWS&TestCategory=IntegrationTest
|
||||||
binary_artifact: linux
|
binary_artifact: build_linux
|
||||||
binary_path: linux-x64/net6.0/Sonarr
|
binary_path: linux-x64/net6.0/Sonarr
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
artifact: tests-osx-x64
|
artifact: tests-osx-x64
|
||||||
filter: TestCategory!=ManualTest&TestCategory!=WINDOWS&TestCategory=IntegrationTest
|
filter: TestCategory!=ManualTest&TestCategory!=WINDOWS&TestCategory=IntegrationTest
|
||||||
binary_artifact: macos
|
binary_artifact: build_macos
|
||||||
binary_path: osx-x64/net6.0/Sonarr
|
binary_path: osx-x64/net6.0/Sonarr
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
artifact: tests-win-x64
|
artifact: tests-win-x64
|
||||||
filter: TestCategory!=ManualTest&TestCategory=WINDOWS&TestCategory=IntegrationTest
|
filter: TestCategory!=ManualTest&TestCategory=WINDOWS&TestCategory=IntegrationTest
|
||||||
binary_artifact: windows
|
binary_artifact: build_windows
|
||||||
binary_path: win-x64/net6.0/Sonarr
|
binary_path: win-x64/net6.0/Sonarr
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
|
@ -194,7 +199,10 @@ jobs:
|
||||||
|
|
||||||
deploy:
|
deploy:
|
||||||
if: ${{ github.ref_name == 'develop' || github.ref_name == 'main' }}
|
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
|
uses: ./.github/workflows/deploy.yml
|
||||||
with:
|
with:
|
||||||
branch: ${{ github.ref_name }}
|
branch: ${{ github.ref_name }}
|
||||||
version: ${{ env.SONARR_VERSION }}
|
major_version: ${{ needs.backend.outputs.major_version }}
|
||||||
|
version: ${{ needs.backend.outputs.version }}
|
||||||
|
|
|
@ -6,6 +6,9 @@ on:
|
||||||
branch:
|
branch:
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
|
major_version:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
version:
|
version:
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
|
@ -14,14 +17,29 @@ on:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
package_linux:
|
package_windows:
|
||||||
runs-on: ubuntu-latest
|
runs-on: windows-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Check out
|
- name: Check out
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Download Artifact
|
- name: Package
|
||||||
uses: actions/download-artifact@v4
|
uses: ./.github/actions/package
|
||||||
with:
|
with:
|
||||||
name: linux
|
os: windows-latest
|
||||||
path: _artifacts
|
artifact: build_windows
|
||||||
|
branch: ${{ inputs.branch }}
|
||||||
|
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
|
||||||
|
|
Loading…
Reference in New Issue