* Refactored workflows * Added docker build to release * Linux and MacOS now build on Linux
80 lines
3.2 KiB
YAML
80 lines
3.2 KiB
YAML
# build-linux.yml
|
|
# Reusable workflow that builds the Linux and MacOS versions of Libation.
|
|
---
|
|
name: build
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
version_override:
|
|
type: string
|
|
description: 'Version number override'
|
|
required: false
|
|
run_unit_tests:
|
|
type: boolean
|
|
description: 'Skip running unit tests'
|
|
required: false
|
|
default: true
|
|
|
|
env:
|
|
DOTNET_CONFIGURATION: 'Release'
|
|
DOTNET_VERSION: '7.0.x'
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
os: [Linux, MacOS]
|
|
ui: [Avalonia]
|
|
release_name: [chardonnay]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Setup .NET
|
|
uses: actions/setup-dotnet@v3
|
|
with:
|
|
dotnet-version: ${{ env.DOTNET_VERSION }}
|
|
env:
|
|
NUGET_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Get version
|
|
id: get_version
|
|
run: |
|
|
inputVersion="${{ inputs.version_override }}"
|
|
if [[ "${#inputVersion}" -gt 0 ]]
|
|
then
|
|
version="${inputVersion}"
|
|
else
|
|
version="$(grep -oP '(?<=<Version>).*(?=</Version)' ./Source/AppScaffolding/AppScaffolding.csproj)"
|
|
fi
|
|
echo "version=${version}" >> "${GITHUB_OUTPUT}"
|
|
|
|
- name: Unit test
|
|
if: ${{ inputs.run_unit_tests }}
|
|
working-directory: ./Source
|
|
run: dotnet test
|
|
|
|
- name: Publish
|
|
working-directory: ./Source
|
|
run: |
|
|
dotnet publish -c ${{ env.DOTNET_CONFIGURATION }} -o bin/Publish/${{ matrix.os }}-${{ matrix.release_name }} Libation${{ matrix.ui }}/Libation${{ matrix.ui }}.csproj -p:PublishProfile=Libation${{ matrix.ui }}/Properties/PublishProfiles/${{ matrix.os }}Profile.pubxml
|
|
dotnet publish -c ${{ env.DOTNET_CONFIGURATION }} -o bin/Publish/${{ matrix.os }}-${{ matrix.release_name }} LoadByOS/${{ matrix.os }}ConfigApp/${{ matrix.os }}ConfigApp.csproj -p:PublishProfile=LoadByOS/Properties/${{ matrix.os }}ConfigApp/PublishProfiles/${{ matrix.os }}Profile.pubxml
|
|
dotnet publish -c ${{ env.DOTNET_CONFIGURATION }} -o bin/Publish/${{ matrix.os }}-${{ matrix.release_name }} LibationCli/LibationCli.csproj -p:PublishProfile=LibationCli/Properties/PublishProfiles/${{ matrix.os }}Profile.pubxml
|
|
dotnet publish -c ${{ env.DOTNET_CONFIGURATION }} -o bin/Publish/${{ matrix.os }}-${{ matrix.release_name }} Hangover${{ matrix.ui }}/Hangover${{ matrix.ui }}.csproj -p:PublishProfile=Hangover${{ matrix.ui }}/Properties/PublishProfiles/${{ matrix.os }}Profile.pubxml
|
|
|
|
- name: Zip artifact
|
|
id: zip
|
|
working-directory: ./Source/bin/Publish/${{ matrix.os }}-${{ matrix.release_name }}
|
|
run: |
|
|
osbuild="$(echo '${{ matrix.os }}' | tr '[:upper:]' '[:lower:]')"
|
|
artifact="Libation.${{ steps.get_version.outputs.version }}-${osbuild}-${{ matrix.release_name }}"
|
|
echo "artifact=${artifact}" >> "${GITHUB_OUTPUT}"
|
|
tar -zcvf "../${artifact}.tar.gz" .
|
|
|
|
- name: Publish artifact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ${{ steps.zip.outputs.artifact }}.tar.gz
|
|
path: ./Source/bin/Publish/${{ steps.zip.outputs.artifact }}.tar.gz
|
|
if-no-files-found: error
|