-
Notifications
You must be signed in to change notification settings - Fork 0
99 lines (95 loc) · 3.57 KB
/
Copy pathrelease.yml
File metadata and controls
99 lines (95 loc) · 3.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
name: Release Desktop Beta
on:
push:
tags: ["v*-beta.*"]
workflow_dispatch:
permissions:
contents: write
jobs:
preflight:
name: Verify signing configuration
runs-on: ubuntu-latest
timeout-minutes: 5
permissions:
contents: read
steps:
- name: Check required Apple secrets
env:
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
shell: bash
run: |
set -euo pipefail
missing=()
for secret_name in \
APPLE_CERTIFICATE \
APPLE_CERTIFICATE_PASSWORD \
APPLE_SIGNING_IDENTITY \
APPLE_ID \
APPLE_PASSWORD \
APPLE_TEAM_ID; do
if [[ -z "${!secret_name:-}" ]]; then
missing+=("$secret_name")
fi
done
if (( ${#missing[@]} > 0 )); then
printf 'Missing required release secrets: %s\n' "${missing[*]}"
exit 1
fi
echo "All required release secrets are configured."
build-macos:
needs: preflight
runs-on: macos-14
timeout-minutes: 45
steps:
- uses: actions/checkout@v7
- uses: actions/setup-node@v7
with:
node-version: 24
cache: npm
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
workspaces: src-tauri
- run: npm ci
- run: npm run check
- run: npm run desktop:check
- run: npx playwright install chromium
- run: npm run test:smoke
- uses: tauri-apps/tauri-action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
with:
tagName: v__VERSION__
releaseName: "逐词 v__VERSION__"
releaseBody: "See CHANGELOG.md for details."
releaseDraft: true
prerelease: true
- name: Verify signed bundle permissions
env:
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
shell: bash
run: |
set -euo pipefail
app_path='src-tauri/target/release/bundle/macos/逐词.app'
temp_dir="$(mktemp -d)"
trap 'rm -rf "$temp_dir"' EXIT
entitlements_path="$temp_dir/entitlements.plist"
codesign --verify --deep --strict --verbose=2 "$app_path"
signature_details="$(codesign -dv --verbose=4 "$app_path" 2>&1)"
grep -Fq 'Authority=Developer ID Application:' <<< "$signature_details"
grep -Fxq "TeamIdentifier=$APPLE_TEAM_ID" <<< "$signature_details"
codesign -d --xml --entitlements "$entitlements_path" "$app_path"
test "$(/usr/libexec/PlistBuddy -c 'Print :NSAppleEventsUsageDescription' "$app_path/Contents/Info.plist")" = \
'用于在辅助功能接口无法提供选中文字时,控制 System Events 发送复制快捷键。'
test "$(/usr/libexec/PlistBuddy -c 'Print :com.apple.security.automation.apple-events' "$entitlements_path")" = true