From 4d93b387a79d809aff6b6f464f9227f47028a0af Mon Sep 17 00:00:00 2001 From: Zhang Dian <54255897+zdpcdt@users.noreply.github.com> Date: Thu, 10 Jul 2025 21:38:30 +0800 Subject: [PATCH] ci: using workflow_call to simplify ci. --- .github/workflows/pack-nightly.yml | 26 ++-- .github/workflows/pack.yml | 48 ++++--- .github/workflows/publish.yml | 56 +++++--- .github/workflows/release-tag.yml | 209 +++++------------------------ 4 files changed, 113 insertions(+), 226 deletions(-) diff --git a/.github/workflows/pack-nightly.yml b/.github/workflows/pack-nightly.yml index 089cd2b..d891e7a 100644 --- a/.github/workflows/pack-nightly.yml +++ b/.github/workflows/pack-nightly.yml @@ -10,23 +10,19 @@ on: type: string Semi_Avalonia: description: 'Pack Semi.Avalonia' - required: true - default: 'true' + default: true type: boolean Semi_Avalonia_ColorPicker: description: 'Pack Semi.Avalonia.ColorPicker' - required: true - default: 'true' + default: true type: boolean Semi_Avalonia_DataGrid: description: 'Pack Semi.Avalonia.DataGrid' - required: true - default: 'false' + default: false type: boolean Semi_Avalonia_TreeDataGrid: description: 'Pack Semi.Avalonia.TreeDataGrid' - required: true - default: 'false' + default: false type: boolean jobs: @@ -35,28 +31,28 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4.1.1 + uses: actions/checkout@v4.2.2 - 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 Semi.Avalonia - if: ${{ github.event.inputs.Semi_Avalonia == 'true' }} + if: ${{ inputs.Semi_Avalonia == true }} run: dotnet pack src/Semi.Avalonia -o nugets /p:Version=${{ env.VERSION }} - name: Pack Semi.Avalonia.ColorPicker - if: ${{ github.event.inputs.Semi_Avalonia_ColorPicker == 'true' }} + if: ${{ inputs.Semi_Avalonia_ColorPicker == true }} run: dotnet pack src/Semi.Avalonia.ColorPicker -o nugets /p:Version=${{ env.VERSION }} - name: Pack Semi.Avalonia.DataGrid - if: ${{ github.event.inputs.Semi_Avalonia_DataGrid == 'true' }} + if: ${{ inputs.Semi_Avalonia_DataGrid == true }} run: dotnet pack src/Semi.Avalonia.DataGrid -o nugets /p:Version=${{ env.VERSION }} - name: Pack Semi.Avalonia.TreeDataGrid - if: ${{ github.event.inputs.Semi_Avalonia_TreeDataGrid == 'true' }} + if: ${{ inputs.Semi_Avalonia_TreeDataGrid == true }} run: dotnet pack src/Semi.Avalonia.TreeDataGrid -o nugets /p:Version=${{ env.VERSION }} - name: Add NuGet Source @@ -66,7 +62,7 @@ jobs: 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 + uses: actions/upload-artifact@v4.6.2 with: name: nugets path: nugets diff --git a/.github/workflows/pack.yml b/.github/workflows/pack.yml index 0731a46..6f75a78 100644 --- a/.github/workflows/pack.yml +++ b/.github/workflows/pack.yml @@ -3,26 +3,43 @@ name: Pack to NuGet on: workflow_dispatch: inputs: + Upload_to_NuGet: + description: 'Upload to NuGet' + default: true + type: boolean Semi_Avalonia: description: 'Pack Semi.Avalonia' - required: true - default: 'true' + default: true type: boolean Semi_Avalonia_ColorPicker: description: 'Pack Semi.Avalonia.ColorPicker' - required: true - default: 'true' + default: true type: boolean Semi_Avalonia_DataGrid: description: 'Pack Semi.Avalonia.DataGrid' - required: true - default: 'false' + default: false type: boolean Semi_Avalonia_TreeDataGrid: description: 'Pack Semi.Avalonia.TreeDataGrid' - required: true - default: 'false' + default: false type: boolean + workflow_call: + inputs: + Upload_to_NuGet: + type: boolean + default: false + Semi_Avalonia: + type: boolean + default: true + Semi_Avalonia_ColorPicker: + type: boolean + default: true + Semi_Avalonia_DataGrid: + type: boolean + default: true + Semi_Avalonia_TreeDataGrid: + type: boolean + default: true jobs: Pack_to_NuGet: @@ -30,29 +47,30 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4.1.1 + uses: actions/checkout@v4.2.2 - name: Pack Semi.Avalonia - if: ${{ github.event.inputs.Semi_Avalonia == 'true' }} + if: ${{ inputs.Semi_Avalonia == true }} run: dotnet pack src/Semi.Avalonia -o nugets - name: Pack Semi.Avalonia.ColorPicker - if: ${{ github.event.inputs.Semi_Avalonia_ColorPicker == 'true' }} + if: ${{ inputs.Semi_Avalonia_ColorPicker == true }} run: dotnet pack src/Semi.Avalonia.ColorPicker -o nugets - name: Pack Semi.Avalonia.DataGrid - if: ${{ github.event.inputs.Semi_Avalonia_DataGrid == 'true' }} + if: ${{ inputs.Semi_Avalonia_DataGrid == true }} run: dotnet pack src/Semi.Avalonia.DataGrid -o nugets - name: Pack Semi.Avalonia.TreeDataGrid - if: ${{ github.event.inputs.Semi_Avalonia_TreeDataGrid == 'true' }} + if: ${{ inputs.Semi_Avalonia_TreeDataGrid == true }} run: dotnet pack src/Semi.Avalonia.TreeDataGrid -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 - uses: actions/upload-artifact@v4.3.1 + uses: actions/upload-artifact@v4.6.2 with: name: nugets path: nugets diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index bc330ee..30c8afd 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -5,53 +5,73 @@ 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 drm-linux-x64: description: 'DRM Linux x64' - required: true default: false type: boolean drm-linux-x64-aot: description: 'DRM 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 + drm-linux-x64: + type: boolean + default: true + drm-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 @@ -67,7 +87,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 @@ -87,7 +107,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 @@ -103,7 +123,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 @@ -123,7 +143,7 @@ jobs: !publish/*.pdb drm-linux-x64: - if: ${{ github.event.inputs.drm-linux-x64 == 'true' }} + if: ${{inputs.drm-linux-x64 == true}} runs-on: ubuntu-latest steps: - name: Checkout @@ -139,7 +159,7 @@ jobs: !publish/*.pdb drm-linux-x64-aot: - if: ${{ github.event.inputs.drm-linux-x64-aot == 'true' }} + if: ${{inputs.drm-linux-x64-aot == true}} runs-on: ubuntu-latest steps: - name: Checkout @@ -159,7 +179,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 @@ -175,7 +195,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 @@ -195,7 +215,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 46d3b87..c343cbf 100644 --- a/.github/workflows/release-tag.yml +++ b/.github/workflows/release-tag.yml @@ -5,190 +5,43 @@ on: tags: - "v[0-9]+.[0-9]+.[0-9]+.[0-9]+" workflow_dispatch: + inputs: + Upload_to_NuGet: + description: 'Upload to NuGet' + default: false + type: boolean + Semi_Avalonia: + description: 'Pack Semi.Avalonia' + default: true + type: boolean + Semi_Avalonia_ColorPicker: + description: 'Pack Semi.Avalonia.ColorPicker' + default: true + type: boolean + Semi_Avalonia_DataGrid: + description: 'Pack Semi.Avalonia.DataGrid' + default: false + type: boolean + Semi_Avalonia_TreeDataGrid: + description: 'Pack Semi.Avalonia.TreeDataGrid' + default: false + type: boolean jobs: nuget: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4.2.2 - - name: Pack Semi.Avalonia - run: dotnet pack src/Semi.Avalonia -o nugets - - name: Pack Semi.Avalonia.ColorPicker - run: dotnet pack src/Semi.Avalonia.ColorPicker -o nugets - - name: Pack Semi.Avalonia.DataGrid - run: dotnet pack src/Semi.Avalonia.DataGrid -o nugets - - name: Pack Semi.Avalonia.TreeDataGrid - run: dotnet pack src/Semi.Avalonia.TreeDataGrid -o nugets + uses: ./.github/workflows/pack.yml + with: + Upload_to_NuGet: ${{ inputs.Upload_to_NuGet }} + Semi_Avalonia: ${{ inputs.Semi_Avalonia }} + Semi_Avalonia_ColorPicker: ${{ inputs.Semi_Avalonia_ColorPicker }} + Semi_Avalonia_DataGrid: ${{ inputs.Semi_Avalonia_DataGrid }} + Semi_Avalonia_TreeDataGrid: ${{ inputs.Semi_Avalonia_TreeDataGrid }} - - 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/Semi.Avalonia.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: Semi.Avalonia.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/Semi.Avalonia.Demo.Desktop/Semi.Avalonia.Demo.Desktop.csproj - sed -i 's##true#' demo/Semi.Avalonia.Demo.Desktop/Semi.Avalonia.Demo.Desktop.csproj - - name: Publish win-x64 AOT - run: dotnet publish demo/Semi.Avalonia.Demo.Desktop -r win-x64 -c Release -o publish - - name: Upload a Build Artifact - uses: actions/upload-artifact@v4.6.2 - with: - name: Semi.Avalonia.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/Semi.Avalonia.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: Semi.Avalonia.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/Semi.Avalonia.Demo.Desktop/Semi.Avalonia.Demo.Desktop.csproj - sed -i 's##true#' demo/Semi.Avalonia.Demo.Desktop/Semi.Avalonia.Demo.Desktop.csproj - - name: Publish linux-x64 AOT - run: dotnet publish demo/Semi.Avalonia.Demo.Desktop -r linux-x64 -c Release -o publish - - name: Upload a Build Artifact - uses: actions/upload-artifact@v4.6.2 - with: - name: Semi.Avalonia.Demo.Desktop.linux-x64.NativeAOT - path: | - publish - !publish/*.pdb - - drm-linux-x64: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4.2.2 - - name: Publish linux-x64 DRM - run: dotnet publish demo/Semi.Avalonia.Demo.Drm -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: Semi.Avalonia.Demo.Drm.linux-x64 - path: | - publish - !publish/*.pdb - - drm-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/Semi.Avalonia.Demo.Drm/Semi.Avalonia.Demo.Drm.csproj - sed -i 's##true#' demo/Semi.Avalonia.Demo.Desktop/Semi.Avalonia.Demo.Desktop.csproj - - name: Publish linux-x64 AOT - run: dotnet publish demo/Semi.Avalonia.Demo.Drm -r linux-x64 -c Release -o publish - - name: Upload a Build Artifact - uses: actions/upload-artifact@v4.6.2 - with: - name: Semi.Avalonia.Demo.Drm.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/Semi.Avalonia.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: Semi.Avalonia.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/Semi.Avalonia.Demo.Desktop/Semi.Avalonia.Demo.Desktop.csproj - sed -i '' 's##true#' demo/Semi.Avalonia.Demo.Desktop/Semi.Avalonia.Demo.Desktop.csproj - - name: Publish osx-arm64 AOT - run: dotnet publish demo/Semi.Avalonia.Demo.Desktop -r osx-arm64 -c Release -o publish - - name: Upload a Build Artifact - uses: actions/upload-artifact@v4.6.2 - with: - name: Semi.Avalonia.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/Semi.Avalonia.Demo.Android - - name: Restore Dependencies - run: dotnet restore - - name: Publish Android - run: dotnet publish demo/Semi.Avalonia.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, - drm-linux-x64,drm-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