Skip to content

Commit e2e4841

Browse files
committed
feat: optimize workflows and build scripts
- ci.yml (原 build_doc.yml):合并 lychee check job(check→build 串行)、 改用 setup-node 内置 yarn cache、workflow 命名改为 CI - 删除 check.yml(已并入 ci.yml) - 删除 update.yml,新增 dependabot.yml(npm + github-actions 每周自动 PR) - sync-contentful.yml (原 app_from_contentful.yml):git-auto-commit@v5、 job id build→generate、workflow 命名规范化 - sync-catalog.yml (原 json2md.yml):git-auto-commit@v5、job id build→generate、 6 个分散 step 合并为 1 个 Generate all Markdown files step - builds/sync_contentful.py (原 gen_md_from_contenful.py):修正拼写错误 contenful→contentful - builds/gen_app_index.py (原 json2md.py):语义化重命名 - builds/gen_allapps.py:修复 import sys 缺失(避免 NameError) - DEVELOPMENT.md:同步更新 CI 工作流说明表格
1 parent 385e6e4 commit e2e4841

11 files changed

Lines changed: 322 additions & 119 deletions

File tree

.github/dependabot.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: "npm"
4+
directory: "/"
5+
schedule:
6+
interval: "weekly"
7+
day: "monday"
8+
open-pull-requests-limit: 3
9+
labels:
10+
- "dependencies"
11+
12+
- package-ecosystem: "github-actions"
13+
directory: "/"
14+
schedule:
15+
interval: "weekly"
16+
day: "monday"
17+
open-pull-requests-limit: 5
18+
labels:
19+
- "dependencies"

.github/workflows/check.yml

Lines changed: 0 additions & 45 deletions
This file was deleted.
Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# 文档构建与部署工作流
2-
# - dev 分支:只构建,不部署(用于验证 PR 不破坏构建
3-
# - main 分支:构建 + 部署到 Cloudflare Pages(生产环境)
1+
# CI 主工作流
2+
# - check job:lychee 外链检查(仅 dev push / PR,main 跳过
3+
# - build job:Docusaurus 构建,依赖 check 通过;main 分支额外部署到 Cloudflare Pages
44

5-
name: Docs Build and Upload to Cloudflare
5+
name: CI
66

77
on:
88
workflow_dispatch:
@@ -37,23 +37,47 @@ concurrency:
3737
cancel-in-progress: true
3838

3939
jobs:
40+
check:
41+
name: Broken Links Check
42+
runs-on: ubuntu-latest
43+
if: github.ref != 'refs/heads/main'
44+
steps:
45+
- uses: actions/checkout@v4
46+
47+
- name: Check broken links
48+
uses: lycheeverse/lychee-action@v2
49+
with:
50+
args: >-
51+
--verbose
52+
--no-progress
53+
--exclude-path node_modules
54+
--exclude-path build
55+
versioned_docs/
56+
i18n/
57+
fail: true
58+
env:
59+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
60+
61+
- name: Upload lychee results
62+
uses: actions/upload-artifact@v4
63+
if: always()
64+
with:
65+
name: lychee-report
66+
path: lychee/out.md
67+
retention-days: 7
68+
4069
build:
4170
name: Build on branch ${{ github.ref_name }}
4271
runs-on: ubuntu-latest
72+
needs: check
73+
if: always() && (needs.check.result == 'success' || needs.check.result == 'skipped')
4374
steps:
4475
- uses: actions/checkout@v4
4576

4677
- uses: actions/setup-node@v4
4778
with:
4879
node-version: 20
49-
50-
- name: Cache yarn dependencies
51-
uses: actions/cache@v4
52-
with:
53-
path: node_modules
54-
key: ${{ runner.os }}-yarn-${{ hashFiles('**/package.json') }}
55-
restore-keys: |
56-
${{ runner.os }}-yarn-
80+
cache: 'yarn'
5781

5882
- name: Docusaurus build
5983
run: |
Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22
# 触发方式:手动触发 或 repository_dispatch(事件名: applist_dev_event)。
33
# repository_dispatch 由 Websoft9 主仓库 release 时自动触发。
44

5-
name: Generate Apps list for docs
5+
name: Sync App Catalog
66

77
on:
88
workflow_dispatch:
99
repository_dispatch:
1010
types: [applist_dev_event]
1111

1212
jobs:
13-
build:
13+
generate:
1414
runs-on: ubuntu-latest
1515

