Repository navigation
136 lines (113 loc) · 4.11 KB
/
Copy pathci.yml
File metadata and controls
136 lines (113 loc) · 4.11 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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
name: CI
on:
pull_request:
push:
branches:
- main
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
review-scripts:
runs-on: windows-latest
timeout-minutes: 5
strategy:
matrix:
engine: [powershell, pwsh]
steps:
- uses: actions/checkout@v4
- name: Test review helpers and captured thread fixtures
shell: pwsh
run: ${{ matrix.engine }} -NoProfile -File ./.agents/skills/ok-script-pr-review/test-coderabbit-helpers.ps1
- name: Test head and quota waiter scenarios
shell: pwsh
run: ${{ matrix.engine }} -NoProfile -File ./.agents/skills/ok-script-pr-review/test-coderabbit-wait-mock.ps1
- name: Test read-only thread waiter scenarios
shell: pwsh
run: ${{ matrix.engine }} -NoProfile -File ./.agents/skills/ok-script-pr-review/test-review-threads-mock.ps1
vscode:
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
- name: Check out source
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install dependencies
run: npm ci
- name: Validate release orchestrator syntax
run: bash -n scripts/release/orchestrate-release.sh
# 单独一步而不是塞进 `npm test`:语言包对等与代码无关,
# 失败信息要一眼能看出是「漏翻译」而不是「测试挂了」。
- name: Verify localization parity
run: npm run verify:l10n
- name: Verify, compile, and test
run: npm test
- name: Package VSIX
run: npm run package
- name: Resolve package metadata
id: version
run: npm run --silent verify:version
- name: Upload VSIX artifact
uses: actions/upload-artifact@v4
with:
name: ${{ steps.version.outputs.vsix }}
path: ${{ steps.version.outputs.vsix }}
if-no-files-found: error
retention-days: 14
jetbrains:
runs-on: ubuntu-24.04
timeout-minutes: 30
steps:
- name: Check out source
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 22
- name: Resolve package metadata
id: version
run: npm run --silent verify:version
- name: Set up Java
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: '21'
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4
with:
# 配置缓存里可能含凭据,Action 只有拿到这把密钥才会保存和恢复它。
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
# ⚠️ 这里**刻意没有** `verifyPlugin`(Plugin Verifier:真的下载 IDE 去查
# 废弃 / 实验性 / internal API)。它慢且要联网,只在 `release.yml` 里跑。
# 本 job 其实具备条件(`submodules: recursive` 让 `../python` 存在,
# 能过 build.gradle.kts 的 `distributableTasks` 守卫),是**刻意的取舍**,不是遗漏。
#
# ⚠️ 注意 `verifyPluginStructure` 只查 JAR / plugin.xml 的**结构**,
# **不查 API 兼容性** —— 别把它当成"API 已经在每次推送时验过了"。
- name: Test and package JetBrains plugin
working-directory: jetbrains
run: ./gradlew test buildPlugin verifyPluginStructure verifyPluginConfiguration
- name: Upload JetBrains artifact
uses: actions/upload-artifact@v4
with:
name: ${{ steps.version.outputs.jetbrains_zip }}
path: jetbrains/build/distributions/${{ steps.version.outputs.jetbrains_zip }}
if-no-files-found: error
retention-days: 14