diff --git a/.github/workflows/pack-nightly.yml b/.github/workflows/pack-nightly.yml new file mode 100644 index 0000000..680b6d6 --- /dev/null +++ b/.github/workflows/pack-nightly.yml @@ -0,0 +1,73 @@ +name: Pack Nightly + +on: + workflow_dispatch: + inputs: + Version_Prefix: + description: 'Version Prefix' + required: true + default: '1.6.999' + type: string + Ursa: + description: 'Pack Ursa' + required: true + default: 'true' + type: boolean + Ursa_Themes_Semi: + description: 'Pack Ursa.Themes.Semi' + required: true + default: 'true' + type: boolean + PrismExtension: + description: 'Pack Prism Extension' + required: true + default: 'false' + type: boolean + ReactiveUIExtension: + description: 'Pack ReactiveUI Extension' + required: true + default: 'false' + type: boolean + +jobs: + Pack_Nightly: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4.1.1 + + - name: Get Version + run: | + VERSION_TIMESTAMP=$(date +'%Y%m%d%H%M%S') + VERSION="${{ github.event.inputs.Version_Prefix }}-nightly-${VERSION_TIMESTAMP}" + echo "VERSION=$VERSION" >> $GITHUB_ENV + + - name: Pack Ursa + if: ${{ github.event.inputs.Ursa == 'true' }} + run: dotnet pack ./src/Ursa -o ./nugets /p:Version=${{ env.VERSION }} + + - name: Pack Ursa.Themes.Semi + if: ${{ github.event.inputs.Ursa_Themes_Semi == 'true' }} + run: dotnet pack ./src/Ursa.Themes.Semi -o ./nugets /p:Version=${{ env.VERSION }} + + - name: Pack Prism Extension + if: ${{ github.event.inputs.PrismExtension == 'true' }} + run: dotnet pack ./src/Ursa.PrismExtension -o ./nugets /p:Version=${{ env.VERSION }} + + - name: Pack ReactiveUI Extension + if: ${{ github.event.inputs.ReactiveUIExtension == 'true' }} + run: dotnet pack ./src/Ursa.ReactiveUIExtension -o ./nugets /p:Version=${{ env.VERSION }} + + - name: Add NuGet Source + run: dotnet nuget add source ${{ secrets.IRIHI_NUGET_FEED }} -n irihi.tech -u ${{ secrets.IRIHI_NUGET_USERNAME }} -p ${{ secrets.IRIHI_NUGET_PASSWORD }} --store-password-in-clear-text + + - name: Publish Nightly Package + run: dotnet nuget push "./nugets/*.nupkg" --api-key ${{ secrets.IRIHI_NUGET_API_KEY }} --source irihi.tech --skip-duplicate + + - name: Upload a Build Artifact + uses: actions/upload-artifact@v4.3.1 + with: + name: nugets + path: ./nugets + if: always() \ No newline at end of file diff --git a/.github/workflows/release-tag.yml b/.github/workflows/release-tag.yml new file mode 100644 index 0000000..0a3f345 --- /dev/null +++ b/.github/workflows/release-tag.yml @@ -0,0 +1,140 @@ +name: Release Tag + +on: + push: + tags: + - "v[0-9]+.[0-9]+.[0-9]+" + workflow_dispatch: + +jobs: + pack: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Pack Ursa + run: dotnet pack ./src/Ursa -o ./nugets + + - name: Pack Ursa.Themes.Semi + run: dotnet pack ./src/Ursa.Themes.Semi -o ./nugets + + - name: Upload a Build Artifact + uses: actions/upload-artifact@v4 + with: + name: nugets + path: ./nugets + + publish-windows: + runs-on: windows-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Make upload directory + run: mkdir upload + + - name: Publish win-x64 + run: dotnet publish demo/Ursa.Demo.Desktop -r win-x64 -c Release --sc /p:PublishSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true -o ./publish/win64 + + - name: Zip win-x64 + run: | + $files = Get-ChildItem -Path ./publish/win64/* -Recurse -Exclude *.pdb + Compress-Archive -Path $files.FullName -DestinationPath ./upload/Ursa.Demo.Desktop.win-x64.zip + + - name: Enable Native AOT in .csproj + run: | + sed -i 's##true#' demo/Ursa.Demo.Desktop/Ursa.Demo.Desktop.csproj + sed -i 's##true#' demo/Ursa.Demo.Desktop/Ursa.Demo.Desktop.csproj + + - name: Publish win-x64 AOT + run: dotnet publish demo/Ursa.Demo.Desktop -r win-x64 -c Release -o ./publish/win64-aot + + - name: Zip win-x64 AOT + run: | + $files = Get-ChildItem -Path ./publish/win64-aot/* -Recurse -Exclude *.pdb + Compress-Archive -Path $files.FullName -DestinationPath ./upload/Ursa.Demo.Desktop.win-x64.NativeAOT.zip + + - name: Upload a Build Artifact + uses: actions/upload-artifact@v4 + with: + name: windows + path: ./upload + + publish-linux: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Make upload directory + run: mkdir upload + + - name: Publish linux-x64 + run: dotnet publish demo/Ursa.Demo.Desktop -r linux-x64 -c Release --sc /p:PublishSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true -o ./publish/linux64 + + - name: Zip linux-x64 + run: zip -j -r ./upload/Ursa.Demo.Desktop.linux-x64.zip ./publish/linux64 -x "*.pdb" + + - name: Upload a Build Artifact + uses: actions/upload-artifact@v4 + with: + name: linux + path: ./upload + + publish-android: + runs-on: windows-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: CD Android + run: cd ./demo/Ursa.Demo.Android + + - name: Restore Dependencies + run: dotnet restore + + - name: Publish Android + run: dotnet publish demo/Ursa.Demo.Android -c Release -f net8.0-android --no-restore -o ./publish -p:RuntimeIdentifier=android-arm64 + + - name: Upload a Build Artifact + uses: actions/upload-artifact@v4 + with: + name: android + path: ./publish/*Signed.apk + + draft-release: + needs: [ pack, publish-windows, publish-linux, publish-android ] + runs-on: ubuntu-latest + steps: + - name: Download nugets Artifacts + uses: actions/download-artifact@v4 + with: + name: nugets + + - name: Download windows Artifacts + uses: actions/download-artifact@v4 + with: + name: windows + + - name: Download linux Artifacts + uses: actions/download-artifact@v4 + with: + name: linux + + - name: Download android Artifacts + uses: actions/download-artifact@v4 + with: + name: android + + - name: Release + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' + with: + generate_release_notes: true + draft: true + files: | + *.nupkg + *.zip + *.apk