AI Coding:json4u更新迭代
背景
近期开发遇到xml格式化,当前网络上的xml格式化都太丑了,不够自然,所以打算在json4u的上面简单二开,部署到github上供日常使用。
原仓库信息及使用方式
仓库地址:https://github.com/boommanpro/json4u
使用方式:
直接点击编辑页面操作:https://boommanpro.github.io/json4u/editor
使用url进行传递:https://boommanpro.github.io/json4u/editor?data={"hello":"world"}
现将内容copy到剪切板,然后点击链接:https://boommanpro.github.io/json4u/editor?data=copyFromClipboard
可以结合raycast的快捷键使用。
本次迭代
请拉取远程 https://github.com/loggerhead/json4u.git ,最新的main分支,并且将代码进行merge新特性,fix冲突后先不要提交,让我确认代码提交信息:https://github.com/boommanpro/json4u/commit/0c8b6d7eb7bd5c1e7c09098f8f0d93b28c4ef00f
学习记录
deploy迭代
Current runner version: '2.334.0'
Runner Image Provisioner
Operating System
Runner Image
GITHUB_TOKEN Permissions
Secret source: Actions
Prepare workflow directory
Prepare all required actions
Getting action download info
Download action repository 'actions/checkout@v4' (SHA:34e114876b0b11c390a56381ad16ebd13914f8d5)
Download action repository 'actions/setup-node@v4' (SHA:49933ea5288caeca8642d1e84afbd3f7d6820020)
Download action repository 'pnpm/action-setup@v2' (SHA:eae0cfeb286e66ffb5155f1a79b90583a127a68b)
Error: An action could not be found at the URI ' https://codeload.github.com/pnpm/action-setup/tar.gz/eae0cfeb286e66ffb5155f1a79b90583a127a68b ' (DC10:24B79C:1A4F02:1EC4BD:6A159604)
Error: Failed to download archive ' https://codeload.github.com/pnpm/action-setup/tar.gz/eae0cfeb286e66ffb5155f1a79b90583a127a68b ' after 1 attempts.
现在官方build失败原因是:deploy部分依赖被封禁了,当前项目1年更新,依赖被封禁了
# GitHub Actions 构建失败问题分析与优化方案
## 问题现象
GitHub Actions 构建失败,错误信息:
```
Error: An action could not be found at the URI
'https://codeload.github.com/pnpm/action-setup/tar.gz/eae0cfeb286e66ffb5155f1a79b90583a127a68b'
Error: Failed to download archive after 1 attempts.
```
## 根因分析
- 工作流中使用了 `pnpm/action-setup@v2`,对应的 commit SHA 为 `eae0cfeb286e66ffb5155f1a79b90583a127a68b`
- 该 commit 已无法从 GitHub 正常下载(可能是仓库历史重写、分支删除或 Git 引用失效等原因)
- GitHub Actions 在下载 action 归档时失败,导致整个工作流中断
## 已应用的修复
将 `pnpm/action-setup@v2` 升级为 `pnpm/action-setup@v4`:
```yaml
# 修改前
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 9.12.0
# 修改后
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9
```
## 进一步优化建议
### 1. 使用 commit SHA 锁定 action 版本(推荐)
使用标签引用(如 `@v4`)存在标签被移动到新 commit 的风险,建议锁定到具体 SHA:
```yaml
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
```
### 2. 升级 Node.js 版本
当前使用 Node 18,Node 18 的 EOL 为 2025 年 4 月,建议升级到 Node 20 或 22:
```yaml
- uses: actions/setup-node@v4
with:
node-version: 20
```
### 3. 启用 pnpm 缓存
利用 `actions/setup-node` 内置的 pnpm 缓存支持,加速依赖安装:
```yaml
- uses: actions/setup-node@v4
with:
node-version: 20
cache: pnpm
```
### 4. 升级 deploy action 版本
`JamesIves/github-pages-deploy-action@v4.3.4` 版本较旧,建议升级:
```yaml
- uses: JamesIves/github-pages-deploy-action@v4.7.2
```
### 5. 完整优化后的工作流参考
```yaml
name: Deploy to GitHub Pages
on:
push:
branches: ["main"]
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4.2.2
- uses: pnpm/action-setup@v4
with:
version: 9
- uses: actions/setup-node@v4
with:
node-version: 20
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build Application
run: pnpm run build
- name: Deploy
uses: JamesIves/github-pages-deploy-action@v4.7.2
with:
token: ${{ secrets.GITHUB_TOKEN }}
branch: gh-pages
folder: dist
force: true
commit-message: website deploy
- name: Cleanup
run: rm -rf dist
```
> **注意**:`pnpm/action-setup` 需要在 `actions/setup-node` 之前执行,这样 `setup-node` 才能正确识别 pnpm 并启用缓存。
没有自动deploy
可以手动deploy部署
License:
晋ICP备16009994号-1