1616
steps:
@@ -31,32 +31,18 @@ jobs:
3131
-o media-latest.zip https://artifact.websoft9.com/release/websoft9/plugin/media/media-latest.zip
3232
unzip media-latest.zip "media/json/product_zh.json" "media/json/product_en.json" "media/json/catalog_zh.json" "media/json/catalog_en.json" -d ./extracted
3333
34-
- name: Generate Markdown for app catalog README.mdx(zh)
35-
run: |
36-
python builds/json2md.py --json_file ./extracted/media/json/product_zh.json --output_file versioned_docs/version-2.0/apps/README.mdx --ignore-list template/meta/skip_applink.json
37-
38-
- name: Generate Markdown for app catalog README.mdx(en)
39-
run: |
40-
python builds/json2md.py --json_file ./extracted/media/json/product_en.json --output_file i18n/en/docusaurus-plugin-content-docs/version-2.0/apps/README.mdx --ignore-list template/meta/skip_applink.json
41-
42-
- name: Generate Markdown for allcatalogs.md(zh)
34+
- name: Generate all Markdown files
4335
run: |
36+
# zh
37+
python builds/gen_app_index.py --json_file ./extracted/media/json/product_zh.json --output_file versioned_docs/version-2.0/apps/README.mdx --ignore-list template/meta/skip_applink.json
4438
python builds/gen_allcatalogs.py --json_file ./extracted/media/json/catalog_zh.json --output_file versioned_docs/version-2.0/apps/_include/allcatalogs.md
45-
46-
- name: Generate Markdown for allcatalogs.md(en)
47-
run: |
48-
python builds/gen_allcatalogs.py --json_file ./extracted/media/json/catalog_en.json --output_file i18n/en/docusaurus-plugin-content-docs/version-2.0/apps/_include/allcatalogs.md
49-
50-
- name: Generate Markdown for allapps.md(zh)
51-
run: |
5239
python builds/gen_allapps.py --json_file ./extracted/media/json/product_zh.json --output_file versioned_docs/version-2.0/apps/_include/allapps.md
53-
54-
- name: Generate Markdown for allapps.md(en)
55-
run: |
40+
# en
41+
python builds/gen_app_index.py --json_file ./extracted/media/json/product_en.json --output_file i18n/en/docusaurus-plugin-content-docs/version-2.0/apps/README.mdx --ignore-list template/meta/skip_applink.json
42+
python builds/gen_allcatalogs.py --json_file ./extracted/media/json/catalog_en.json --output_file i18n/en/docusaurus-plugin-content-docs/version-2.0/apps/_include/allcatalogs.md
5643
python builds/gen_allapps.py --json_file ./extracted/media/json/product_en.json --output_file i18n/en/docusaurus-plugin-content-docs/version-2.0/apps/_include/allapps.md
5744
5845
- name: Commit and push changes
59-
uses: stefanzweifel/git-auto-commit-action@v4
46+
uses: stefanzweifel/git-auto-commit-action@v5
6047
with:
6148
commit_message: Update Product Catalog Markdown
62-
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
# 触发方式:管理员手动触发(workflow_dispatch),需要仓库 Write 权限 + CONTENTFUL_ACCESS_TOKEN。
33
# 注意:该 workflow 生成的 _include/ 文件不应手工修改,属于自动管理内容。
44

5-
name: Generate Apps header and appdocs files
5+
name: Sync from Contentful
66

77
on:
88
workflow_dispatch:
99

1010
jobs:
11-
build:
11+
generate:
1212
runs-on: ubuntu-latest
1313

1414
steps:
@@ -31,12 +31,12 @@ jobs:
3131
env:
3232
CONTENTFUL_ACCESS_TOKEN: ${{ secrets.CONTENTFUL_GRAPHQLTOKEN }}
3333
run: |
34-
python builds/gen_md_from_contenful.py template/meta/zh_head.jinja2 versioned_docs/version-2.0/apps/_include
35-
python builds/gen_md_from_contenful.py template/meta/en_head.jinja2 i18n/en/docusaurus-plugin-content-docs/version-2.0/apps/_include
36-
python builds/gen_md_from_contenful.py template/meta/zh_app.jinja2 versioned_docs/version-2.0/apps --ignore-list template/meta/skip_file.json
37-
python builds/gen_md_from_contenful.py template/meta/en_app.jinja2 i18n/en/docusaurus-plugin-content-docs/version-2.0/apps --ignore-list template/meta/skip_file.json
34+
python builds/sync_contentful.py template/meta/zh_head.jinja2 versioned_docs/version-2.0/apps/_include
35+
python builds/sync_contentful.py template/meta/en_head.jinja2 i18n/en/docusaurus-plugin-content-docs/version-2.0/apps/_include
36+
python builds/sync_contentful.py template/meta/zh_app.jinja2 versioned_docs/version-2.0/apps --ignore-list template/meta/skip_file.json
37+
python builds/sync_contentful.py template/meta/en_app.jinja2 i18n/en/docusaurus-plugin-content-docs/version-2.0/apps --ignore-list template/meta/skip_file.json
3838
3939
- name: Commit and push changes
40-
uses: stefanzweifel/git-auto-commit-action@v4
40+
uses: stefanzweifel/git-auto-commit-action@v5
4141
with:
4242
commit_message: Automated generation product markdown header

