ci: using workflow_call to simplify ci.

This commit is contained in:
Zhang Dian
2025-07-10 21:47:49 +08:00
parent 0524c9e16e
commit 5aad0fbd0d
4 changed files with 101 additions and 179 deletions

View File

@@ -10,23 +10,19 @@ on:
type: string
Ursa:
description: 'Pack Ursa'
required: true
default: 'true'
default: true
type: boolean
Ursa_Themes_Semi:
description: 'Pack Ursa.Themes.Semi'
required: true
default: 'true'
default: true
type: boolean
PrismExtension:
description: 'Pack Prism Extension'
required: true
default: 'false'
default: false
type: boolean
ReactiveUIExtension:
description: 'Pack ReactiveUI Extension'
required: true
default: 'false'
default: false
type: boolean
jobs:
@@ -40,23 +36,23 @@ jobs:
- name: Get Version
run: |
VERSION_TIMESTAMP=$(date +'%Y%m%d%H%M%S')
VERSION="${{ github.event.inputs.Version_Prefix }}-nightly-${VERSION_TIMESTAMP}"
VERSION="${{ inputs.Version_Prefix }}-nightly-${VERSION_TIMESTAMP}"
echo "VERSION=$VERSION" >> $GITHUB_ENV
- name: Pack Ursa
if: ${{ github.event.inputs.Ursa == 'true' }}
if: ${{ 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' }}
if: ${{ 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' }}
if: ${{ 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' }}
if: ${{ inputs.ReactiveUIExtension == true }}
run: dotnet pack src/Ursa.ReactiveUIExtension -o nugets /p:Version=${{ env.VERSION }}
- name: Add NuGet Source

View File

@@ -3,25 +3,42 @@ name: Pack to NuGet
on:
workflow_dispatch:
inputs:
Upload_to_NuGet:
description: 'Upload to NuGet'
default: true
type: boolean
Ursa:
description: 'Pack Ursa'
required: true
default: 'true'
default: true
type: boolean
Ursa_Themes_Semi:
description: 'Pack Ursa.Themes.Semi'
required: true
default: 'true'
default: true
type: boolean
PrismExtension:
description: 'Pack Prism Extension'
required: true
default: 'false'
default: false
type: boolean
ReactiveUIExtension:
description: 'Pack ReactiveUI Extension'
required: true
default: 'false'
default: false
type: boolean
workflow_call:
inputs:
Upload_to_NuGet:
type: boolean
default: false
Ursa:
default: true
type: boolean
Ursa_Themes_Semi:
default: true
type: boolean
PrismExtension:
default: false
type: boolean
ReactiveUIExtension:
default: false
type: boolean
jobs:
@@ -32,22 +49,23 @@ jobs:
uses: actions/checkout@v4.1.1
- name: Pack Ursa
if: ${{ github.event.inputs.Ursa == 'true' }}
if: ${{ inputs.Ursa == true }}
run: dotnet pack src/Ursa -o nugets
- name: Pack Ursa.Themes.Semi
if: ${{ github.event.inputs.Ursa_Themes_Semi == 'true' }}
if: ${{ inputs.Ursa_Themes_Semi == true }}
run: dotnet pack src/Ursa.Themes.Semi -o nugets
- name: Pack Prism Extension
if: ${{ github.event.inputs.PrismExtension == 'true' }}
if: ${{ inputs.PrismExtension == true }}
run: dotnet pack src/Ursa.PrismExtension -o nugets
- name: Pack ReactiveUI Extension
if: ${{ github.event.inputs.ReactiveUIExtension == 'true' }}
if: ${{ inputs.ReactiveUIExtension == true }}
run: dotnet pack src/Ursa.ReactiveUIExtension -o nugets
- name: Publish NuGet package
- name: Upload to NuGet
if: ${{ inputs.Upload_to_NuGet == true }}
run: dotnet nuget push "nugets/*.nupkg" --api-key ${{ secrets.NUGET_ORG_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate
- name: Upload a Build Artifact

View File

@@ -5,43 +5,59 @@ on:
inputs:
win-x64:
description: 'Windows x64'
required: true
default: false
type: boolean
win-x64-aot:
description: 'Windows x64 AOT'
required: true
default: false
type: boolean
linux-x64:
description: 'Linux x64'
required: true
default: false
type: boolean
linux-x64-aot:
description: 'Linux x64 AOT'
required: true
default: false
type: boolean
osx-arm64:
description: 'macOS arm64'
required: true
default: false
type: boolean
osx-arm64-aot:
description: 'macOS arm64 AOT'
required: true
default: false
type: boolean
android-arm64:
description: 'Android arm64'
required: true
default: false
type: boolean
workflow_call:
inputs:
win-x64:
type: boolean
default: true
win-x64-aot:
type: boolean
default: true
linux-x64:
type: boolean
default: true
linux-x64-aot:
type: boolean
default: true
osx-arm64:
type: boolean
default: true
osx-arm64-aot:
type: boolean
default: true
android-arm64:
type: boolean
default: true
jobs:
win-x64:
if: ${{ github.event.inputs.win-x64 == 'true' }}
if: ${{ inputs.win-x64 == true }}
runs-on: windows-latest
steps:
- name: Checkout
@@ -57,7 +73,7 @@ jobs:
!publish/*.pdb
win-x64-aot:
if: ${{ github.event.inputs.win-x64-aot == 'true' }}
if: ${{ inputs.win-x64-aot == true }}
runs-on: windows-latest
steps:
- name: Checkout
@@ -77,7 +93,7 @@ jobs:
!publish/*.pdb
linux-x64:
if: ${{ github.event.inputs.linux-x64 == 'true' }}
if: ${{ inputs.linux-x64 == true }}
runs-on: ubuntu-latest
steps:
- name: Checkout
@@ -93,7 +109,7 @@ jobs:
!publish/*.pdb
linux-x64-aot:
if: ${{ github.event.inputs.linux-x64-aot == 'true' }}
if: ${{ inputs.linux-x64-aot == true }}
runs-on: ubuntu-latest
steps:
- name: Checkout
@@ -113,7 +129,7 @@ jobs:
!publish/*.pdb
osx-arm64:
if: ${{ github.event.inputs.osx-arm64 == 'true' }}
if: ${{ inputs.osx-arm64 == true }}
runs-on: macos-latest
steps:
- name: Checkout
@@ -129,7 +145,7 @@ jobs:
!publish/*.pdb
osx-arm64-aot:
if: ${{ github.event.inputs.osx-arm64-aot == 'true' }}
if: ${{ inputs.osx-arm64-aot == true }}
runs-on: macos-latest
steps:
- name: Checkout
@@ -149,7 +165,7 @@ jobs:
!publish/*.pdb
android-arm64:
if: ${{ github.event.inputs.android-arm64 == 'true' }}
if: ${{ inputs.android-arm64 == true }}
runs-on: windows-latest
steps:
- name: Checkout

View File

@@ -5,151 +5,43 @@ on:
tags:
- "v[0-9]+.[0-9]+.[0-9]+"
workflow_dispatch:
inputs:
Upload_to_NuGet:
description: 'Upload to NuGet'
default: false
type: boolean
Ursa:
description: 'Pack Ursa'
default: true
type: boolean
Ursa_Themes_Semi:
description: 'Pack Ursa.Themes.Semi'
default: true
type: boolean
PrismExtension:
description: 'Pack Prism Extension'
default: false
type: boolean
ReactiveUIExtension:
description: 'Pack ReactiveUI Extension'
default: false
type: boolean
jobs:
nuget:
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
uses: ./.github/workflows/pack.yml
with:
Upload_to_NuGet: ${{ inputs.Upload_to_NuGet }}
Ursa: ${{ inputs.Ursa }}
Ursa_Themes_Semi: ${{ inputs.Ursa_Themes_Semi }}
PrismExtension: ${{ inputs.PrismExtension }}
ReactiveUIExtension: ${{ inputs.ReactiveUIExtension }}
- name: Upload a Build Artifact
uses: actions/upload-artifact@v4.6.2
with:
name: nugets
path: nugets
win-x64:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4.2.2
- name: Publish win-x64
run: dotnet publish demo/Ursa.Demo.Desktop -r win-x64 -c Release -o publish --sc -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true
- name: Upload a Build Artifact
uses: actions/upload-artifact@v4.6.2
with:
name: Ursa.Demo.Desktop.win-x64
path: |
publish
!publish/*.pdb
win-x64-aot:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4.2.2
- name: Enable Native AOT in .csproj
run: |
sed -i 's#<!--<PublishAot>true</PublishAot>-->#<PublishAot>true</PublishAot>#' demo/Ursa.Demo.Desktop/Ursa.Demo.Desktop.csproj
sed -i 's#<!--<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>-->#<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>#' 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
- name: Upload a Build Artifact
uses: actions/upload-artifact@v4.6.2
with:
name: Ursa.Demo.Desktop.win-x64.NativeAOT
path: |
publish
!publish/*.pdb
linux-x64:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4.2.2
- name: Publish linux-x64
run: dotnet publish demo/Ursa.Demo.Desktop -r linux-x64 -c Release -o publish --sc -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true
- name: Upload a Build Artifact
uses: actions/upload-artifact@v4.6.2
with:
name: Ursa.Demo.Desktop.linux-x64
path: |
publish
!publish/*.pdb
linux-x64-aot:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4.2.2
- name: Enable Native AOT in .csproj
run: |
sed -i 's#<!--<PublishAot>true</PublishAot>-->#<PublishAot>true</PublishAot>#' demo/Ursa.Demo.Desktop/Ursa.Demo.Desktop.csproj
sed -i 's#<!--<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>-->#<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>#' demo/Ursa.Demo.Desktop/Ursa.Demo.Desktop.csproj
- name: Publish linux-x64 AOT
run: dotnet publish demo/Ursa.Demo.Desktop -r linux-x64 -c Release -o publish
- name: Upload a Build Artifact
uses: actions/upload-artifact@v4.6.2
with:
name: Ursa.Demo.Desktop.linux-x64.NativeAOT
path: |
publish
!publish/*.pdb
osx-arm64:
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4.2.2
- name: Publish osx-arm64
run: dotnet publish demo/Ursa.Demo.Desktop -r osx-arm64 -c Release -o publish --sc -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true
- name: Upload a Build Artifact
uses: actions/upload-artifact@v4.6.2
with:
name: Ursa.Demo.Desktop.osx-arm64
path: |
publish
!publish/*.pdb
osx-arm64-aot:
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4.2.2
- name: Enable Native AOT in .csproj
run: |
sed -i '' 's#<!--<PublishAot>true</PublishAot>-->#<PublishAot>true</PublishAot>#' demo/Ursa.Demo.Desktop/Ursa.Demo.Desktop.csproj
sed -i '' 's#<!--<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>-->#<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>#' demo/Ursa.Demo.Desktop/Ursa.Demo.Desktop.csproj
- name: Publish osx-arm64 AOT
run: dotnet publish demo/Ursa.Demo.Desktop -r osx-arm64 -c Release -o publish
- name: Upload a Build Artifact
uses: actions/upload-artifact@v4.6.2
with:
name: Ursa.Demo.Desktop.osx-arm64.NativeAOT
path: |
publish
!publish/*.pdb
android-arm64:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4.2.2
- 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.6.2
with:
name: android-arm64
path: publish/*Signed.apk
publish:
uses: ./.github/workflows/publish.yml
draft-release:
needs: [
nuget,
win-x64,win-x64-aot,
linux-x64,linux-x64-aot,
osx-arm64,osx-arm64-aot,
android-arm64
]
needs: [ nuget,publish ]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4.3.0