Skip to content

Bump Microsoft.Extensions.Hosting from 10.0.0 to 10.0.1 #356

Bump Microsoft.Extensions.Hosting from 10.0.0 to 10.0.1

Bump Microsoft.Extensions.Hosting from 10.0.0 to 10.0.1 #356

Workflow file for this run

#
# Builds the application and uploads artifacts
#
name: Build Application
on:
push:
paths:
- '.github/workflows/build.yml'
- 'build/**'
- 'contrib/**'
- 'src/**'
- 'docker/**'
- 'build.sh'
pull_request:
paths:
- '.github/workflows/build.yml'
- 'build/**'
- 'contrib/**'
- 'src/**'
- 'docker/**'
- 'build.sh'
env:
DOTNET_NOLOGO: true
jobs:
app-build:
name: Application Build
runs-on: ${{ matrix.os }}
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
permissions:
actions: read
contents: write
strategy:
fail-fast: false
matrix:
architecture: [x64, arm64]
os: [windows-latest, macos-latest, ubuntu-latest, ubuntu-24.04-arm]
include:
- os: windows-latest
id: win
script: .\build.ps1
- os: macos-latest
id: macos
script: ./build.sh
- os: ubuntu-latest
id: linux
script: ./build.sh
- os: ubuntu-24.04-arm
id: linux
script: ./build.sh
exclude:
- os: ubuntu-latest
architecture: arm64
- os: ubuntu-24.04-arm
architecture: x64
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 0
submodules: true
- name: Setup .NET
uses: actions/setup-dotnet@v5
with:
dotnet-version: 10.0.x
- name: Build libusb
if: matrix.os == 'windows-latest'
run: ${{ matrix.script }} --exclusive --architecture ${{ matrix.architecture }} -t BuildLibusb
- name: Build rtl-sdr
if: matrix.os == 'windows-latest'
run: ${{ matrix.script }} --exclusive --architecture ${{ matrix.architecture }} -t BuildRtlSdr
- name: Build StreamSDR
run: ${{ matrix.script }} --exclusive --architecture ${{ matrix.architecture }} -t BuildStreamSDR
- name: Upload artifact
uses: actions/upload-artifact@v5
with:
name: ${{ matrix.id }}-${{ matrix.architecture }}
path: artifacts/${{ matrix.id }}-${{ matrix.architecture }}
if-no-files-found: error
windows-installer-build:
name: Windows Installer Build
needs: app-build
runs-on: windows-latest
permissions:
actions: read
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Setup .NET
uses: actions/setup-dotnet@v5
with:
dotnet-version: 10.0.x
- name: Download Windows x64 app artifact
uses: actions/download-artifact@v6
with:
name: win-x64
path: artifacts/win-x64
- name: Download Windows ARM64 app artifact
uses: actions/download-artifact@v6
with:
name: win-arm64
path: artifacts/win-arm64
- name: Create x64 installer MSI
run: ".\\build.ps1 --exclusive -t CreateInstaller"
- name: Create ARM64 installer MSI
run: ".\\build.ps1 --exclusive -t CreateInstaller --architecture arm64"
- name: Upload x64 installer artifact
uses: actions/upload-artifact@v5
with:
name: win-x64-installer
path: artifacts/win-x64-installer
if-no-files-found: error
- name: Upload ARM64 installer artifact
uses: actions/upload-artifact@v5
with:
name: win-arm64-installer
path: artifacts/win-arm64-installer
if-no-files-found: error
macos-installer-build:
name: macOS Installer Build
needs: app-build
runs-on: macos-latest
permissions:
actions: read
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Add app signing certificates to Keychain
if: github.repository == 'orryverducci/StreamSDR' && github.ref_name == 'main' && github.event_name == 'push'
uses: apple-actions/import-codesign-certs@v6
with:
p12-file-base64: ${{ secrets.MAC_SIGNING_CERTS }}
p12-password: ${{ secrets.MAC_SIGNING_CERTS_PASSWORD }}
- name: Setup .NET
uses: actions/setup-dotnet@v5
with:
dotnet-version: 10.0.x
- name: Download Mac x64 app artifact
uses: actions/download-artifact@v6
with:
name: macos-x64
path: artifacts/macos-x64
- name: Download Mac ARM64 app artifact
uses: actions/download-artifact@v6
with:
name: macos-arm64
path: artifacts/macos-arm64
- name: Create universal binary
run: "./build.sh --exclusive -t CreateUniversalApp"
- name: Sign StreamSDR
if: github.repository == 'orryverducci/StreamSDR' && github.ref_name == 'main'
env:
MAC_SIGNING_CERT_NAME: ${{ secrets.MAC_SIGNING_CERT_NAME }}
run: "./build.sh --exclusive -t SignApp --appcert \"$MAC_SIGNING_CERT_NAME\""
- name: Create signed installer package
if: github.repository == 'orryverducci/StreamSDR' && github.ref_name == 'main'
env:
MAC_INSTALLER_CERT_NAME: ${{ secrets.MAC_INSTALLER_CERT_NAME }}
run: "./build.sh --exclusive -t CreateInstaller --installcert \"$MAC_INSTALLER_CERT_NAME\""
- name: Create unsigned installer package
if: github.repository != 'orryverducci/StreamSDR' || github.ref_name != 'main'
run: "./build.sh --exclusive -t CreateInstaller"
- name: Notarize the installer package
if: github.repository == 'orryverducci/StreamSDR' && github.ref_name == 'main'
env:
APPLE_DEV_TEAM: ${{ secrets.APPLE_DEV_TEAM }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
MAC_INSTALLER_CERT_NAME: ${{ secrets.MAC_INSTALLER_CERT_NAME }}
run: "./build.sh --exclusive -t NotarizeInstaller --installcert \"$MAC_INSTALLER_CERT_NAME\" --appleid \"$APPLE_ID\" --applepassword \"$APPLE_ID_PASSWORD\" --teamid \"$APPLE_DEV_TEAM\""
- name: Upload installer artifact
uses: actions/upload-artifact@v5
with:
name: macos-installer
path: artifacts/macos-installer
if-no-files-found: error
docker-build:
name: Docker Image Build
if: github.repository == 'orryverducci/StreamSDR' && github.ref_name == 'main' && github.event_name == 'push'
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Setup .NET
uses: actions/setup-dotnet@v5
with:
dotnet-version: 10.0.x
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
- name: Log in to the container registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build container image
run: ./build.sh --exclusive -t BuildDockerImage --multiarch true --registry ghcr.io