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