Skip to content

Commit 0108436

Browse files
committed
Merge remote-tracking branch 'origin/avalonia' into avalonia
2 parents 7d2b7a2 + eba558b commit 0108436

4 files changed

Lines changed: 132 additions & 85 deletions

File tree

Lines changed: 110 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,110 @@
1-
name: Release
1+
name: Build
22

33
on:
44
push:
5+
branches:
6+
- "**"
57
tags:
68
- "v*"
79
pull_request:
810
workflow_dispatch:
911
inputs:
1012
version:
11-
description: "Release version (default: VERSION file)"
13+
description: "发布版本(默认:VERSION 文件)"
1214
required: false
1315
default: ""
1416
create_release:
15-
description: "Create GitHub Release (true/false, default: false)"
17+
description: "创建 GitHub Releasetrue/false,默认:false"
1618
required: false
1719
default: "false"
1820

1921
permissions:
2022
contents: write
2123

2224
jobs:
25+
check-trigger:
26+
name: 检查触发条件
27+
runs-on: ubuntu-latest
28+
outputs:
29+
should_build: ${{ steps.check.outputs.should_build }}
30+
steps:
31+
- name: 检查
32+
id: check
33+
shell: bash
34+
run: |
35+
set -euo pipefail
36+
should_build="false"
37+
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
38+
should_build="true"
39+
elif [ "${{ github.event_name }}" = "pull_request" ]; then
40+
should_build="true"
41+
elif [ "${{ github.event_name }}" = "push" ]; then
42+
if [[ "${{ github.ref }}" == refs/tags/v* ]]; then
43+
should_build="true"
44+
elif [ -n "${{ github.event.head_commit.message }}" ]; then
45+
if echo "${{ github.event.head_commit.message }}" | grep -q "开始构建"; then
46+
should_build="true"
47+
fi
48+
fi
49+
fi
50+
echo "should_build=${should_build}" >> "$GITHUB_OUTPUT"
51+
52+
ci:
53+
name: 持续集成(${{ matrix.os }})
54+
needs: [check-trigger]
55+
if: needs.check-trigger.outputs.should_build == 'true'
56+
runs-on: ${{ matrix.os }}
57+
concurrency:
58+
group: ci-${{ github.ref }}-${{ matrix.os }}
59+
cancel-in-progress: true
60+
strategy:
61+
fail-fast: false
62+
matrix:
63+
os: [windows-latest, ubuntu-latest, macos-latest]
64+
steps:
65+
- name: 检出代码
66+
uses: actions/checkout@v4
67+
68+
- name: 安装 .NET SDK
69+
uses: actions/setup-dotnet@v4
70+
with:
71+
dotnet-version: 10.0.x
72+
dotnet-quality: preview
73+
74+
- name: 还原依赖
75+
run: dotnet restore SecRandom.slnx
76+
77+
- name: 构建
78+
run: dotnet build SecRandom.slnx -c Release --no-restore
79+
80+
- name: 检测测试项目
81+
shell: bash
82+
run: |
83+
set -euo pipefail
84+
if find . -type f \( -name '*Test*.csproj' -o -name '*Tests*.csproj' \) | grep -q .; then
85+
echo "HAS_TESTS=true" >> "$GITHUB_ENV"
86+
else
87+
echo "HAS_TESTS=false" >> "$GITHUB_ENV"
88+
fi
89+
90+
- name: 运行测试
91+
if: env.HAS_TESTS == 'true'
92+
run: dotnet test SecRandom.slnx -c Release --no-build
93+
2394
version:
24-
name: Resolve version
95+
name: 解析版本
96+
if: ${{ github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/tags/v') }}
2597
runs-on: ubuntu-latest
2698
outputs:
2799
version: ${{ steps.v.outputs.version }}
28100
version_no_v: ${{ steps.v.outputs.version_no_v }}
29101
changelog: ${{ steps.v.outputs.changelog }}
30102
create_release: ${{ steps.v.outputs.create_release }}
31103
steps:
32-
- name: Checkout
104+
- name: 检出代码
33105
uses: actions/checkout@v4
34106

35-
- name: Resolve
107+
- name: 解析
36108
id: v
37109
shell: bash
38110
run: |
@@ -68,7 +140,7 @@ jobs:
68140
echo "create_release=${create_release}" >> "$GITHUB_OUTPUT"
69141
70142
publish:
71-
name: Publish (${{ matrix.rid }})
143+
name: 发布构建(${{ matrix.rid }}
72144
needs: [version]
73145
runs-on: ${{ matrix.os }}
74146
strategy:
@@ -77,24 +149,30 @@ jobs:
77149
include:
78150
- os: windows-latest
79151
rid: win-x64
152+
- os: windows-latest
153+
rid: win-x86
154+
- os: windows-latest
155+
rid: win-arm64
80156
- os: ubuntu-latest
81157
rid: linux-x64
158+
- os: ubuntu-latest
159+
rid: linux-arm64
82160
- os: macos-latest
83161
rid: osx-x64
84162
- os: macos-latest
85163
rid: osx-arm64
86164

87165
steps:
88-
- name: Checkout
166+
- name: 检出代码
89167
uses: actions/checkout@v4
90168

91-
- name: Setup .NET SDK
169+
- name: 安装 .NET SDK
92170
uses: actions/setup-dotnet@v4
93171
with:
94172
dotnet-version: 10.0.x
95173
dotnet-quality: preview
96174

97-
- name: Publish
175+
- name: 发布
98176
run: >
99177
dotnet publish src/SecRandom.Avalonia/SecRandom.Avalonia.csproj
100178
-c Release
@@ -104,7 +182,7 @@ jobs:
104182
/p:PublishSingleFile=true
105183
/p:IncludeNativeLibrariesForSelfExtract=true
106184
107-
- name: Package (Windows zip)
185+
- name: 打包(Windows zip
108186
if: runner.os == 'Windows'
109187
shell: pwsh
110188
run: |
@@ -113,7 +191,7 @@ jobs:
113191
$outFile = "dist/SecRandom-${versionNoV}-${{ matrix.rid }}.zip"
114192
Compress-Archive -Path "artifacts/SecRandom-${{ matrix.rid }}/*" -DestinationPath $outFile -Force
115193
116-
- name: Package (Linux deb)
194+
- name: 打包(Linux deb
117195
if: runner.os == 'Linux'
118196
shell: bash
119197
run: |
@@ -122,6 +200,12 @@ jobs:
122200
version_no_v="${{ needs.version.outputs.version_no_v }}"
123201
mkdir -p dist
124202
203+
deb_arch="amd64"
204+
case "${{ matrix.rid }}" in
205+
linux-x64) deb_arch="amd64" ;;
206+
linux-arm64) deb_arch="arm64" ;;
207+
esac
208+
125209
pkgroot="$(pwd)/pkgroot"
126210
rm -rf "$pkgroot"
127211
mkdir -p "$pkgroot/DEBIAN"
@@ -158,14 +242,14 @@ jobs:
158242
Version: ${version_no_v}
159243
Section: utils
160244
Priority: optional
161-
Architecture: amd64
245+
Architecture: ${deb_arch}
162246
Maintainer: SECTL
163247
Description: SecRandom
164248
EOF
165249
166250
dpkg-deb --build "$pkgroot" "dist/SecRandom-${version_no_v}-${{ matrix.rid }}.deb"
167251
168-
- name: Package (macOS pkg)
252+
- name: 打包(macOS pkg
169253
if: runner.os == 'macOS'
170254
shell: bash
171255
run: |
@@ -225,34 +309,34 @@ jobs:
225309
--install-location "/" \
226310
"dist/SecRandom-${version_no_v}-${{ matrix.rid }}.pkg"
227311
228-
- name: Upload artifact
312+
- name: 上传构建产物
229313
uses: actions/upload-artifact@v4
230314
with:
231315
name: SecRandom-${{ matrix.rid }}
232316
path: dist/*
233317

234318
notes:
235-
name: Generate notes
319+
name: 生成发布说明
236320
needs: [version, publish]
237321
runs-on: ubuntu-latest
238322
steps:
239-
- name: Checkout
323+
- name: 检出代码
240324
uses: actions/checkout@v4
241325

242-
- name: Download artifacts
326+
- name: 下载产物
243327
uses: actions/download-artifact@v4
244328
with:
245329
path: dist
246330

247-
- name: Collect files
331+
- name: 收集文件
248332
shell: bash
249333
run: |
250334
set -euo pipefail
251335
mkdir -p release
252336
find dist -type f \( -name '*.zip' -o -name '*.deb' -o -name '*.pkg' \) -print -exec cp -f {} release/ \;
253337
ls -la release
254338
255-
- name: Generate release notes with SHA512
339+
- name: 生成说明与 SHA512
256340
shell: bash
257341
run: |
258342
set -euo pipefail
@@ -301,7 +385,7 @@ jobs:
301385
done
302386
fi
303387
304-
- name: Upload notes artifact
388+
- name: 上传说明产物
305389
uses: actions/upload-artifact@v4
306390
with:
307391
name: release-notes
@@ -310,31 +394,31 @@ jobs:
310394
release/SHA512SUMS.txt
311395
312396
release:
313-
name: Create GitHub Release
397+
name: 创建 GitHub Release
314398
if: needs.version.outputs.create_release == 'true'
315399
needs: [version, publish, notes]
316400
runs-on: ubuntu-latest
317401
steps:
318-
- name: Download artifacts
402+
- name: 下载产物
319403
uses: actions/download-artifact@v4
320404
with:
321405
path: dist
322406

323-
- name: Collect files
407+
- name: 收集文件
324408
shell: bash
325409
run: |
326410
set -euo pipefail
327411
mkdir -p release
328412
find dist -type f \( -name '*.zip' -o -name '*.deb' -o -name '*.pkg' -o -name 'SHA512SUMS.txt' \) -print -exec cp -f {} release/ \;
329413
ls -la release
330414
331-
- name: Download release notes
415+
- name: 下载发布说明
332416
uses: actions/download-artifact@v4
333417
with:
334418
name: release-notes
335419
path: notes
336420

337-
- name: Publish release
421+
- name: 发布 Release
338422
uses: softprops/action-gh-release@v2
339423
with:
340424
tag_name: ${{ needs.version.outputs.version }}

.github/workflows/ci.yml

Lines changed: 0 additions & 49 deletions
This file was deleted.

0 commit comments

Comments
 (0)