Skip to content

Set subtitle instead if available #318

Set subtitle instead if available

Set subtitle instead if available #318

Workflow file for this run

# This workflow will build a .NET project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net
name: Build and Test
on:
push:
pull_request:
branches: [ "main" ]
jobs:
build:
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, windows-latest, macos-latest ]
name: Build, Test, and Upload Builds (${{ matrix.os }})
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: 8.0.x
- name: Set VERSION variable from tag
shell: bash
run: echo "VERSION=0.0.0" >> $GITHUB_ENV
- name: Publish for Linux x64
if: matrix.os == 'ubuntu-latest'
run: dotnet publish -c Release -r linux-x64 --self-contained Refresher /p:Version=${VERSION}
- name: Publish for Linux ARM
if: matrix.os == 'ubuntu-latest'
run: dotnet publish -c Release -r linux-arm --self-contained Refresher /p:Version=${VERSION}
- name: Publish for Linux ARM64
if: matrix.os == 'ubuntu-latest'
run: dotnet publish -c Release -r linux-arm64 --self-contained Refresher /p:Version=${VERSION}
- name: Publish for Windows x64
if: matrix.os == 'windows-latest'
shell: bash
run: dotnet publish -c Release -r win-x64 --self-contained Refresher //p:Version=${VERSION}
- name: Publish for macOS x64
if: matrix.os == 'macos-latest'
shell: bash
run: dotnet publish -c Release -r osx-x64 --self-contained Refresher /p:Version=${VERSION}
- name: Publish for macOS ARM64
if: matrix.os == 'macos-latest'
shell: bash
run: dotnet publish -c Release -r osx-arm64 --self-contained Refresher /p:Version=${VERSION}
- name: Create macOS universal2 binary
if: matrix.os == 'macos-latest'
shell: bash
working-directory: Refresher/bin/Release/net8.0/
run: |
mkdir -p osx-universal2/publish/Refresher.app/Contents/MacOS
cp -r osx-arm64/publish/*.app/Contents/ osx-universal2/publish/Refresher.app/Contents/
for file in $(find osx-arm64/publish/*.app/Contents/MacOS); do
if [[ "$(file $file)" == *"Mach-O"* ]]; then
if [[ "$(lipo -archs $file)" != *"x86_64 arm64"* ]]; then
lipo -create osx-arm64/publish/*.app/Contents/MacOS/$(basename $file) osx-x64/publish/*.app/Contents/MacOS/$(basename $file) -output osx-universal2/publish/Refresher.app/Contents/MacOS/$(basename $file);
fi;
fi;
done
rm -rfv osx-universal2/publish/Refresher.app/Contents/MacOS/*.app
codesign -fs - --deep osx-universal2/publish/Refresher.app
# We need to tarball our macOS and Linux builds, since the ZIP files created by upload-artifact do not retain extended unix file permissions,
# which means the executable bit is lost, which is un-ideal for end users, who will hit weird errors (especially relating to code signing on macOS)
- name: 'Tar macOS universal2 build'
if: matrix.os == 'macos-latest'
working-directory: Refresher/bin/Release/net8.0/osx-universal2/publish/
run: tar -cvf ../../../../../../Refresher-macOS.tar *.app
- name: 'Tar Linux x64'
if: matrix.os == 'ubuntu-latest'
working-directory: Refresher/bin/Release/net8.0/linux-x64/publish/
run: tar -cvf ../../../../../../Refresher-x64.tar *
- name: 'Tar Linux ARM'
if: matrix.os == 'ubuntu-latest'
working-directory: Refresher/bin/Release/net8.0/linux-arm/publish/
run: tar -cvf ../../../../../../Refresher-arm.tar *
- name: 'Tar Linux ARM64'
if: matrix.os == 'ubuntu-latest'
working-directory: Refresher/bin/Release/net8.0/linux-arm64/publish/
run: tar -cvf ../../../../../../Refresher-arm64.tar *
- name: Upload Linux x64 build
if: matrix.os == 'ubuntu-latest'
uses: actions/[email protected]
with:
name: "Refresher for Linux x64"
path: "Refresher-x64.tar"
if-no-files-found: error
retention-days: 30
- name: Upload Linux ARM build
if: matrix.os == 'ubuntu-latest'
uses: actions/[email protected]
with:
name: "Refresher for Linux ARM"
path: "Refresher-arm.tar"
if-no-files-found: error
retention-days: 30
- name: Upload Linux ARM64 build
if: matrix.os == 'ubuntu-latest'
uses: actions/[email protected]
with:
name: "Refresher for Linux ARM64"
path: "Refresher-arm64.tar"
if-no-files-found: error
retention-days: 30
- name: Upload Windows x64 build
if: matrix.os == 'windows-latest'
uses: actions/[email protected]
with:
name: "Refresher for Windows x64"
path: "Refresher/bin/Release/net8.0-windows/win-x64/publish/"
if-no-files-found: error
retention-days: 30
- name: Upload macOS universal2 build
if: matrix.os == 'macos-latest'
uses: actions/[email protected]
with:
name: "Refresher for macOS universal2"
path: "Refresher-macOS.tar"
if-no-files-found: error
retention-days: 30