Skip to content

Commit 0eff5c0

Browse files
committed
fix: 修复GitHub Actions权限问题
1 parent dde6dd1 commit 0eff5c0

3 files changed

Lines changed: 130 additions & 3 deletions

File tree

‎.github/TROUBLESHOOTING.md‎

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# GitHub Actions 故障排除
2+
3+
## 403 权限错误解决方案
4+
5+
如果您遇到 `⚠️ GitHub release failed with status: 403` 错误,请按以下步骤检查和修复:
6+
7+
### 1. 检查仓库设置
8+
9+
前往 GitHub 仓库设置:
10+
11+
1. 点击仓库页面的 **Settings** 标签
12+
2. 在左侧菜单中选择 **Actions** → **General**
13+
3. 在 **Workflow permissions** 部分,选择:
14+
- ✅ **Read and write permissions**
15+
- ✅ **Allow GitHub Actions to create and approve pull requests**
16+
17+
### 2. 检查个人 Token 权限(如果使用自定义Token)
18+
19+
如果您使用自定义的 `GITHUB_TOKEN`:
20+
21+
1. 前往 GitHub Settings → Developer settings → Personal access tokens
22+
2. 确保 Token 具有以下权限:
23+
- ✅ `repo` (Full control of private repositories)
24+
- ✅ `write:packages` (Write packages to GitHub Package Registry)
25+
- ✅ `contents:write` (Contents write permission)
26+
27+
### 3. 验证分支保护规则
28+
29+
1. 前往 **Settings** → **Branches**
30+
2. 检查是否有分支保护规则阻止 Actions
31+
3. 如果有保护规则,确保:
32+
- ✅ 允许 Actions 推送到保护分支
33+
- ✅ 不要求管理员进行审查
34+
35+
### 4. 手动测试权限
36+
37+
运行调试工作流来检查权限:
38+
39+
```bash
40+
# 在 GitHub 仓库页面的 Actions 标签中
41+
# 找到 "Debug Permissions" 工作流
42+
# 点击 "Run workflow" 手动运行
43+
```
44+
45+
### 5. 组织仓库的额外设置
46+
47+
如果仓库属于组织:
48+
49+
1. 前往组织的 **Settings** → **Actions**
50+
2. 确保允许仓库使用 Actions
51+
3. 检查 **Third-party Actions** 设置
52+
53+
### 6. 重新创建工作流文件
54+
55+
如果以上都无效,尝试重新创建工作流:
56+
57+
1. 删除 `.github/workflows/build.yml`
58+
2. 重新创建文件
59+
3. 提交并推送
60+
61+
### 7. 使用经典 Token
62+
63+
如果问题持续存在,创建经典 Personal Access Token:
64+
65+
1. GitHub Settings → Developer settings → Personal access tokens → Tokens (classic)
66+
2. 生成新 Token,选择所有 `repo` 权限
67+
3. 在仓库 Settings → Secrets 中添加为 `RELEASE_TOKEN`
68+
4. 修改工作流使用 `RELEASE_TOKEN` 而不是 `GITHUB_TOKEN`
69+
70+
## 常见问题
71+
72+
### Q: 为什么构建成功但发布失败?
73+
A: 这通常是权限问题。检查上述权限设置。
74+
75+
### Q: 可以手动创建 Release 吗?
76+
A: 是的,您可以:
77+
1. 手动运行构建工作流
78+
2. 下载 Artifacts
79+
3. 在 GitHub 手动创建 Release 并上传文件
80+
81+
### Q: 如何调试权限问题?
82+
A: 运行 "Debug Permissions" 工作流查看详细信息。
83+
84+
## 联系支持
85+
86+
如果问题仍然存在,请:
87+
1. 提供完整的错误日志
88+
2. 说明您的仓库设置
89+
3. 创建 Issue 寻求帮助

‎.github/workflows/build.yml‎

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ on:
99
branches: [ main, master ]
1010
workflow_dispatch:
1111

12+
# 添加权限设置
13+
permissions:
14+
contents: write
15+
packages: write
16+
1217
jobs:
1318
build:
1419
runs-on: macos-latest
@@ -99,9 +104,10 @@ jobs:
99104
100105
- name: Create Release (on tag)
101106
if: startsWith(github.ref, 'refs/tags/')
102-
uses: softprops/action-gh-release@v1
107+
uses: softprops/action-gh-release@v2
103108
with:
104109
name: ShiftSwitch ${{ steps.version.outputs.VERSION }}
110+
tag_name: ${{ steps.version.outputs.VERSION }}
105111
body: |
106112
## ShiftSwitch ${{ steps.version.outputs.VERSION }}
107113
@@ -126,13 +132,14 @@ jobs:
126132
- 按下Caps Lock键只切换英文字母大小写
127133
- 点击状态栏⌨️图标查看菜单选项
128134
129-
如有问题请查看 [调试指南](https://github.com/${{ github.repository }}/blob/main/调试指南.md)
130-
131135
files: |
132136
./build/ShiftSwitch.dmg
133137
./build/ShiftSwitch.zip
134138
draft: false
135139
prerelease: false
140+
make_latest: true
141+
generate_release_notes: false
142+
fail_on_unmatched_files: false
136143
env:
137144
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
138145

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: Debug Permissions
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches: [ main, master ]
7+
8+
permissions:
9+
contents: read
10+
metadata: read
11+
12+
jobs:
13+
debug:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Check token permissions
17+
run: |
18+
echo "GitHub Event: ${{ github.event_name }}"
19+
echo "GitHub Ref: ${{ github.ref }}"
20+
echo "GitHub Repository: ${{ github.repository }}"
21+
echo "GitHub Actor: ${{ github.actor }}"
22+
23+
- name: Test API access
24+
run: |
25+
echo "Testing GitHub API access..."
26+
curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
27+
-H "Accept: application/vnd.github.v3+json" \
28+
"https://api.github.com/repos/${{ github.repository }}" \
29+
| jq '.permissions // empty'
30+
env:
31+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)