.github/workflows/update.yml

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

DEVELOPMENT.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ template/
6464

6565
### 1. Jinja2 App 模板(`template/meta/`
6666

67-
`app_from_contentful.yml` 自动调用,从 Contentful CMS 生成 App 文档的 `_include/` 元数据片段和 App 文档骨架。
67+
`sync-contentful.yml` 自动调用,从 Contentful CMS 生成 App 文档的 `_include/` 元数据片段和 App 文档骨架。
6868

6969
- `zh_head.jinja2` / `en_head.jinja2` — 生成 `apps/_include/{appname}.md`
7070
- `zh_app.jinja2` / `en_app.jinja2` — 生成 `apps/{appname}.md` 骨架
@@ -83,16 +83,16 @@ template/
8383

8484
| 工作流 | 触发条件 | 用途 |
8585
|--------|----------|------|
86-
| `build_doc.yml` | push to `dev`/`main``workflow_dispatch` | 构建文档并部署到 Cloudflare Pages(main 分支)|
87-
| `check.yml` | push to `dev`,PR to `dev``workflow_dispatch` | broken-links 检查(PR 质量门)|
88-
| `app_from_contentful.yml` | `workflow_dispatch`(管理员手动触发)| 从 Contentful 生成 App 元数据文档 |
89-
| `json2md.yml` | `workflow_dispatch``repository_dispatch: applist_dev_event` | 从制品生成 App 目录列表(由主仓库 release 触发)|
90-
| `update.yml` | `workflow_dispatch` | 升级 Docusaurus 依赖并创建 PR |
86+
| `ci.yml` | push to `dev`/`main`,PR to `dev``workflow_dispatch` | CI 主流程:外链检查(check job)+ 文档构建(build job);main 分支额外部署到 Cloudflare Pages |
87+
| `sync-contentful.yml` | `workflow_dispatch`(管理员手动触发)| 从 Contentful CMS 生成 App 元数据文档(`_include/`)和文档骨架 |
88+
| `sync-catalog.yml` | `workflow_dispatch``repository_dispatch: applist_dev_event` | 从制品生成 App 目录列表(由主仓库 release 触发)|
9189

92-
**分支行为差异(`build_doc.yml`):**
90+
**分支行为差异(`ci.yml`):**
9391

94-
- `dev` 分支:执行构建验证,**不部署**到生产环境
95-
- `main` 分支:构建 + 部署到 Cloudflare Pages
92+
- `dev` 分支 / PR:先运行 `check` job(lychee 外链检查),通过后运行 `build` job(构建验证),**不部署**
93+
- `main` 分支:跳过 `check` job,直接运行 `build` job + 部署到 Cloudflare Pages
94+
95+
> ****:Docusaurus 依赖升级由 [Dependabot](https://docs.github.com/en/code-security/dependabot) 自动管理(每周一提 PR),无需手动触发。
9696
9797
---
9898

@@ -143,7 +143,7 @@ graph LR
143143
> **此步骤需要仓库 Write 权限 + `CONTENTFUL_ACCESS_TOKEN`,普通贡献者无法自行完成。**
144144
145145
1.[Contentful CMS](https://app.contentful.com/) 中录入新 App 的产品数据
146-
2. 在 GitHub Actions 页面手动触发 `app_from_contentful.yml`
146+
2. 在 GitHub Actions 页面手动触发 `sync-contentful.yml`
147147
3. 确认以下两个文件已自动生成并 commit 到 `dev` 分支:
148148
- `versioned_docs/version-2.0/apps/_include/{appname}.md`
149149
- `i18n/en/docusaurus-plugin-content-docs/version-2.0/apps/_include/{appname}.md`

0 commit comments

Comments
 (0)