Skip to content

Better handling of missing decoders #540

Better handling of missing decoders

Better handling of missing decoders #540

Workflow file for this run

name: Nightly
on:
push:
branches:
- develop
jobs:
buildAvaloniaUnpackaged:
name: Avalonia (Unpackaged)
runs-on: windows-2025-vs2026
strategy:
matrix:
platform:
- macos-x64
- macos-arm64
- win-x64
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
fetch-tags: true
- name: Install .NET SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: 10.0.x
- name: Find MSBuild
uses: microsoft/setup-msbuild@v3
- name: Build
run: |
./Util/Version-Avalonia.ps1 "C:\Program Files\Git\mingw64\bin\git.exe"
dotnet publish LRReader.Avalonia.Desktop\LRReader.Avalonia.Desktop.csproj -nologo -v:minimal -p:PublishProfile=${{ matrix.platform }} -p:Version=$env:LRR_VERSION
- name: Upload Artifacts
uses: actions/upload-artifact@v7
with:
name: LRReader.Avalonia.${{ matrix.platform }}
path: LRReader.Avalonia.Desktop/bin/publish/${{ matrix.platform }}
buildAvaloniaAppImage:
name: Avalonia (AppImage)
runs-on: ubuntu-latest
strategy:
matrix:
platform:
- linux-x64
- linux-arm64
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
fetch-tags: true
- name: Install .NET SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: 10.0.x
- name: Setup Tools
run: |
dotnet tool install -g KuiperZone.PupNet
wget -q https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage
chmod +x ./appimagetool-x86_64.AppImage
- name: Build
shell: pwsh
run: |
./Util/Version-Avalonia.ps1 "git"
pupnet -r ${{ matrix.platform }} -k appimage -v "$env:LRR_VERSION[1]" -p:NightlyAppImage=true -y
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v6
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Upload to S3
env:
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
run: |
aws s3 cp ./LRReader.Avalonia.Desktop/AppPackages/ s3://${AWS_S3_BUCKET}/projects/lrr/linux/nightly/ --recursive --exclude "*" --include "*.AppImage" --include "*.txt" --no-progress --acl public-read
- name: Upload Artifacts
uses: actions/upload-artifact@v7
with:
name: LRReader.Avalonia.${{ matrix.platform }}
path: LRReader.Avalonia.Desktop/AppPackages/*.AppImage
updateAvaloniaAppImageVersion:
name: Update Avalonia Version (AppImage)
needs:
- buildAvaloniaAppImage
runs-on: ubuntu-slim
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
fetch-tags: true
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v6
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Update Version
shell: pwsh
env:
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
run: |
./Util/Version-Avalonia.ps1 "git"
echo $env:LRR_VERSION >> version
aws s3 cp ./version s3://$env:AWS_S3_BUCKET/projects/lrr/linux/nightly/version --no-progress --acl public-read
buildUWP:
name: UWP Nightly
runs-on: windows-2025-vs2026
permissions:
packages: read
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
fetch-tags: true
- name: Install .NET SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: 10.0.x
- name: Find MSBuild
uses: microsoft/setup-msbuild@v3
- name: Build
env:
CERT_PASSWORD: ${{ secrets.CERT_PASSWORD }}
CERT_GPG: ${{ secrets.CERT_GPG }}
CERT_BASE64: ${{ secrets.CERT_BASE64 }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
run: |
[IO.File]::WriteAllBytes("./Cert.pfx.gpg", [Convert]::FromBase64String("${env:CERT_BASE64}"))
& "C:\Program Files\Git\usr\bin\gpg.exe" --quiet --batch --yes --decrypt --passphrase="${env:CERT_GPG}" --output Cert.pfx Cert.pfx.gpg
$Thumbprint = (Import-PfxCertificate .\Cert.pfx -Password (ConvertTo-SecureString "${env:CERT_PASSWORD}" -AsPlainText -Force) -CertStoreLocation Cert:\CurrentUser\My).Thumbprint
Remove-Item -Path "./Cert.pfx.gpg","./Cert.pfx"
Move-Item -Path "./Util/Package.appxmanifest" -Destination "./LRReader.UWP/Package.appxmanifest" -Force
Invoke-Expression "./Util/Version.ps1"
Invoke-Expression "./Util/ConfigureAppCenter.ps1"
dotnet restore .\LRReader.UWP\LRReader.UWP.csproj -a arm64
dotnet restore .\LRReader.UWP\LRReader.UWP.csproj -a x64
MSBuild LRReader.UWP\LRReader.UWP.csproj -nologo -r -v:minimal /p:Nightly=true /p:Deterministic=true /p:ContinuousIntegrationBuild=true /p:Configuration=Release /p:UapAppxPackageBuildMode=SideloadOnly /p:AppxPackageSigningEnabled=true /p:PackageCertificateThumbprint="$Thumbprint" /p:GenerateAppInstallerFile=True /p:AppInstallerUri="https://s3.guerra24.net/projects/lrr/nightly" /p:GenerateAppxPackageOnBuild=true
Invoke-Expression "./Util/CleanInstaller.ps1"
- name: Prepare for upload
run: ./Util/PrepareForUpload.ps1
- name: Setup sentry-cli
uses: matbour/setup-sentry-cli@v2
with:
version: 2.39.1
token: ${{ secrets.SENTRY_TOKEN }}
organization: ${{ secrets.SENTRY_ORG }}
project: ${{ secrets.SENTRY_PROJECT }}
- name: Upload Symbols
run: |
Set-Location "./LRReader.UWP/AppPackages/LRReader.UWP"
Get-ChildItem *.appxsym -File | Rename-Item -NewName { [IO.Path]::ChangeExtension($_.name, "zip") }
foreach ($file in $(Get-ChildItem *.zip -File)) { sentry-cli debug-files upload --include-sources --wait $file }
Remove-Item $(Get-ChildItem *.zip -File)
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v6
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Upload to S3
env:
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
run: aws s3 sync LRReader.UWP/AppPackages s3://${env:AWS_S3_BUCKET}/projects/lrr/nightly --no-progress --acl public-read --follow-symlinks --delete
- name: Upload Artifacts
uses: actions/upload-artifact@v7
with:
name: LRReader.UWP
path: LRReader.UWP/AppPackages
buildModernInstaller:
name: Modern Installer
runs-on: windows-2025-vs2026
permissions:
packages: read
strategy:
matrix:
arch: [x64, arm64]
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
fetch-tags: true
- name: Install .NET SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: 10.0.x
- name: Find MSBuild
uses: microsoft/setup-msbuild@v3
- name: Build
env:
APP_INSTALLER_URL: https://s3.guerra24.net/projects/lrr/nightly/LRReader.UWP.appinstaller
run: |
.\Util\Version.ps1
[xml]$xmlDoc = Get-Content "./LRReader.UWP/Package.appxmanifest"
$env:APP_VERSION="$($xmlDoc.Package.Identity.Version)"
.\Util\ConfigureInstaller.ps1 "$(Get-Location)/LRReader.UWP.ModernInstaller/Program.cs"
MSBuild LRReader.UWP.ModernInstaller\LRReader.UWP.ModernInstaller.csproj -nologo -r -v:minimal /t:Publish /p:_IsPublishing=true /p:PublishProfile="win-${{ matrix.arch }}" /p:Configuration=Release /p:Platform=${{ matrix.arch }} /p:Deterministic=true /p:ContinuousIntegrationBuild=true
- name: Upload Artifacts
uses: actions/upload-artifact@v7
with:
name: ModernInstaller-${{ matrix.arch }}
path: LRReader.UWP.ModernInstaller/bin/publish/win-${{ matrix.arch }}/LRReader.UWP.ModernInstaller.exe
buildInstaller:
name: Installer
runs-on: windows-2025-vs2026
permissions:
packages: read
strategy:
matrix:
arch: [x64, ARM64]
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Install .NET SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: 10.0.x
- name: Find MSBuild
uses: microsoft/setup-msbuild@v3
- name: Build
env:
APP_VERSION: Nightly
run: |
.\Util\ConfigureInstaller.ps1 "$(Get-Location)/LRReader.UWP.Installer/Variables.cs"
MSBuild LRReader.UWP.Installer\LRReader.UWP.Installer.csproj -nologo -r -v:minimal /p:Configuration=Release /p:Platform=${{ matrix.arch }} /p:Deterministic=true /p:ContinuousIntegrationBuild=true
- name: Upload Artifacts
uses: actions/upload-artifact@v7
with:
name: Installer-${{ matrix.arch }}
path: LRReader.UWP.Installer/bin/${{ matrix.arch }}/Release/net472/LRReader.UWP.Installer.exe
purgeCache:
name: Purge Nightly cache
needs:
- buildUWP
- updateAvaloniaAppImageVersion
runs-on: ubuntu-latest
steps:
- name: Purge cache
uses: jakejarvis/cloudflare-purge-action@master
env:
CLOUDFLARE_ZONE: ${{ secrets.CLOUDFLARE_ZONE }}
CLOUDFLARE_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN }}
PURGE_URLS: '["https://s3.guerra24.net/projects/lrr/nightly/LRReader.UWP.appinstaller", "https://s3.guerra24.net/projects/lrr/linux/nightly/LRReader.x86_64.AppImage", "https://s3.guerra24.net/projects/lrr/linux/nightly/LRReader.aarch64.AppImage", "https://s3.guerra24.net/projects/lrr/linux/nightly/LRReader.x86_64.AppImage.sha256.txt", "https://s3.guerra24.net/projects/lrr/linux/nightly/LRReader.aarch64.AppImage.sha256.txt", "https://s3.guerra24.net/projects/lrr/linux/nightly/version"]'