mirror of https://github.com/Sonarr/Sonarr
135 lines
4.3 KiB
YAML
135 lines
4.3 KiB
YAML
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@v4
|
|
|
|
- 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@v4
|
|
|
|
- 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
|