From 5aad0fbd0da0873a2363460e127ff172e72c4ab4 Mon Sep 17 00:00:00 2001 From: Zhang Dian <54255897+zdpcdt@users.noreply.github.com> Date: Thu, 10 Jul 2025 21:47:49 +0800 Subject: [PATCH] ci: using workflow_call to simplify ci. --- .github/workflows/pack-nightly.yml | 22 ++-- .github/workflows/pack.yml | 44 +++++--- .github/workflows/publish.yml | 44 +++++--- .github/workflows/release-tag.yml | 170 ++++++----------------------- 4 files changed, 101 insertions(+), 179 deletions(-) diff --git a/.github/workflows/pack-nightly.yml b/.github/workflows/pack-nightly.yml index 540cea3..1ed121c 100644 --- a/.github/workflows/pack-nightly.yml +++ b/.github/workflows/pack-nightly.yml @@ -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 diff --git a/.github/workflows/pack.yml b/.github/workflows/pack.yml index edf6b31..5398be3 100644 --- a/.github/workflows/pack.yml +++ b/.github/workflows/pack.yml @@ -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 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index eb0bee5..0973bdd 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -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 diff --git a/.github/workflows/release-tag.yml b/.github/workflows/release-tag.yml index a83b61c..c6f8bc6 100644 --- a/.github/workflows/release-tag.yml +++ b/.github/workflows/release-tag.yml @@ -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##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 - - 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##true#' demo/Ursa.Demo.Desktop/Ursa.Demo.Desktop.csproj - sed -i 's##true#' 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##true#' demo/Ursa.Demo.Desktop/Ursa.Demo.Desktop.csproj - sed -i '' 's##true#' 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