XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEExtension

【DLL】XFE各类拓展是一个C#的DLL库,旨在优化C#代码中常用语句的使用,并提供更简洁的访问方式,同时提供Xunit测试框架,快速搭建服务器/客户端,免费ChatGPTAPI接口,免费通讯服务器,XFE下载器,新增格式等

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFEExtension

在CI流程中支持排除指定项目构建

在 publish-packages.yml 和 validate.yml 中新增“Prepare build solution”步骤,通过 PowerShell 脚本根据 EXCLUDED_PROJECT_PATH 环境变量动态排除指定项目,生成临时解决方案文件(build.slnx),并用其进行 restore 和 build,提升构建与发布包的灵活性。

63ee519
XFE工作室室长 <mail@xfegzs.com>
提交于

代码差异

2 个文件 +40 -4
Modified .github/workflows/publish-packages.yml +20 -2
@@ -23,6 +23,7 @@ permissions:
23 23 env:
24 24 DOTNET_VERSION: 10.0.x
25 25 SOLUTION_PATH: XFEExtension.slnx
26 EXCLUDED_PROJECT_PATH: XFEExtension/XFEExtension.csproj
26 27 PROJECT_PATH: XFEExtension.NetCore/XFEExtension.NetCore.csproj
27 28 PACKAGE_OUTPUT_DIR: ${{ github.workspace }}/artifacts/packages
28 29
@@ -59,11 +60,28 @@ jobs:
59 60 echo "value=$version" >> "$GITHUB_OUTPUT"
60 61 echo "PACKAGE_VERSION=$version" >> "$GITHUB_ENV"
61 62
63 - name: Prepare build solution
64 shell: pwsh
65 run: |
66 [xml]$solution = Get-Content "${{ env.SOLUTION_PATH }}" -Raw
67 $excludedProjectPath = "${{ env.EXCLUDED_PROJECT_PATH }}"
68 $projects = @($solution.Solution.Project)
69
70 foreach ($project in $projects) {
71 if ($project.Path -eq $excludedProjectPath) {
72 [void]$project.ParentNode.RemoveChild($project)
73 }
74 }
75
76 $buildSolutionPath = Join-Path "${{ runner.temp }}" "build.slnx"
77 $solution.Save($buildSolutionPath)
78 "BUILD_SOLUTION_PATH=$buildSolutionPath" >> $env:GITHUB_ENV
79
62 80 - name: Restore
63 run: dotnet restore ${{ env.SOLUTION_PATH }}
81 run: dotnet restore ${{ env.BUILD_SOLUTION_PATH }}
64 82
65 83 - name: Build
66 run: dotnet build ${{ env.SOLUTION_PATH }} --configuration Release --no-restore -p:GeneratePackageOnBuild=false -p:ContinuousIntegrationBuild=true -p:Version=${{ env.PACKAGE_VERSION }} -p:PackageVersion=${{ env.PACKAGE_VERSION }}
84 run: dotnet build ${{ env.BUILD_SOLUTION_PATH }} --configuration Release --no-restore -p:GeneratePackageOnBuild=false -p:ContinuousIntegrationBuild=true -p:Version=${{ env.PACKAGE_VERSION }} -p:PackageVersion=${{ env.PACKAGE_VERSION }}
67 85
68 86 - name: Pack
69 87 run: dotnet pack ${{ env.PROJECT_PATH }} --configuration Release --no-build --no-restore --output ${{ env.PACKAGE_OUTPUT_DIR }} -p:GeneratePackageOnBuild=false -p:ContinuousIntegrationBuild=true -p:Version=${{ env.PACKAGE_VERSION }} -p:PackageVersion=${{ env.PACKAGE_VERSION }}
Modified .github/workflows/validate.yml +20 -2
@@ -13,6 +13,7 @@ permissions:
13 13 env:
14 14 DOTNET_VERSION: 10.0.x
15 15 SOLUTION_PATH: XFEExtension.slnx
16 EXCLUDED_PROJECT_PATH: XFEExtension/XFEExtension.csproj
16 17
17 18 jobs:
18 19 build:
@@ -27,8 +28,25 @@ jobs:
27 28 with:
28 29 dotnet-version: ${{ env.DOTNET_VERSION }}
29 30
31 - name: Prepare build solution
32 shell: pwsh
33 run: |
34 [xml]$solution = Get-Content "${{ env.SOLUTION_PATH }}" -Raw
35 $excludedProjectPath = "${{ env.EXCLUDED_PROJECT_PATH }}"
36 $projects = @($solution.Solution.Project)
37
38 foreach ($project in $projects) {
39 if ($project.Path -eq $excludedProjectPath) {
40 [void]$project.ParentNode.RemoveChild($project)
41 }
42 }
43
44 $buildSolutionPath = Join-Path "${{ runner.temp }}" "build.slnx"
45 $solution.Save($buildSolutionPath)
46 "BUILD_SOLUTION_PATH=$buildSolutionPath" >> $env:GITHUB_ENV
47
30 48 - name: Restore
31 run: dotnet restore ${{ env.SOLUTION_PATH }}
49 run: dotnet restore ${{ env.BUILD_SOLUTION_PATH }}
32 50
33 51 - name: Build
34 run: dotnet build ${{ env.SOLUTION_PATH }} --configuration Release --no-restore -p:GeneratePackageOnBuild=false -p:ContinuousIntegrationBuild=true
52 run: dotnet build ${{ env.BUILD_SOLUTION_PATH }} --configuration Release --no-restore -p:GeneratePackageOnBuild=false -p:ContinuousIntegrationBuild=true